sub eax,1
00592e94 ^ 0f85 5bffffff jnz 00592df5 ; 到了这里还循环解压代码
00592e9a eb 01 jmp short 00592e9d
00592e9c ^ 7c 85 jl short 00592e23
00592e9e cd 66 int 66
00592ea0 33cd xor ecx,ebp
00592ea2 b8 64000000 mov eax,64
00592ea7 33d2 xor edx,edx
00592ea9 33db xor ebx,ebx
00592eab f7f3 div ebx
00592ead 90 nop
00592eae 64:8f05 0000000>pop dword ptr fs:[0]
00592eb5 83c4 04 add esp,4
00592eb8 e8 4392ffff call <sub_getebp > ; 准备跳去执行程序的代码了
00592ebd 6a 00 push 0
00592ebf e8 0a000000 call <sub_goto_end>
00592ec4 41 inc ecx
......
00592ec5 43 inc ebx
00592ec6 50 push eax
00592ec7 72 6f jb short 00592f38
00592ec9 74 65 je short 00592f30
00592ecb 90 nop
00592ecc 90 nop
00592ecd 90 nop
00592ece > e8 25000000 call <goto end>
00592ed3 42 inc edx
00592ed4 79 20 jns short 00592ef6
00592ed6 54 push esp
00592ed7 72 69 jb short 00592f42
00592ed9 61 popad
00592eda 6c ins byte ptr es:[edi],dx ; i/o command
00592edb 2041 43 and byte ptr ds:[ecx+43],al
00592ede 50 push eax
00592edf 72 6f jb short 00592f50
00592ee1 74 65 je short 00592f48
00592ee3 637400 73 arpl word ptr ds:[eax+eax+73],si
00592ee7 74 65 je short 00592f4e
00592ee9 72 65 jb short 00592f50
00592eeb 64:2041 43 and byte ptr fs:[ecx+43],al
00592eef 50 push eax
00592ef0 72 6f jb short 00592f61
00592ef2 74 65 je short 00592f59
00592ef4 637421 00 arpl word ptr ds:[ecx],si
00592ef8 > 6a 00 push 0 ; goto end改为jmp [addr] 的方式执行到fake oep地址
00592efa 83c4 10 add esp,10 ; 到了这里,只剩跳去fake oep都要加密一下
00592efd 90 nop
......
005930a9 e8 5290ffff call <sub_getebp >
005930ae 8b85 4b814100 mov eax,dword ptr ss:[ebp+41814b]
005930b4 0385 46f84000 add eax,dword ptr ss:[ebp+40f846]
005930ba 8985 4b814100 mov dword ptr ss:[ebp+41814b],eax ; 要去执行的地址
005930c0 e8 3b90ffff call <sub_getebp >
005930c5 c685 08814100 e>mov byte ptr ss:[ebp+418108],0e8
005930cc e8 2f90ffff call <sub_getebp >
005930d1 c785 09814100 f>mov dword ptr ss:[ebp+418109],25ff ; 改成jmp [address]的方式
005930db 8d85 4b814100 lea