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