004DEF68 8D43 14 lea eax,dword ptr ds:[ebx+0x14]
004DEF6B 50 push eax
004DEF6C 8BC3 mov eax,ebx
004DEF6E 5A pop edx ; 0012F8A8
004DEF6F 8BCA mov ecx,edx
004DEF71 99 cdq
004DEF72 F7F9 idiv ecx
004DEF74 8BF2 mov esi,edx
004DEF76 8D43 1E lea eax,dword ptr ds:[ebx+0x1E]
004DEF79 50 push eax
004DEF7A 8BC3 mov eax,ebx
004DEF7C 5A pop edx ; 0012F8A8
004DEF7D 8BCA mov ecx,edx
004DEF7F 99 cdq
004DEF80 F7F9 idiv ecx
004DEF82 03F2 add esi,edx
004DEF84 46 inc esi 上面的计算是 计算每次循环所取机器码位置的2倍再加1的值放到esi中
004DEF85 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
004DEF88 0FB64418 FF movzx eax,byte ptr ds:[eax+ebx-0x1] 每循环一次 将机器码的其中一位给 eax
004DEF8D 03C6 add eax,esi esi为上面所取机器码所在位置的2倍再加1
004DEF8F 40 inc eax eax自增1
004DEF90 83C0 CF add eax,-0x31 eax-31
004DEF93 83E8 09 sub eax,0x9 eax-9
004DEF96 72 08 jb short USBKille.004DEFA0 进行判断 小于就跳
004DEF98 83C0 F9 add eax,-0x7 eax-7 符合条件的话 就是 此时eax-7>0
004DEF9B 83E8 1A sub eax,0x1A eax-1A 符合条件的话就是 此时 eax-1A<0
004DEF9E 73 1E jnb short USBKille.004DEFBE 进行判断 不小于就跳
004DEFA0 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
004DEFA3 8B55 FC mov edx,dword ptr ss:[ebp-0x4]
004DEFA6 0FB6541A FF movzx edx,byte ptr ds:[edx+ebx-0x1] 开始计算真正的注册码 取机器码中的一位(每次循环按顺序取一位)
004DEFAB 03D6 add edx,esi edx为这一次循环中所取的机器码其中的一位 esi为上面所取机器码所在位置的2倍再加1
004DEFAD 42 inc edx edx自增1 将edx此时的值转换成ascii码 就是对应的机器码位置计算出来的注册码 我们将每一次循环的值记下来就是真正的注册码了
004DEFAE E8 E961F2FF call USBKille.0040519C
004DEFB3 8B55 F0 mov edx,dword ptr ss:[ebp-0x10]
004DEFB6 8D45 F4 lea eax,dword ptr ss:[ebp-0xC]
004DEFB9 E8 BE62F2FF call USBKille.0040527C
004DEFBE 43 inc ebx
004DEFBF 4F dec edi
004DEFC0 ^ 75 A6 jnz short USBKille.004DEF68