0049070E . 83C4 0C add esp,0xC
00490711 . 8D8C24 900000>lea ecx,dword ptr ss:[esp+0x90]
00490718 . 33F6 xor esi,esi
0049071A . 53 push ebx ; /hTemplateFile
0049071B . 53 push ebx ; |Attributes
0049071C . 6A 03 push 0x3 ; |Mode = OPEN_EXISTING
0049071E . 53 push ebx ; |pSecurity
0049071F . 6A 03 push 0x3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00490721 . 68 000000C0 push 0xC0000000 ; |Access = GENERIC_READ|GENERIC_WRITE
00490726 . 51 push ecx ; |FileName
00490727 . FF15 14D24C00 call dword ptr ds:[; \CreateFileW
0049072D . 83F8 FF cmp eax,-0x1
00490730 . 894424 08 mov dword ptr ss:[esp+0x8],eax
00490734 . 75 0B jnz XPureEngl.00490741
00490736 . 5E pop esi
00490737 . 33C0 xor eax,eax
00490739 . 5B pop ebx
0049073A . 81C4 DC060000 add esp,0x6DC
00490740 . C3 retn
00490741 > 55 push ebp
00490742 . 57 push edi
00490743 . 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
00490747 . 8B2D 24D14C00 mov ebp,dword ptr ds:[; KERNEL32.DeviceIoControl
0049074D . 53 push ebx ; /pOverlapped
0049074E . 52 push edx ; |pBytesReturned
0049074F . 8D8C24 880000>lea ecx,dword ptr ss:[esp+0x88] ; |
00490756 . 6A 18 push 0x18 ; |OutBufferSize = 18 (24.)
00490758 . 51 push ecx ; |OutBuffer
00490759 . 53 push ebx ; |InBufferSize
0049075A . 53 push ebx ; |InBuffer
0049075B . 68 80400700 push 0x74080 ; |IoControlCode = SMART_GET_VERSION
00490760 . 50 push eax ; |hDevice
00490761 . FFD5 call ebp ; \DeviceIoControl
00490763 . 85C0 test eax,eax
00490765 . 0F84 60020000 je PureEngl.004909CB
0049076B . 8A9424 830000>mov dl,byte ptr ss:[esp+0x83]
00490772 . 3AD3 cmp dl,bl
00490774 . 0F86 51020000 jbe PureEngl.004909CB
0049077A . B9 09000000 mov ecx,0x9
0049077F . 33C0 xor eax,eax
00490781 . 8D7C24 30 lea edi,dword ptr ss:[esp+0x30]
00490785 . 80E2 10 and dl,0x10
00490788 . F3:AB rep stos dword ptr es:[edi]
0049078A . B9 84000000 mov ecx,0x84
0049078F . 8DBC24 D80000>lea edi,dword ptr ss:[esp+0xD8]
00490796 . F3:AB rep stos dword ptr es:[edi]
00490798 . F6DA neg dl
0049079A . 1AD2 sbb dl,dl
0049079C . 53 push ebx ; /pOverlapped
0049079D . 80E2 B5 and dl,0xB5 ; |
004907A0 . 8D4C24 34 lea ecx,dword ptr ss:[esp+0x34] ; |
004907A4 . 66:AB stos word ptr es:[edi] ; |
004907A6 . 80C2 EC add dl,0xEC ; |
004907A9 . 885C24 38 mov byte ptr ss:[esp+0x38],bl ; |
004907AD . 885424 3E mov byte ptr ss:[esp+0x3E],dl ; |
004907B1 . 8D5424 18 lea edx,dword ptr ss:[esp+0x18] ; |
004907B5 . AA stos byte ptr es:[edi] ; |
004907B6 . 52 push edx ; |pBytesReturned
004907B7 . 8B5424 18 mov edx,dword ptr ss:[esp+0x18] ; |
004907BB . 8D8424 E00000>lea eax,dword ptr ss:[esp+0xE0] ; |
004907C2 . 68 13020000 push 0x213 ; |OutBufferSize = 213 (531.)
004907C7 . 50 push eax ; |OutBuffer
004907C8 . 6A 23 push 0x23 ; |InBufferSize = 23 (35.)
004907CA . 51 push ecx ; |InBuffer
004907CB . 68 88C00700 push 0x7C088 ; |IoControlCode = SMART_RCV_DRIVE_DATA
004907D0 . 52 push edx ; |hDevice
004907D1 . C64424 55 01 mov byte ptr ss:[esp+0x55],0x1 ; |
004907D6 . C64424 56 01 mov byte ptr ss:[esp+0x56],0x1 ; |
004907DB . 885C24 57 mov byte ptr ss:[esp+0x57],bl ; |
004907DF . 885C24 58 mov byte ptr ss:[esp+0x58],bl ; |
004907E3 . C64424 59 A0 mov byte ptr ss:[esp+0x59],0xA0 ; |
004907E8 . 885C24 5C mov byte ptr ss:[esp+0x5C],bl ; |
004907EC . C74424 50 000>mov dword ptr ss:[esp+0x50],0x200 ; |
004907F4 . FFD5 call ebp ; \DeviceIoControl
004907F6 . 85C0 test eax,eax
004907F8 . 0F84 CD010000 je PureEngl.004909CB
004907FE . 8D8C24 EC0200>lea ecx,dword ptr ss:[esp+0x2EC]
00490805 . 8D8424 E80000>lea eax,dword ptr ss:[esp+0xE8]
0049080C . BA 00010000 mov edx,0x100
00490811 > 33F6 xor esi,esi
00490813 . 83C1 04 add ecx,0x4
00490816 . 66:8B30 mov si,word ptr ds:[eax]
00490819 . 83C0 02 add eax,0x2
0049081C . 8971 FC mov dword ptr ds:[ecx-0x4],esi
0049081F . 4A dec edx
00490820 .^ 75 EF jnz XPureEngl.00490811
00490822 . 33C0 xor eax,eax
00490824 . 8D8C24 140300>lea ecx,dword ptr ss:[esp+0x314]
0049082B . 894424 18 mov dword ptr ss:[esp+0x18],eax
0049082F . BE 0A000000 mov esi,0xA
00490834 . 894424 1C mov dword ptr ss:[esp+0x1C],eax
00490838 . 894424 20 mov dword ptr ss:[esp+0x20],eax
0049083C . 894424 24 mov dword ptr ss:[esp+0x24],eax
00490840 . 894424 28 mov dword ptr ss:[esp+0x28],eax
00490844 . 884424 2C mov byte ptr ss:[esp+0x2C],al
00490848 > 8B11 mov edx,dword ptr ds:[ecx]
0049084A . 83C1 04 add ecx,0x4
0049084D . C1EA 08 shr edx,0x8
00490850 . 8890 40215000 mov byte ptr ds:[eax+0x502140],dl
00490856 . 8A51 FC mov dl,byte ptr ds:[ecx-0x4]
00490859 . 40 inc eax
0049085A . 8890 40215000 mov byte ptr ds:[eax+0x502140],dl
00490860 . 40 inc eax
00490861 . 4E dec esi
00490862 .^ 75 E4 jnz XPureEngl.00490848
00490864 . 8D48 FF lea ecx,dword ptr ds:[eax-0x1]
抱歉
代码好多的
我认为VC取机器码都是 差不多
这个程序没有读取注册表上的那几个