注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

一次失败的脱壳尝试:PESpin 0.3x - 1.xx -> cyberbob  

2012-05-09 22:53:42|  分类: 安全/ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  1. OD加载,入口:

     

    0059F0D4 > /EB 01 jmp short 0059F0D7

     

     

0059F0D7 60 pushad

0059F0D8 E8 00000000 call 0059F0DD

0059F0DD 8B1C24 mov ebx, dword ptr [esp]

0059F0E0 83C3 12 add ebx, 12

0059F0E3 812B E8B10600 sub dword ptr [ebx], 6B1E8

0059F0E9 FE4B FD dec byte ptr [ebx-3]

0059F0EC 812C24 8F354000 sub dword ptr [esp], 0040358F

0059F0F3 0BE4 or esp, esp

0059F0F5 ^ 74 9E je short 0059F095

0059F0F7 75 01 jnz short 0059F0FA

 

 

0059F0FA 8173 04 D77AF72F xor dword ptr [ebx+4], 2FF77AD7

0059F101 8173 19 770043B7 xor dword ptr [ebx+19], B7430077

0059F108 81C3 28000000 add ebx, 28

0059F10E F9 stc

0059F10F FFE3 jmp ebx ; 783d.0059F117

 

 

0059F117 72 01 jb short 0059F11A

 

 

0059F11A 5D pop ebp

0059F11B 33C9 xor ecx, ecx

0059F11D 41 inc ecx

0059F11E E2 17 loopd short 0059F137

0059F120 EB 07 jmp short 0059F129

 

 

0059F129 E8 01000000 call 0059F12F

 

 

0059F12F 5A pop edx

0059F130 83EA 0B sub edx, 0B

0059F133 ^ FFE2 jmp edx ; 783d.0059F123

 

 

0059F123 EB 01 jmp short 0059F126

 

 

0059F126 /EB 0D jmp short 0059F135

 

 

0059F135 /EB 04 jmp short 0059F13B

 

 

0059F13B ^\EB FB jmp short 0059F138

 

 

0059F138 /EB 04 jmp short 0059F13E

 

 

0059F13E E8 02000000 call 0059F145

 

 

0059F145 5A pop edx

0059F146 81EA 45F11900 sub edx, 19F145

0059F14C 83EA FE sub edx, -2

0059F14F 8995 51594000 mov dword ptr [ebp+405951], edx

0059F155 2BC0 sub eax, eax

0059F157 2BC9 sub ecx, ecx

0059F159 83F1 06 xor ecx, 6

0059F15C 0985 73594000 or dword ptr [ebp+405973], eax

0059F162 9C pushfd

0059F163 D32C24 shr dword ptr [esp], cl

0059F166 80C1 FB add cl, 0FB

0059F169 210C24 and dword ptr [esp], ecx

0059F16C 50 push eax

0059F16D 52 push edx

0059F16E B8 36C709FF mov eax, FF09C736

0059F173 05 FE37F600 add eax, 0F637FE

0059F178 F76424 08 mul dword ptr [esp+8]

0059F17C 8D8428 11374000 lea eax, dword ptr [eax+ebp+403711]

0059F183 894424 08 mov dword ptr [esp+8], eax

0059F187 5A pop edx

0059F188 58 pop eax

0059F189 8D6424 04 lea esp, dword ptr [esp+4]

0059F18D FF6424 FC jmp dword ptr [esp-4] ; 783d.0059F193

 

 

0059F193 BB 6974580B mov ebx, 0B587469

0059F198 C1C3 10 rol ebx, 10

0059F19B 81F3 77380E00 xor ebx, 0E3877

0059F1A1 81C3 0DCD988B add ebx, 8B98CD0D

0059F1A7 8B0413 mov eax, dword ptr [ebx+edx]

0059F1AA 03C2 add eax, edx

0059F1AC 8985 5B594000 mov dword ptr [ebp+40595B], eax

0059F1B2 EB 02 jmp short 0059F1B6

 

 

0059F1B6 F9 stc

0059F1B7 72 08 jb short 0059F1C1

 

 

0059F1C1 E8 04000000 call 0059F1CA

 

 

0059F1CA EB 06 jmp short 0059F1D2

 

 

0059F1D2 F5 cmc

0059F1D3 72 0E jb short 0059F1E3

0059F1D5 F5 cmc

0059F1D6 ^ 72 F8 jb short 0059F1D0

 

 

0059F1D0 /EB 07 jmp short 0059F1D9

 

 

0059F1D9 ^\EB EC jmp short 0059F1C7

 

 

0059F1C7 F5 cmc

0059F1C8 73 11 jnb short 0059F1DB

 

 

0059F1DB 830424 07 add dword ptr [esp], 7

0059F1DF F5 cmc

0059F1E0 FF3424 push dword ptr [esp]

0059F1E3 C3 retn

 

 

0059F1CD 72 ED jb short 0059F1BC

 

 

0059F1BC 830424 17 add dword ptr [esp], 17

0059F1C0 C3 retn

 

 

0059F1E4 C1E1 07 shl ecx, 7

0059F1E7 8B0C01 mov ecx, dword ptr [ecx+eax]

0059F1EA 03CA add ecx, edx

0059F1EC E8 03000000 call 0059F1F4

 

 

0059F1F4 EB FB jmp short 0059F1F1

 

 

0059F1F1 EB 04 jmp short 0059F1F7

 

 

0059F1F7 830424 0C add dword ptr [esp], 0C

0059F1FB C3 retn

 

 

0059F1FD 8B59 10 mov ebx, dword ptr [ecx+10]

0059F200 03DA add ebx, edx

0059F202 8B1B mov ebx, dword ptr [ebx]

0059F204 899D 73594000 mov dword ptr [ebp+405973], ebx

0059F20A 53 push ebx

0059F20B 8F85 5B574000 pop dword ptr [ebp+40575B]

0059F211 EB 07 jmp short 0059F21A

 

 

0059F21A EB F8 jmp short 0059F214

 

 

0059F214 EB 01 jmp short 0059F217

 

 

0059F217 EB 04 jmp short 0059F21D

 

 

0059F21D 8B59 38 mov ebx, dword ptr [ecx+38]

0059F220 03DA add ebx, edx

0059F222 8B3B mov edi, dword ptr [ebx]

0059F224 89BD 185A4000 mov dword ptr [ebp+405A18], edi ; kernel32.LoadLibraryA

0059F22A 8D5B 04 lea ebx, dword ptr [ebx+4]

0059F22D 8B1B mov ebx, dword ptr [ebx] ; kernel32.GetProcAddress

0059F22F 899D 1D5A4000 mov dword ptr [ebp+405A1D], ebx ; kernel32.GetProcAddress

0059F235 E8 00000000 call 0059F23A

 

 

0059F23A 58 pop eax ; 783d.0059F23A

0059F23B 0168 05 add dword ptr [eax+5], ebp

0059F23E 68 722929E2 push E2292972

0059F243 B8 77CE2FB1 mov eax, B12FCE77

0059F248 35 73CE2FB1 xor eax, B12FCE73

0059F24D 03E0 add esp, eax

0059F24F F7D8 neg eax

0059F251 812C04 1337CFE1 sub dword ptr [esp+eax], E1CF3713

0059F258 /FF6424 FC jmp dword ptr [esp-4] ; 783d.0059F25F

 

 

0059F25F 8DBD D2CD4000 lea edi, dword ptr [ebp+40CDD2]

0059F265 81EF 34980000 sub edi, 9834

0059F26B FE07 inc byte ptr [edi]

0059F26D /75 08 jnz short 0059F277

 

 

0059F277 8DBD EA694E00 lea edi, dword ptr [ebp+4E69EA]

0059F27D 81EF 45340E00 sub edi, 0E3445

0059F283 8137 D77AF72F xor dword ptr [edi], 2FF77AD7

0059F289 B8 2176FD08 mov eax, 8FD7621

0059F28E 8DBD DBAB3D09 lea edi, dword ptr [ebp+93DABDB]

0059F294 2BF8 sub edi, eax

0059F296 8137 770043B7 xor dword ptr [edi], B7430077

0059F29C /EB 07 jmp short 0059F2A5

 

 

0059F2A5 ^\EB F8 jmp short 0059F29F

 

 

0059F29F /EB 01 jmp short 0059F2A2

 

 

0059F2A2 /EB 04 jmp short 0059F2A8

 

 

0059F2A8 8DBD C2AB3D09 lea edi, dword ptr [ebp+93DABC2]

0059F2AE 2BF8 sub edi, eax

0059F2B0 8107 E8B10600 add dword ptr [edi], 6B1E8

0059F2B6 8DBD 90CF3D09 lea edi, dword ptr [ebp+93DCF90]

0059F2BC 2BF8 sub edi, eax

0059F2BE 83CB FF or ebx, FFFFFFFF

0059F2C1 391F cmp dword ptr [edi], ebx

0059F2C3 /75 11 jnz short 0059F2D6

0059F2C5 FF07 inc dword ptr [edi]

0059F2C7 74 5A je short 0059F323

 

 

0059F323 BB 0C000000 mov ebx, 0C

0059F328 B9 A8130000 mov ecx, 13A8

0059F32D 8DBD 4E5A4000 lea edi, dword ptr [ebp+405A4E]

0059F333 4F dec edi

0059F334 EB 07 jmp short 0059F33D

 

 

0059F33D ^\EB F8 jmp short 0059F337

 

 

0059F337 /EB 01 jmp short 0059F33A

 

 

0059F33A /EB 04 jmp short 0059F340

 

/////////////////////////////////////////////////循环开始

设置条件断点,跳出循环 dword ptr [esp-4]!=0059f340:

地址=0059F37C

模块=783d

激活=当 dword ptr [esp-4]!=0059f340

反汇编=jmp dword ptr [esp-4]

/////////////////////////////////////////////////

0059F340 301C39 xor byte ptr [ecx+edi], bl

0059F343 FECB dec bl

0059F345 49 dec ecx

0059F346 9C pushfd

0059F347 EB 04 jmp short 0059F34D

 

 

0059F34D ^\EB FB jmp short 0059F34A

 

 

0059F34A /EB 04 jmp short 0059F350

 

 

0059F350 C12C24 06 shr dword ptr [esp], 6

0059F354 F71424 not dword ptr [esp]

0059F357 832424 01 and dword ptr [esp], 1

0059F35B 50 push eax

0059F35C 52 push edx

0059F35D B8 79B2DC12 mov eax, 12DCB279

0059F362 05 444D23ED add eax, ED234D44

0059F367 F76424 08 mul dword ptr [esp+8]

0059F36B 8D8428 35384000 lea eax, dword ptr [eax+ebp+403835]

0059F372 894424 08 mov dword ptr [esp+8], eax

0059F376 5A pop edx

0059F377 58 pop eax

0059F378 8D6424 04 lea esp, dword ptr [esp+4]

0059F37C ^\FF6424 FC jmp dword ptr [esp-4] ; 783d.0059F340 (条件断点退出时,值为:783d.0059F383

/////////////////////////////////////////////////循环结束

 

 

0059F383 /EB 01 jmp short 0059F386

 

 

0059F386 E8 01000000 call 0059F38C

 

 

0059F38C 58 pop eax ; 783d.0059F38B

0059F38D FE48 1F dec byte ptr [eax+1F]

0059F390 0F84 94020000 je 0059F62A

0059F396 /75 01 jnz short 0059F399

 

 

0059F399 8170 03 E89868E>xor dword ptr [eax+3], EA6898E8

0059F3A0 83C0 21 add eax, 21

0059F3A3 8040 FB EB add byte ptr [eax-5], 0EB

0059F3A7 8D40 02 lea eax, dword ptr [eax+2]

0059F3AA FFE0 jmp eax ; 783d.0059F3AE

 

 

0059F3AE 68 BA000000 push 0BA

0059F3B3 59 pop ecx

0059F3B4 8DBD 3B6D4000 lea edi, dword ptr [ebp+406D3B]

0059F3BA E8 03000000 call 0059F3C2

 

 

0059F3C2 ^\EB FB jmp short 0059F3BF

 

 

0059F3BF /EB 04 jmp short 0059F3C5

 

 

0059F3C5 830424 0C add dword ptr [esp], 0C

0059F3C9 C3 retn

 

 

0059F3CB C00C39 02 ror byte ptr [ecx+edi], 2

0059F3CF 49 dec ecx

0059F3D0 9C pushfd

0059F3D1 E8 03000000 call 0059F3D9

 

 

0059F3D9 ^\EB FB jmp short 0059F3D6

 

 

0059F3D6 /EB 04 jmp short 0059F3DC

0059F3DC 830424 0C add dword ptr [esp], 0C

0059F3E0 C3 retn

 

 

0059F3E2 C12C24 06 shr dword ptr [esp], 6

0059F3E6 F71424 not dword ptr [esp]

0059F3E9 832424 01 and dword ptr [esp], 1

0059F3ED 50 push eax

0059F3EE 52 push edx

0059F3EF B8 61B2DC12 mov eax, 12DCB261

0059F3F4 05 444D23ED add eax, ED234D44

0059F3F9 F76424 08 mul dword ptr [esp+8]

0059F3FD 8D8428 C7384000 lea eax, dword ptr [eax+ebp+4038C7]

0059F404 894424 08 mov dword ptr [esp+8], eax

0059F408 5A pop edx

0059F409 58 pop eax

0059F40A 8D6424 04 lea esp, dword ptr [esp+4]

0059F40E ^\FF6424 FC jmp dword ptr [esp-4] ; 783d.0059F3BA

 

 

/////////////////////////////////////////////////循环开始

设置条件断点,跳出循环 dword ptr [esp-4]!= 0059F3BA:

地址=0059F40E

模块=783d

激活=当 dword ptr [esp-4]!= 0059F3BA

反汇编=jmp dword ptr [esp-4]

/////////////////////////////////////////////////

 

0059F3BA E8 03000000 call 0059F3C2

 

 

0059F3C2 ^\EB FB jmp short 0059F3BF

 

 

0059F3BF /EB 04 jmp short 0059F3C5

 

 

0059F3C5 830424 0C add dword ptr [esp], 0C

0059F3C9 C3 retn

0059F3CA 8DC0 lea eax, eax ; 非法使用寄存器

0059F3CC 0C 39 or al, 39

0059F3CE 0249 9C add cl, byte ptr [ecx-64]

0059F3D1 E8 03000000 call 0059F3D9

0059F3D6 EB 04 jmp short 0059F3DC

0059F3D8 8DEB lea ebp, ebx ; 非法使用寄存器

0059F3DA FB sti

0059F3DB FF83 04240CC3 inc dword ptr [ebx+C30C2404]

0059F3E1 A3 C12C2406 mov dword ptr [6242CC1], eax

0059F3E6 F71424 not dword ptr [esp]

0059F3E9 832424 01 and dword ptr [esp], 1

0059F3ED 50 push eax

0059F3EE 52 push edx

0059F3EF B8 61B2DC12 mov eax, 12DCB261

0059F3F4 05 444D23ED add eax, ED234D44

0059F3F9 F76424 08 mul dword ptr [esp+8]

0059F3FD 8D8428 C7384000 lea eax, dword ptr [eax+ebp+4038C7]

0059F404 894424 08 mov dword ptr [esp+8], eax

0059F408 5A pop edx

0059F409 58 pop eax

0059F40A 8D6424 04 lea esp, dword ptr [esp+4]

0059F40E ^ FF6424 FC jmp dword ptr [esp-4] ; 783d.0059F3BA (条件断点退出时,值为:783d. 0059F415)

/////////////////////////////////////////////////循环结束

 

 

 

0059F415 E8 02000000 call 0059F41C

 

 

0059F41C 5A pop edx ; 783d.0059F41A

0059F41D 8D85 087F5600 lea eax, dword ptr [ebp+567F08]

0059F423 BB 54130B00 mov ebx, 0B1354

0059F428 D1E3 shl ebx, 1

0059F42A 2BC3 sub eax, ebx

0059F42C /FFE0 jmp eax ; 783d.005A13AE

 

 

005A13AE /EB 02 jmp short 005A13B2

 

 

005A13B2 F9 stc

005A13B3 /72 08 jb short 005A13BD

 

 

005A13BD E8 04000000 call 005A13C6

 

 

005A13C6 /EB 06 jmp short 005A13CE

 

 

005A13CE F5 cmc

 

 

005A13CF /72 0E jb short 005A13DF

005A13D1 F5 cmc

005A13D2 ^ 72 F8 jb short 005A13CC

 

 

005A13CC /EB 07 jmp short 005A13D5

 

 

005A13D5 ^\EB EC jmp short 005A13C3

 

 

005A13C3 F5 cmc

005A13C4 73 11 jnb short 005A13D7

 

 

005A13D7 830424 07 add dword ptr [esp], 7

005A13DB F5 cmc

005A13DC FF3424 push dword ptr [esp]

005A13DF C3 retn

 

 

005A13C9 ^\72 ED jb short 005A13B8

 

 

005A13B8 830424 17 add dword ptr [esp], 17

005A13BC C3 retn

 

 

005A13E0 8BBD 185A4000 mov edi, dword ptr [ebp+405A18] ; kernel32.LoadLibraryA

005A13E6 81E7 0000FFFF and edi, FFFF0000

005A13EC E8 03000000 call 005A13F4

 

 

005A13F4 ^\EB FB jmp short 005A13F1

 

 

005A13F1 /EB 04 jmp short 005A13F7

 

 

005A13F7 830424 0C add dword ptr [esp], 0C

005A13FB C3 retn

 

 

005A13FD BA 246BDE21 mov edx, 21DE6B24

005A1402 81F2 6931DE21 xor edx, 21DE3169

005A1408 66:3917 cmp word ptr [edi], dx

005A140B 75 17 jnz short 005A1424

005A140D 81C2 EFA5FFFF add edx, FFFFA5EF

005A1413 0FB7143A movzx edx, word ptr [edx+edi]

005A1417 66:F7C2 00F8 test dx, 0F800

005A141C /75 06 jnz short 005A1424

005A141E 3B7C3A 34 cmp edi, dword ptr [edx+edi+34] ; kernel32.7C800000

005A1422 /74 08 je short 005A142C

 

 

005A142C 97 xchg eax, edi ; kernel32.7C800000

005A142D E8 03000000 call 005A1435

 

 

005A1435 ^\EB FB jmp short 005A1432

 

 

005A1432 /EB 04 jmp short 005A1438

 

 

005A1438 830424 0C add dword ptr [esp], 0C

005A143C C3 retn

 

 

005A143E 68 86594000 push 00405986

005A1443 50 push eax ; kernel32.7C800000

005A1444 8785 77594000 xchg dword ptr [ebp+405977], eax ; kernel32.7C800000

005A144A 016C24 04 add dword ptr [esp+4], ebp

005A144E 8D85 C9AF83EB lea eax, dword ptr [ebp+EB83AFC9]

005A1454 8D80 BDAABC14 lea eax, dword ptr [eax+14BCAABD]

005A145A EB 04 jmp short 005A1460

 

 

005A1460 ^\EB FB jmp short 005A145D

 

 

005A145D /EB 04 jmp short 005A1463

 

 

005A1463 FFD0 call eax ; 783d.005A15D4

 

 

005A15D4 59 pop ecx ; 783d.005A1465

005A15D5 58 pop eax ; kernel32.7C800000

005A15D6 5F pop edi ; 783d.005A14D4

005A15D7 EB 04 jmp short 005A15DD

 

 

005A15DD ^\EB FB jmp short 005A15DA

 

 

005A15DA /EB 04 jmp short 005A15E0

 

 

005A15E0 41 inc ecx ; 783d.005A1465

005A15E1 41 inc ecx ; 783d.005A1466

005A15E2 51 push ecx ; 783d.005A1467

005A15E3 8BF0 mov esi, eax ; kernel32.7C800000

005A15E5 AD lods dword ptr [esi]

005A15E6 40 inc eax

005A15E7 3C FF cmp al, 0FF

005A15E9 /70 7C jo short 005A1667

005A15EB 8F85 725B4000 pop dword ptr [ebp+405B72] ; 783d.005A1467

005A15F1 8B40 78 mov eax, dword ptr [eax+78]

 

 

7C92E460 8B1C24 mov ebx, dword ptr [esp]

 

//执行到exe的空间,至:

 

005A15F1 8B40 78 mov eax, dword ptr [eax+78]

 

/////////////////////////////////////////////////////////////////////////////////

但是出现异常,导致程序无法继续运行,故:

清除断点,重新运行,在加载完毕后,依次逐个下断点(代码段指令被动态修改,故提前下的断点是无效的,反而影响壳的自行脱壳操作):

bp 0059f37c ( dword ptr [esp-4]!= 0059f340)

bp 0059F40E ( dword ptr [esp-4]!=0059f3ba)

bp 005a15e0

 

 

005A15F4 03C6 add eax, esi ; kernel32.7C800000

005A15F6 50 push eax ; kernel32.7C80262C

005A15F7 8F85 685B4000 pop dword ptr [ebp+405B68] ; kernel32.7C80262C

005A15FD FF70 20 push dword ptr [eax+20]

005A1600 5B pop ebx

005A1601 03DE add ebx, esi ; kernel32.7C800000

005A1603 FF70 18 push dword ptr [eax+18]

005A1606 8F85 545B4000 pop dword ptr [ebp+405B54]

005A160C FF70 24 push dword ptr [eax+24]

005A160F 5A pop edx

005A1610 03D6 add edx, esi ; kernel32.7C800000

005A1612 FF70 1C push dword ptr [eax+1C]

005A1615 59 pop ecx ; 783d.005A1467

005A1616 03CE add ecx, esi ; kernel32.7C800000

005A1618 898D 445B4000 mov dword ptr [ebp+405B44], ecx

005A161E 83EF 05 sub edi, 5

005A1621 83C7 05 add edi, 5

005A1624 833F 00 cmp dword ptr [edi], 0

005A1627 0F84 13010000 je 005A1740

005A162D 8A07 mov al, byte ptr [edi]

005A162F 8885 085B4000 mov byte ptr [ebp+405B08], al

005A1635 FF77 01 push dword ptr [edi+1]

005A1638 8F85 345B4000 pop dword ptr [ebp+405B34]

005A163E 53 push ebx

005A163F 52 push edx

005A1640 57 push edi ; 783d.005A14D4

005A1641 2BC9 sub ecx, ecx ; kernel32.7C802654

005A1643 /EB 07 jmp short 005A164C

 

 

005A164C ^\EB F8 jmp short 005A1646

 

 

005A1646 /EB 01 jmp short 005A1649

 

 

005A1649 /EB 04 jmp short 005A164F

 

 

/////////////////////////////////////////////////////循环开始

005A164F 8B3B mov edi, dword ptr [ebx]

005A1651 03FE add edi, esi ; kernel32.7C800000

005A1653 807F 02 69 cmp byte ptr [edi+2], 69

005A1657 75 43 jnz short 005A169C

005A1659 E8 02000000 call 005A1660            (断点,以便跳出循环)

 

 

005A169C 83C3 04 add ebx, 4

005A169F 41 inc ecx

005A16A0 81F9 B9030000 cmp ecx, 3B9

005A16A6 ^ 75 A7 jnz short 005A164F

005A16A8 33C0 xor eax, eax            (断点,以便跳出循环)

/////////////////////////////////////////////////////循环结束

 

 

005A1659 E8 02000000 call 005A1660

 

 

005A1660 58 pop eax ; 783d.005A165E

005A1661 8D6424 FC lea esp, dword ptr [esp-4]

005A1665 05 23000000 add eax, 23

005A166A 890424 mov dword ptr [esp], eax

005A166D 8D85 2D9994ED lea eax, dword ptr [ebp+ED94992D]

005A1673 2D 353D54ED sub eax, ED543D35

005A1678 50 push eax ; 783d.005A1746

005A1679 C3 retn

 

 

005A1746 52 push edx ; kernel32.7C80441C

005A1747 83CA FF or edx, FFFFFFFF

005A174A EB 07 jmp short 005A1753

 

 

005A1753 ^\EB F8 jmp short 005A174D

 

 

005A174D /EB 01 jmp short 005A1750

 

 

005A1750 /EB 04 jmp short 005A1756

 

 

005A1756 8A07 mov al, byte ptr [edi]

005A1758 0AC0 or al, al

005A175A 74 32 je short 005A178E

005A175C E8 03000000 call 005A1764

 

 

005A1764 ^\EB FB jmp short 005A1761

 

 

005A1761 /EB 04 jmp short 005A1767

 

 

005A1767 830424 0C add dword ptr [esp], 0C

005A176B C3 retn

 

 

005A176D 47 inc edi ; kernel32.7C804E2A

005A176E 32D0 xor dl, al

005A1770 B0 08 mov al, 8

005A1772 EB 01 jmp short 005A1775

 

 

/////////////////////////////////////////////////////循环开始

005A1775 /EB 04 jmp short 005A177B

 

 

005A177B ^\EB FB jmp short 005A1778

 

 

005A1778 /EB 04 jmp short 005A177E

 

 

005A177E D1EA shr edx, 1

005A1780 /73 06 jnb short 005A1788

005A1782 81F2 2083B8ED xor edx, EDB88320

005A1788 FEC8 dec al

005A178A ^ 75 E6 jnz short 005A1772 (循环跳到005A1772)

005A178C ^\EB C8 jmp short 005A1756        (断点,以便跳出循环)

 

 

005A1772 /EB 01 jmp short 005A1775

/////////////////////////////////////////////////////循环结束

 

005A178C ^\EB C8 jmp short 005A1756

 

 

005A1756 8A07 mov al, byte ptr [edi]

005A1758 0AC0 or al, al

005A175A 74 32 je short 005A178E

005A175C E8 03000000 call 005A1764

 

 

005A1764 ^\EB FB jmp short 005A1761

 

 

005A1761 /EB 04 jmp short 005A1767

 

 

005A1767 830424 0C add dword ptr [esp], 0C

005A176B C3 retn

 

 

005A176D 47 inc edi ; kernel32.7C804E2B

005A176E 32D0 xor dl, al

005A1770 B0 08 mov al, 8

005A1772 EB 01 jmp short 005A1775

 

 

/////////////////////////////////////////////////////循环开始

005A1775 /EB 04 jmp short 005A177B

 

 

005A177B ^\EB FB jmp short 005A1778

 

 

005A1778 /EB 04 jmp short 005A177E

 

 

005A177E D1EA shr edx, 1

005A1780 73 06 jnb short 005A1788

005A1782 81F2 2083B8ED xor edx, EDB88320

005A1788 FEC8 dec al

005A178A ^ 75 E6 jnz short 005A1772 (循环跳到005A1772)

005A178C ^\EB C8 jmp short 005A1756        (断点,以便跳出循环)

 

 

005A1772 /EB 01 jmp short 005A1775

/////////////////////////////////////////////////////循环结束

 

005A1756 8A07 mov al, byte ptr [edi]

005A1758 0AC0 or al, al

005A175A 74 32 je short 005A178E

005A175C E8 03000000 call 005A1764

 

 

005A1764 ^\EB FB jmp short 005A1761

 

 

005A1761 /EB 04 jmp short 005A1767

 

 

005A1767 830424 0C add dword ptr [esp], 0C

005A176B C3 retn

 

005A176D 47 inc edi

005A176E 32D0 xor dl, al

005A1770 B0 08 mov al, 8

005A1772 EB 01 jmp short 005A1775(又进入到了上面的子循环)

005A1774 9A EB04EAEB 040>call far 0004:EBEA04EB        (断点,以便跳出第二层循环)

 

 

/////////////////////////////////////////////////////////////////////////////////

但是出现异常,导致程序无法继续运行,故:

清除断点,重新运行,在加载完毕后,依次逐个下断点:

bp 0059F40E ( dword ptr [esp-4]!=0059f3ba)

bp 005a15e0

bp 005A176B

 

多次执行到用户retn,直至进入了kernel32中,再进入到了:

 

005A087A /0F84 2F0A0000 je 005A12AF

005A0880 E8 01000000 call 005A0886

 

 

005A0886 59 pop ecx ; da8d.005A0885

005A0887 50 push eax

005A0888 51 push ecx

005A0889 55 push ebp

005A088A 810424 E8424000 add dword ptr [esp], 004042E8

005A0891 814424 04 22000>add dword ptr [esp+4], 22

005A0899 C3 retn

 

 

0059FE36 /EB 01 jmp short 0059FE39

 

 

0059FE39 59 pop ecx ; da8d.005A08A7

0059FE3A 5A pop edx

0059FE3B 41 inc ecx

0059FE3C 51 push ecx

0059FE3D EB 04 jmp short 0059FE43

 

 

0059FE43 ^\EB FB jmp short 0059FE40

 

 

0059FE40 /EB 04 jmp short 0059FE46

 

 

0059FE46 57 push edi ; da8d.00570A9C

0059FE47 53 push ebx

0059FE48 8995 80434000 mov dword ptr [ebp+404380], edx

0059FE4E 8BDA mov ebx, edx

0059FE50 0352 3C add edx, dword ptr [edx+3C]

0059FE53 FF72 7C push dword ptr [edx+7C]

0059FE56 8F85 78434000 pop dword ptr [ebp+404378]

0059FE5C 8B52 78 mov edx, dword ptr [edx+78]

0059FE5F 03D3 add edx, ebx

0059FE61 52 push edx

0059FE62 8F85 74434000 pop dword ptr [ebp+404374]

0059FE68 EB 04 jmp short 0059FE6E

 

 

0059FE6E ^\EB FB jmp short 0059FE6B

 

 

0059FE6B /EB 04 jmp short 0059FE71

 

 

0059FE71 FF72 20 push dword ptr [edx+20]

0059FE74 5F pop edi

0059FE75 03FB add edi, ebx

0059FE77 57 push edi

0059FE78 8F85 84434000 pop dword ptr [ebp+404384]

0059FE7E FF72 18 push dword ptr [edx+18]

0059FE81 8F85 5B444000 pop dword ptr [ebp+40445B]

0059FE87 EB 01 jmp short 0059FE8A

 

 

0059FE8A /EB 07 jmp short 0059FE93

 

 

0059FE93 ^\EB F8 jmp short 0059FE8D

 

 

0059FE8D /EB 01 jmp short 0059FE90

 

 

0059FE90 /EB 04 jmp short 0059FE96

 

 

0059FE96 FF72 1C push dword ptr [edx+1C]

0059FE99 5F pop edi

0059FE9A 03FB add edi, ebx

0059FE9C 57 push edi

0059FE9D 8F85 88434000 pop dword ptr [ebp+404388]

0059FEA3 FF72 24 push dword ptr [edx+24]

0059FEA6 5F pop edi

0059FEA7 03FB add edi, ebx

0059FEA9 57 push edi

0059FEAA 8F85 7C434000 pop dword ptr [ebp+40437C]

0059FEB0 FF72 10 push dword ptr [edx+10]

0059FEB3 8F85 A2434000 pop dword ptr [ebp+4043A2]

0059FEB9 EB 01 jmp short 0059FEBC

 

 

0059FEBC 5B pop ebx ; da8d.00570A9C

0059FEBD 5F pop edi

0059FEBE C3 retn

 

 

005A08A8 2BD2 sub edx, edx

005A08AA F9 stc

005A08AB 72 07 jb short 005A08B4

 

 

005A08B4 E8 04000000 call 005A08BD

 

 

005A08BD /EB 06 jmp short 005A08C5

 

 

005A08C5 F5 cmc

005A08C6 72 0E jb short 005A08D6

005A08C8 F5 cmc

005A08C9 ^ 72 F8 jb short 005A08C3

 

 

005A08C3 /EB 07 jmp short 005A08CC

 

 

005A08CC ^\EB EC jmp short 005A08BA

 

 

005A08BA F5 cmc

005A08BB 73 11 jnb short 005A08CE

 

 

005A08CE 830424 07 add dword ptr [esp], 7

005A08D2 F5 cmc

005A08D3 FF3424 push dword ptr [esp]

005A08D6 C3 retn

 

 

005A08C0 ^\72 ED jb short 005A08AF

 

 

005A08AF 830424 17 add dword ptr [esp], 17

005A08B3 C3 retn

 

 

005A08D7 800B 00 or byte ptr [ebx], 0

005A08DA 74 0D je short 005A08E9

005A08DC 8813 mov byte ptr [ebx], dl

005A08DE C1C2 04 rol edx, 4

005A08E1 75 01 jnz short 005A08E4

 

 

005A08E4 43 inc ebx ; da8d.00570A9C

 

 

005A08E5 ^\FF6424 FC jmp dword ptr [esp-4] ; da8d.005A08D7

 

 

/////////////////////////////////////////////////////循环开始

005A08D7 800B 00 or byte ptr [ebx], 0

005A08DA 74 0D je short 005A08E9(断点 bp 005A08E9,以便跳出循环)

005A08DC 8813 mov byte ptr [ebx], dl

005A08DE C1C2 04 rol edx, 4

005A08E1 75 01 jnz short 005A08E4

005A08E3 E8 43FF6424 call 24BF082B    

 

 

005A08E4 43 inc ebx ; da8d.00570A9D

005A08E5 ^\FF6424 FC jmp dword ptr [esp-4] ; da8d.005A08D7

/////////////////////////////////////////////////////循环结束

 

 

/////////////////////////////////////////////////////////////////////////////////

但是出现异常,导致程序无法继续运行,故:

清除断点,重新运行,在加载完毕后,依次逐个下断点:

bp 0059F40E ( dword ptr [esp-4]!=0059f3ba)

bp 005a15e0

bp 005A176B

 

多次执行到用户retn,再进入用户空间,执行到:

005A0878 85C0 test eax, eax

 

005A087A 0F84 2F0A0000 je 005A12AF

005A0880 E8 01000000 call 005A0886            (程序启动)

            

 

005A0886 59 pop ecx

005A0887 50 push eax

005A0888 51 push ecx

005A0889 55 push ebp

005A088A 810424 E8424000 add dword ptr [esp], 004042E8

005A0891 814424 04 22000>add dword ptr [esp+4], 22

005A0899 C3 retn

 

 

0059FE36 /EB 01 jmp short 0059FE39

 

 

0059FE39 59 pop ecx ; 585f.005A08A7

0059FE3A 5A pop edx

0059FE3B 41 inc ecx

0059FE3C 51 push ecx

0059FE3D EB 04 jmp short 0059FE43

 

 

0059FE43 ^\EB FB jmp short 0059FE40

 

 

0059FE40 /EB 04 jmp short 0059FE46

 

 

0059FE46 57 push edi ; 585f.00570A9C

0059FE47 53 push ebx

0059FE48 8995 80434000 mov dword ptr [ebp+404380], edx

0059FE4E 8BDA mov ebx, edx

0059FE50 0352 3C add edx, dword ptr [edx+3C]

0059FE53 FF72 7C push dword ptr [edx+7C]

0059FE56 8F85 78434000 pop dword ptr [ebp+404378]

0059FE5C 8B52 78 mov edx, dword ptr [edx+78]

0059FE5F 03D3 add edx, ebx

0059FE61 52 push edx

0059FE62 8F85 74434000 pop dword ptr [ebp+404374] ; 76B1135C

0059FE68 EB 04 jmp short 0059FE6E

 

 

0059FE6E ^\EB FB jmp short 0059FE6B

 

 

0059FE6B /EB 04 jmp short 0059FE71

 

 

0059FE71 FF72 20 push dword ptr [edx+20]

0059FE74 5F pop edi

0059FE75 03FB add edi, ebx

0059FE77 57 push edi

0059FE78 8F85 84434000 pop dword ptr [ebp+404384] ; 76B116CC

0059FE7E FF72 18 push dword ptr [edx+18]

0059FE81 8F85 5B444000 pop dword ptr [ebp+40445B]

0059FE87 EB 01 jmp short 0059FE8A

 

 

0059FE8A /EB 07 jmp short 0059FE93

 

 

0059FE93 ^\EB F8 jmp short 0059FE8D

0059FE95 69FF 721C5F03 imul edi, edi, 35F1C72

0059FE9B FB sti

0059FE9C 57 push edi

0059FE9D 8F85 88434000 pop dword ptr [ebp+404388]

0059FEA3 FF72 24 push dword ptr [edx+24]

0059FEA6 5F pop edi

0059FEA7 03FB add edi, ebx

0059FEA9 57 push edi

0059FEAA 8F85 7C434000 pop dword ptr [ebp+40437C] ; 76B11A10

0059FEB0 FF72 10 push dword ptr [edx+10]

0059FEB3 8F85 A2434000 pop dword ptr [ebp+4043A2]

0059FEB9 EB 01 jmp short 0059FEBC

 

 

0059FEBC 5B pop ebx ; 585f.00570A9C

0059FEBD 5F pop edi ; 585f.00570A9C

0059FEBE C3 retn

 

 

005A08A8 2BD2 sub edx, edx

005A08AA F9 stc

005A08AB 72 07 jb short 005A08B4

 

 

005A08B4 E8 04000000 call 005A08BD

 

 

005A08BD /EB 06 jmp short 005A08C5

 

 

005A08C5 F5 cmc

005A08C6 72 0E jb short 005A08D6

……………………….

 

 

……………………….

005A08BA F5 cmc

005A08BB 73 11 jnb short 005A08CE

 

 

005A08CE 830424 07 add dword ptr [esp], 7

005A08D2 F5 cmc

005A08D3 FF3424 push dword ptr [esp] ; 585f.005A08C0

005A08D6 C3 retn

 

 

005A08C0 ^\72 ED jb short 005A08AF

 

 

005A08AF 830424 17 add dword ptr [esp], 17

005A08B3 C3 retn

 

 

/////////////////////////////////////////////////////循环开始

设置条件断点,跳出循环 dword ptr [esp-4]!=0059f340:

地址=0059F37C

模块=783d

激活=当 dword ptr [esp-4]!=0059f340

反汇编=jmp dword ptr [esp-4]

/////////////////////////////////////////////////

005A08D7 800B 00 or byte ptr [ebx], 0

005A08DA 74 0D je short 005A08E9

005A08DC 8813 mov byte ptr [ebx], dl

005A08DE C1C2 04 rol edx, 4

005A08E1 75 01 jnz short 005A08E4

 

 

005A08E4 43 inc ebx ; 585f.00570A9C

005A08E5 ^\FF6424 FC jmp dword ptr [esp-4] ; 585f.005A08D7 (条件断点退出时,值为:585f.0059F383)

/////////////////////////////////////////////////////循环结束

 

 

/////////////////////////////////////////////////////////////////////////////////

但是出现异常,导致程序无法继续运行,故:

清除断点,重新运行,在加载完毕后,依次逐个下断点:

bp 0059F40E ( dword ptr [esp-4]!=0059f3ba)

bp 005a15e0

bp 005A176B

 

多次执行到用户retn,再进入用户空间,执行到:

005A0878 85C0 test eax, eax

 

主线程挂起。

下断点LoadLibraryA、LoadLibraryW、LoadLibraryExA、LoadLibraryExW,恢复主线程,断点生效。

去掉断点,进入用户空间。

 

 

005A0878 85C0 test eax, eax ; WINSPOOL.72F70000

005A087A /0F84 2F0A0000 je 005A12AF

005A0880 E8 01000000 call 005A0886

 

 

005A08D7 800B 00 or byte ptr [ebx], 0

005A08DA 74 0D je short 005A08E9

005A08DC 8813 mov byte ptr [ebx], dl

005A08DE C1C2 04 rol edx, 4

005A08E1 75 01 jnz short 005A08E4

005A08E4 43 inc ebx ; fdd7.00570ADD

005A08E5 > FF6424 FC jmp dword ptr [esp-4]

 

 

bp 005A08E5 ( dword ptr [esp-4]!= 005A08D7) 跳出上面提到的这个循环

 

 

主线程挂起。

下断点LoadLibraryA、LoadLibraryW、LoadLibraryExA、LoadLibraryExW、CreateFileA、CreateFileW,恢复主线程,断点生效。

去掉断点,进入用户空间。

 

进入用户空间失败,不断调用进入retn。之后又进入:

005A0878 85C0 test eax, eax ; SHELL32.#599

 

By:zhanyonhu

  评论这张
 
阅读(1870)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016