能力值:
( LV2,RANK:10 )
|
-
-
5 楼
先用OD载入后
009EEE00 t> E8 D7020000 call test.009EF0DC
009EEE05 EB 22 jmp short test.009EEE29
009EEE07 80BA 3038857F 8A cmp byte ptr ds:[edx+7F853830],8>
009EEE0E 43 inc ebx
009EEE0F 9B wait
009EEE10 192A sbb dword ptr ds:[edx],ebp
009EEE12 FD std
009EEE13 FB sti
009EEE14 ^ E1 8B loopde short test.009EEDA1
009EEE16 CA 237B retf 7B23
载入后SHIFT+F9就立刻跑飞。
手工脱吧。
009EEE00 t> E8 D7020000 call test.009EF0DC
;F7步入后
009EF0DC 55 push ebp
009EF0DD 8BEC mov ebp,esp
009EF0DF 83EC 10 sub esp,10
009EF0E2 53 push ebx
009EF0E3 56 push esi
009EF0E4 57 push edi
009EF0E5 EB 0E jmp short test.009EF0F5 ;这里步过后跑到009EF0E5
009EF0F5 ^\EB F2 jmp short test.009EF0E9 ;下断F4
009EF0F7 EB 0E jmp short test.009EF107 ;这里F8步过
009EF107 ^\EB F2 jmp short test.009EF0FB ;下断F4
009EF109 EB 0E jmp short test.009EF119 ;F8步过
009EF119 ^\EB F2 jmp short test.009EF10D ;下断F4
009EF11B EB 17 jmp short test.009EF134 ;F8步过
009EF134 ^\EB E9 jmp short test.009EF11F ;下断F4
009EF136 8B45 F4 mov eax,dword ptr ss:[ebp-C] ;一直F8步过下去
009EF139 8378 18 00 cmp dword ptr ds:[eax+18],0
009EF13D 75 35 jnz short test.009EF174
009EF13F 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF142 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
009EF145 2B48 08 sub ecx,dword ptr ds:[eax+8]
009EF148 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF14B 0348 04 add ecx,dword ptr ds:[eax+4]
009EF14E 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF151 8948 04 mov dword ptr ds:[eax+4],ecx
009EF154 6A 01 push 1
009EF156 FF75 F4 push dword ptr ss:[ebp-C]
009EF159 FF75 F0 push dword ptr ss:[ebp-10]
009EF15C E8 EF010000 call test.009EF350 ;来到这里,F7步进
009EF161 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF164 C740 18 01000000 mov dword ptr ds:[eax+18],1
009EF16B FF75 F0 push dword ptr ss:[ebp-10]
009EF350 55 push ebp ;一直F8单步
009EF351 8BEC mov ebp,esp
009EF353 81EC 10010000 sub esp,110
009EF359 8B45 08 mov eax,dword ptr ss:[ebp+8]
009EF35C 8B88 80090000 mov ecx,dword ptr ds:[eax+980]
009EF362 85C9 test ecx,ecx
009EF364 75 11 jnz short test.009EF377 ;单步后跳到009EF377
009EF366 8B88 B4090000 mov ecx,dword ptr ds:[eax+9B4]
009EF36C 8B80 B8090000 mov eax,dword ptr ds:[eax+9B8]
009EF372 894D FC mov dword ptr ss:[ebp-4],ecx
009EF375 EB 0F jmp short test.009EF386
009EF377 |8D8401 8C090000 lea eax,dword ptr ds:[ecx+eax+98> ;来到这里了,继续F8步过
009EF37E |8B08 mov ecx,dword ptr ds:[eax]
009EF380 8B40 04 mov eax,dword ptr ds:[eax+4]
009EF383 894D FC mov dword ptr ss:[ebp-4],ecx
009EF386 53 push ebx
009EF387 56 push esi
009EF388 57 push edi
009EF389 8B7D 0C mov edi,dword ptr ss:[ebp+C]
009EF38C 8945 F8 mov dword ptr ss:[ebp-8],eax
009EF38F 8B77 24 mov esi,dword ptr ds:[edi+24]
009EF392 8B47 28 mov eax,dword ptr ds:[edi+28]
009EF395 03F7 add esi,edi
009EF397 03C6 add eax,esi
009EF399 3BF0 cmp esi,eax
009EF39B 8945 F0 mov dword ptr ss:[ebp-10],eax
009EF39E 73 61 jnb short test.009EF401 ;继续
009EF3A0 56 push esi
009EF3A1 FF55 FC call dword ptr ss:[ebp-4]
009EF3A4 85C0 test eax,eax
009EF3A6 8945 F4 mov dword ptr ss:[ebp-C],eax
009EF3A9 8975 0C mov dword ptr ss:[ebp+C],esi
009EF3AC 74 7C je short test.009EF42A
009EF3AE 803E 00 cmp byte ptr ds:[esi],0
009EF3B1 74 03 je short test.009EF3B6
009EF3B3 46 inc esi
009EF3B4 ^ EB F8 jmp short test.009EF3AE ;下断F4
009EF3B6 46 inc esi
009EF3B7 8B1E mov ebx,dword ptr ds:[esi]
009EF3B9 85DB test ebx,ebx
009EF3BB 74 3C je short test.009EF3F9
009EF3BD 83C6 04 add esi,4
009EF3C0 F7C3 00000080 test ebx,80000000
009EF3C6 8975 08 mov dword ptr ss:[ebp+8],esi
009EF3C9 74 0A je short test.009EF3D5 ;下跳到009EF3D5
009EF3CB 8B06 mov eax,dword ptr ds:[esi]
009EF3CD 83C6 04 add esi,4
009EF3D0 8945 08 mov dword ptr ss:[ebp+8],eax
009EF3D5 803E 00 cmp byte ptr ds:[esi],0
009EF3D8 74 03 je short test.009EF3DD
009EF3DA 46 inc esi
009EF3DB ^ EB F8 jmp short test.009EF3D5 ;下断F4
009EF3DD 46 inc esi
009EF3DE FF75 08 push dword ptr ss:[ebp+8]
009EF3E1 FF75 F4 push dword ptr ss:[ebp-C]
009EF3E4 FF55 F8 call dword ptr ss:[ebp-8]
009EF3E7 85C0 test eax,eax
009EF3E9 74 76 je short test.009EF461
009EF3EB 8B4F 04 mov ecx,dword ptr ds:[edi+4]
009EF3EE 81E3 FFFFFF7F and ebx,7FFFFFFF
009EF3F4 89040B mov dword ptr ds:[ebx+ecx],eax
009EF3F7 ^ EB BE jmp short test.009EF3B7 ;下断F4
009EF3F9 83C6 04 add esi,4
009EF3FC 3B75 F0 cmp esi,dword ptr ss:[ebp-10]
009EF3FF ^ 72 9F jb short test.009EF3A0
009EF401 8B57 2C mov edx,dword ptr ds:[edi+2C]
009EF404 8B77 30 mov esi,dword ptr ds:[edi+30]
009EF407 03D7 add edx,edi
009EF409 03F2 add esi,edx
009EF40B 3BD6 cmp edx,esi
009EF40D 0F83 B1000000 jnb test.009EF4C4
009EF413 8B4F 04 mov ecx,dword ptr ds:[edi+4]
009EF416 8BC1 mov eax,ecx
009EF418 0302 add eax,dword ptr ds:[edx]
009EF41A 807D 10 00 cmp byte ptr ss:[ebp+10],0
009EF41E 75 03 jnz short test.009EF423
009EF420 2B4F 20 sub ecx,dword ptr ds:[edi+20]
009EF423 0108 add dword ptr ds:[eax],ecx
009EF425 83C2 04 add edx,4
009EF428 ^ EB E1 jmp short test.009EF40B ;这里不能下断,否则就跑飞。请问怎么办??
009EF428 ^ EB E1 jmp short test.009EF40B ;这里跑飞后,可以用断点F2切换,然后按F9运行,看F9运行几次后跑飞,我测试后是16次跑飞,所以在临跑飞前最后一次F9的时候,F8步过,就可以跳过了。
009EF40B 3BD6 cmp edx,esi ; test.009EEF17 ;这个就是跳过来的地址了,这种跳法是看天草老师的视频后学会的。不过不知道到这里是不是已经脱掉一层了?不过OllyDump后PEID还是ASPack 2.x (without poly) -> Alexey Solodovnikov,继续研究
009EF40B 3BD6 cmp edx,esi ; test.009EEF17
009EF40D 0F83 B1000000 jnb test.009EF4C4 ;步入后跳到0009EF4C4
009EF4C4 5F pop edi ; ntdll.7C99E228
009EF4C5 5E pop esi
009EF4C6 5B pop ebx
009EF4C7 C9 leave
009EF4C8 C2 0C00 retn 0C ;这里返回
返回后到这里:009EF161 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; test.009EEE30
009EF164 C740 18 01000000 mov dword ptr ds:[eax+18],1
009EF16B FF75 F0 push dword ptr ss:[ebp-10]
009EF16E E8 FF000000 call test.009EF272 ;步进F7后跳转
009EF272 55 push ebp
009EF273 8BEC mov ebp,esp
009EF275 51 push ecx
009EF276 51 push ecx
009EF277 53 push ebx
009EF278 56 push esi
009EF279 57 push edi
009EF27A 8B7D 08 mov edi,dword ptr ss:[ebp+8]
009EF27D 8BB7 68090000 mov esi,dword ptr ds:[edi+968]
009EF283 03F7 add esi,edi
009EF285 8B46 04 mov eax,dword ptr ds:[esi+4]
009EF288 2B46 08 sub eax,dword ptr ds:[esi+8]
009EF28B 8D8438 00100000 lea eax,dword ptr ds:[eax+edi+10>
009EF292 8945 F8 mov dword ptr ss:[ebp-8],eax
009EF295 8B87 74090000 mov eax,dword ptr ds:[edi+974]
009EF29B 8945 FC mov dword ptr ss:[ebp-4],eax
009EF29E E8 27FEFFFF call test.009EF0CA ;一直F8到这里,F4下断后继续
009EF2A3 8945 08 mov dword ptr ss:[ebp+8],eax
009EF2A6 8987 70090000 mov dword ptr ds:[edi+970],eax
009EF2AC 8B45 FC mov eax,dword ptr ss:[ebp-4]
009EF2AF 6A 04 push 4
009EF2B1 99 cdq
009EF2B2 59 pop ecx
009EF2B3 33DB xor ebx,ebx
009EF2B5 F7F9 idiv ecx
009EF2B7 85C0 test eax,eax
009EF2B9 7E 40 jle short test.009EF2FB
009EF2BB 8B4D F8 mov ecx,dword ptr ss:[ebp-8]
009EF2BE 8945 FC mov dword ptr ss:[ebp-4],eax
009EF2C1 8B55 08 mov edx,dword ptr ss:[ebp+8]
009EF2C4 8B01 mov eax,dword ptr ds:[ecx]
009EF2C6 89049A mov dword ptr ds:[edx+ebx*4],eax
009EF2C9 8B87 28090000 mov eax,dword ptr ds:[edi+928]
009EF2CF 3101 xor dword ptr ds:[ecx],eax
009EF2D1 8B01 mov eax,dword ptr ds:[ecx]
009EF2D3 33849F 2C090000 xor eax,dword ptr ds:[edi+ebx*4+>
009EF2DA 8D949F 2C090000 lea edx,dword ptr ds:[edi+ebx*4+>
009EF2E1 8901 mov dword ptr ds:[ecx],eax
009EF2E3 8B45 08 mov eax,dword ptr ss:[ebp+8]
009EF2E6 8B0498 mov eax,dword ptr ds:[eax+ebx*4]
009EF2E9 43 inc ebx
009EF2EA 83FB 0F cmp ebx,0F
009EF2ED 8902 mov dword ptr ds:[edx],eax
009EF2EF 75 02 jnz short test.009EF2F3
009EF2F1 33DB xor ebx,ebx
009EF2F3 83C1 04 add ecx,4
009EF2F6 FF4D FC dec dword ptr ss:[ebp-4]
009EF2F9 ^ 75 C6 jnz short test.009EF2C1 ;F4下断
009EF2FB 0336 add esi,dword ptr ds:[esi]
009EF2FD 6A 04 push 4
009EF2FF 8B4E 3C mov ecx,dword ptr ds:[esi+3C]
009EF302 8B46 40 mov eax,dword ptr ds:[esi+40]
009EF305 03CE add ecx,esi
009EF307 5E pop esi
009EF308 99 cdq
009EF309 F7FE idiv esi
009EF30B 85C0 test eax,eax
009EF30D 7E 36 jle short test.009EF345
009EF30F 8945 FC mov dword ptr ss:[ebp-4],eax
009EF312 8B45 08 mov eax,dword ptr ss:[ebp+8]
009EF315 8DB49F 2C090000 lea esi,dword ptr ds:[edi+ebx*4+>
009EF31C 8D1498 lea edx,dword ptr ds:[eax+ebx*4]
009EF31F 8B01 mov eax,dword ptr ds:[ecx]
009EF321 8902 mov dword ptr ds:[edx],eax
009EF323 8B87 28090000 mov eax,dword ptr ds:[edi+928]
009EF329 3101 xor dword ptr ds:[ecx],eax
009EF32B 8B01 mov eax,dword ptr ds:[ecx]
009EF32D 3306 xor eax,dword ptr ds:[esi]
009EF32F 43 inc ebx
009EF330 83FB 0F cmp ebx,0F
009EF333 8901 mov dword ptr ds:[ecx],eax
009EF335 8B02 mov eax,dword ptr ds:[edx]
009EF337 8906 mov dword ptr ds:[esi],eax
009EF339 75 02 jnz short test.009EF33D
009EF33B 33DB xor ebx,ebx
009EF33D 83C1 04 add ecx,4
009EF340 FF4D FC dec dword ptr ss:[ebp-4]
009EF343 ^ 75 CD jnz short test.009EF312 ;这里下断F4
009EF345 8B45 08 mov eax,dword ptr ss:[ebp+8]
009EF348 5F pop edi
009EF349 5E pop esi
009EF34A 8958 3C mov dword ptr ds:[eax+3C],ebx
009EF34D 5B pop ebx
009EF34E C9 leave
009EF34F C3 retn ;这里返回
返回后到了这里:
009EF173 59 pop ecx ; 012E0000
009EF174 EB 0E jmp short test.009EF184 ;这里F8步入到009E184
009EF184 ^\EB F2 jmp short test.009EF178 ;下断F4跳过
009EF186 EB 10 jmp short test.009EF198 ;F8步过
009EF198 ^\EB F0 jmp short test.009EF18A ;F4下断
009EF19A 8B45 F0 mov eax,dword ptr ss:[ebp-10]
009EF19D 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
009EF1A0 0388 68090000 add ecx,dword ptr ds:[eax+968]
009EF1A6 894D F4 mov dword ptr ss:[ebp-C],ecx
009EF1A9 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF1AC 8378 18 00 cmp dword ptr ds:[eax+18],0
009EF1B0 75 14 jnz short test.009EF1C6
009EF1B2 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF1B5 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
009EF1B8 2B48 08 sub ecx,dword ptr ds:[eax+8]
009EF1BB 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF1BE 0348 04 add ecx,dword ptr ds:[eax+4]
009EF1C1 894D F8 mov dword ptr ss:[ebp-8],ecx
009EF1C4 EB 09 jmp short test.009EF1CF ;这里继续F8
009EF1CF 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; test.009EFC6D
009EF1D2 8B4D F8 mov ecx,dword ptr ss:[ebp-8]
009EF1D5 0348 0C add ecx,dword ptr ds:[eax+C]
009EF1D8 894D FC mov dword ptr ss:[ebp-4],ecx
009EF1DB 8B45 F4 mov eax,dword ptr ss:[ebp-C]
009EF1DE 8378 18 E7 cmp dword ptr ds:[eax+18],-19
009EF1E2 75 09 jnz short test.009EF1ED ;这里F8步入到009EF1ED
009EF1E4 FF75 FC push dword ptr ss:[ebp-4]
009EF1E7 E8 A8FEFFFF call test.009EF094
009EF1ED 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; test.009EFC6D
009EF1F0 8378 18 FF cmp dword ptr ds:[eax+18],-1
009EF1F4 74 2C je short test.009EF222
009EF1F6 EB 11 jmp short test.009EF209 ;这里F8步入到009EF209
009EF209 ^\EB EF jmp short test.009EF1FA ;这里F4下断
009EF20B EB 0E jmp short test.009EF21B ;继续F8步入到009EF21B
009EF21B ^\EB F2 jmp short test.009EF20F ;这里F4下断
009EF21D 8B45 FC mov eax,dword ptr ss:[ebp-4]
009EF220 EB 4B jmp short test.009EF26D ;这里F8步入
009EF26D 5F pop edi ; ntdll.7C99E228 ;步入后到这里
009EF26E 5E pop esi
009EF26F 5B pop ebx
009EF270 C9 leave
009EF271 C3 retn ;返回
返回后:
009EF094 /EB 11 jmp short test.009EF0A7 ;这里F8步入009EF096 |FF25 FF353CEF jmp dword ptr ds:[EF3C35FF]
009EF0A7 ^\EB EF jmp short test.009EF098 ;这里F4下断009EF0A9 EB 0C jmp short test.009EF0B7 ;F8步入后跳转
009EF0B7 ^\EB F4 jmp short test.009EF0AD ;F4下断
009EF0B9 EB 0C jmp short test.009EF0C7 ;F8步入后跳转
跳转后这里又有问题出现,基本和刚才我在4楼讲的情况一样,
009EF0C7 ^\EB F4 jmp short test.009EF0BD ;这里不能跑,一跑马上飞,这次比较特殊,F9一次就跑飞,所以不用F9了,直接F8进入009EF0BD
F8步入后:
009EF0BD C3 retn ;这里F8步入后,就是一个很大跳转了!
009EF0BE EB 01 jmp short test.009EF0C1
009EF0C0 FFEB jmp far ebx ; 非法使用寄存器
看到吗,直接跳到 009E628C 这里来了。应该到了OEP了吧。
009E628C 55 push ebp
009E628D 8BEC mov ebp,esp
009E628F 83EC 2C sub esp,2C
009E6292 53 push ebx
009E6293 56 push esi
009E6294 57 push edi
其实我现在最困惑的就是这里,这么大的跳转,想必是可以直接脱了吧。用OLLYDUMP脱后,用PEID来查,显示UPX 0.80 - 1.24 DLL -> Markus & Laszlo
看来是多层壳啦,下面要开始UPX 0.80 - 1.24 DLL -> Markus & Laszlo的脱壳步聚了。如果这里有哪些没讲清楚或不对的,希望大家指正,一起进步!
这里发现有个问题,就是脱壳后保存的文件名是test2.exe(第一次是test1.exe),这两个文件运行时都提示不是WIN32的应用程序,请问这个要怎么修复呢
但如果我不用OLLYDUMP来脱壳,用LORDPE ——修正映像大小,完整转存dumped.exe。
然后IMPORTREC,输入OEP为628C,自动查找IAT时,说OEP入口错误。
但是不输入OEP地址,按默认的地址,然后自动查找IAT时,即提示有找到,然后获取输入表,输入表函数有效均为是,直接修复转存文件。
试运行dumped_.exe程序,这时没提示说什么不是WIN32的应用程序了,用PIED查,是现在的壳是UPX 0.80 - 1.24 DLL -> Markus & Laszlo了。
虽然到这里,ASPACK看似已经脱了,但在测试的时候还是发现有问题,具体问题请大家下载后,在脱的时候,如果最后没有出现最上面提示的信息,就是还有问题。
|