UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo的壳.
ollydbg载入。
012E5120 > 60 pushad
012E5121 BE 00901F01 mov esi, 011F9000;//F8 运行到这里看ESP=0012FFA4
012E5126 8DBE 008020FF lea edi, dword ptr [esi+FF208000]
012E512C 57 push edi
012E512D 83CD FF or ebp, FFFFFFFF
012E5130 EB 10 jmp short 012E5142
F8一次,看ESP,下硬件断点hr 0012FFA4,F9运行,断在这里
012E52C7 8D4424 80 lea eax, dword ptr [esp-80] ;//F9运行,断在这里
012E52CB 6A 00 push 0
012E52CD 39C4 cmp esp, eax
012E52CF ^ 75 FA jnz short 012E52CB
012E52D1 83EC 80 sub esp, -80
012E52D4 - E9 D7E23BFF jmp 006A35B0 ;//跳到eop。
012E52D9 0000 add byte ptr [eax], al
012E52DB 0000 add byte ptr [eax], al
第一个jmp就跳到EOP了。
006A35B0 55 push ebp ;//入口点
006A35B1 8BEC mov ebp, esp
006A35B3 6A FF push -1
006A35B5 68 D0BC6C00 push 006CBCD0
006A35BA 68 D6376A00 push 006A37D6 ; jmp 到 msvcrt._except_handler3
006A35BF 64:A1 00000000 mov eax, dword ptr fs:[0]
006A35C5 50 push eax
006A35C6 64:8925 0000000>mov dword ptr fs:[0], esp
006A35CD 83EC 68 sub esp, 68
006A35D0 53 push ebx
DUMP出来,运行立刻自动关闭,不知道问题所在。
用ollydbg载入dump出来的程序。发现运行到这里出错。
006A3675 E8 86010000 call <jmp.&msvcrt._initterm>;//出错。
006A367A 83C4 24 add esp, 24
006A367D A1 64B66B00 mov eax, dword ptr [<&msvcrt._acmdln>
006A3682 8B30 mov esi, dword ptr [eax]
006A3684 8975 8C mov dword ptr [ebp-74], esi
006A3687 803E 22 cmp byte ptr [esi], 22
我是新手,不知道如何解决,就研究出另一种办法。
重新载入加壳程序,停到入口点.
006A35B0 55 push ebp ;//入口点
006A35B1 8BEC mov ebp, esp
006A35B3 6A FF push -1
006A35B5 68 D0BC6C00 push 006CBCD0
006A35BA 68 D6376A00 push 006A37D6 ; jmp 到 msvcrt._except_handler3
dump出来11.exe
ollydbg别关,运行importREC,选择被调试进程,写正确入口点2A35B0,输入表完全正确。
然后选择修理抓取文件11.exe,自动保存为11_.exe。
运行ok。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课