本人最近在学习脱壳,但由于本人天生愚笨!胡乱的脱了一些壳!也不知道是否正确!我在这里列
出来,还望各位指点:
用PEID查出壳为:nSpack V2.9 -> LiuXingPing *
用OD加载程序来到如下位置:
0057FD2B > 9C pushfd
0057FD2C 60 pushad
0057FD2D E8 00000000 call 0057FD32
0057FD32 5D pop ebp
0057FD33 B8 07000000 mov eax, 7
0057FD38 2BE8 sub ebp, eax
0057FD3A 8DB5 FDFBFFFF lea esi, [ebp-403]
0057FD40 8A06 mov al, [esi]
0057FD42 3C 00 cmp al, 0
0057FD44 74 12 je short 0057FD58
0057FD46 8BF5 mov esi, ebp
0057FD48 8DB5 25FCFFFF lea esi, [ebp-3DB]
0057FD4E 8A06 mov al, [esi]
0057FD50 3C 01 cmp al, 1
0057FD52 0F84 42020000 je 0057FF9A
0057FD58 C606 01 mov byte ptr [esi], 1
0057FD5B 8BD5 mov edx, ebp
0057FD5D 2B95 B9FBFFFF sub edx, [ebp-447]
0057FD63 8995 B9FBFFFF mov [ebp-447], edx
0057FD69 0195 E9FBFFFF add [ebp-417], edx
0057FD6F 8DB5 2DFCFFFF lea esi, [ebp-3D3]
0057FD75 0116 add [esi], edx
0057FD77 60 pushad
我用ESP定律的惯例F8一下,再下硬断点:HR 13FFC0 再F9运行!来到:
0057FFB0 - E9 C915E8FF jmp 0040157E
0057FFB5 8BB5 B1FBFFFF mov esi, [ebp-44F]
0057FFBB 0BF6 or esi, esi
0057FFBD 0F84 97000000 je 0058005A
0057FFC3 8B95 B9FBFFFF mov edx, [ebp-447]
0057FFC9 03F2 add esi, edx
0057FFCB 833E 00 cmp dword ptr [esi], 0
0057FFCE 75 0E jnz short 0057FFDE
在0057FFB0处直接就是JMP跳转,所以我猜0040157E就是OEP!F8一下,来到:
0040157E > \A1 8B104F00 mov eax, [4F108B]
00401583 . C1E0 02 shl eax, 2
00401586 . A3 8F104F00 mov [4F108F], eax
0040158B . 52 push edx
0040158C . 6A 00 push 0 ; /pModule = NULL
0040158E . E8 83E60E00 call 004EFC16 ; \GetModuleHandleA
00401593 . 8BD0 mov edx, eax
00401595 . E8 E2EF0C00 call 004D057C
0040159A . 5A pop edx
0040159B . E8 40EF0C00 call 004D04E0
004015A0 . E8 17F00C00 call 004D05BC
004015A5 . 6A 00 push 0 ; /Arg1 = 00000000
004015A7 . E8 FC040D00 call 004D1AA8 ; \BossKey.004D1AA8
004015AC . 59 pop ecx
004015AD . 68 34104F00 push 004F1034
004015B2 . 6A 00 push 0 ; /pModule = NULL
004015B4 . E8 5DE60E00 call 004EFC16 ; \GetModuleHandleA
004015B9 . A3 93104F00 mov [4F1093], eax
004015BE . 6A 00 push 0
004015C0 . E9 036B0D00 jmp 004D80C8
004015C5 . E9 2A050D00 jmp 004D1AF4
004015CA . 33C0 xor eax, eax
004015CC . A0 7D104F00 mov al, [4F107D]
004015D1 . C3 retn
在0040157E处DUMP出来!一且都采用默认值!脱出来的程序可以直接运行!
用PEID查的结果为:Borland C++ DLL Method 1
问一下:1、脱壳至此算结束了吗??还有什么要注意的??
2、听别人说找 “段间跳” 请问如何判断一个跳转为段间跳???除了跨度长以外还有别的特点吗??
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!