首页
社区
课程
招聘
ASPack 2.x (without poly)的脱壳及脱壳后问题
发表于: 2006-2-12 18:01 3786

ASPack 2.x (without poly)的脱壳及脱壳后问题

cyto 活跃值
31
2006-2-12 18:01
3786
xx通用人事工资管理系统豪华版

PEID:ASPack 2.x (without poly) -> Alexey Solodovnikov

1.OEP+DUMP
OD载入:双击跟随KiUserExceptionDispatcher,下断call ecx:
77FBB270     FFD1            call ecx      

第一层壳:
00432BA2 S>  60               pushad                         ; 入口点
00432BA3     E8 00000000      call SXRSGZHH.00432BA8         ; hr esp ,F9
00432BA8     5D               pop ebp
00432BA9     81ED 06104000    sub ebp,SXRSGZHH.00401006
发生异常,断在call ecx:
77FBB270     FFD1            call ecx                      ; SXRSGZHH.00432BF8
堆栈:
0012FBF4    0012FCB0
0012FBF8    0012FF9C
0012FBFC    0012FCD0
DD 0012FCD0+B8:0012FD88  00432BC4  SXRSGZHH.00432BC4
来到00432BC4,下一行下断,F9:
00432BC4     CC            int3
00432BC5     90            nop                           ;  断在此,取消该处断点后单步往下
...
00432BEA     58            pop eax
00432BEB     894424 1C     mov dword ptr ss:[esp+1C],eax
00432BEF     61            popad
00432BF0   ^ FFE0          jmp eax                             ; SXRSGZHH.0042F001

来到第二个壳?:
0042F001     60               pushad
0042F002     E8 03000000      call SXRSGZHH.0042F00A           ;  hr esp,F9
0042F007   - E9 EB045D45      jmp 459FF4F7
0042F00C     55               push ebp
0042F00D     C3               retn
...
0042F3AF     61            popad
0042F3B0    /75 08         jnz short SXRSGZHH.0042F3BA         ; 断在此
0042F3B2    |B8 01000000   mov eax,1
0042F3B7    |C2 0C00       retn 0C
0042F3BA    \68 430F4200   push SXRSGZHH.00420F43
0042F3BF     C3            retn

返回到第3个壳?:
00420F43     60               pushad                              
00420F44     E8 00000000      call SXRSGZHH.00420F49               ; hr esp,F9
00420F49     5D               pop ebp
00420F4A     81ED 06104000    sub ebp,SXRSGZHH.00401006
00420F50     8D85 56104000    lea eax,dword ptr ss:[ebp+401056]
00420F56     50               push eax
发生异常,又断在:call ecx,堆栈:
0012FBF4    0012FCB0
0012FBF8    0012FF9C
0012FBFC    0012FCD0
dd  0012FCD0+B8:0012FD88  00420F65  SXRSGZHH.00420F65
来到00420F65处,往下一行下断:
00420F65     CC            int3
00420F66     90            nop           ; 断在此
单步往下不久:
00420F8C     894424 1C     mov dword ptr ss:[esp+1C],eax
00420F90     61            popad
00420F91   ^ FFE0          jmp eax                             ; SXRSGZHH.0041FBD8
...
0041FBD8     55            push ebp                           ;  dump
0041FBD9     8BEC          mov ebp,esp

2.修复IAT:
另开OD,载入dump.exe,来到第一个call:
004065CC     E8 2BFFFFFF   call SXRSGZHH.004064FC             ; jmp to kernel32.GetModuleHandleA
跟进:
004064FC   - FF25 C8514200   jmp dword ptr ds:[4251C8]        ; kernel32.GetModuleHandleA
00406502     8BC0            mov eax,eax
找到其中的一个函数,好,dd 004251C8,然后上下翻翻看到:
004250D8  00000000
004250DC  77F8F0B2  ntdll.RtlDeleteCriticalSection
004250E0  77F87FC0  ntdll.RtlLeaveCriticalSection
...
00425340  779BB7A0  oleaut32.VariantClear
00425344  779BB790  oleaut32.VariantInit
00425348  00000000
0042534C  6E72656B

上ImportREC_fix.exe,选择未脱壳程序(已经到OEP处):
OEP:0001FBD8
RVA:000250D8
SIZE:270(0042534C-004250D8)
Get Imports,无无效函数,修复。

PEID:Borland Delphi 6.0 - 7.0
运行,错误,提示:不是Visual FoxPro文件

3.脱壳总结:
有3层,第一层有个异常,可以在KiUserExceptionDispatcher的call ecx处下断(参考加密与解密第二版的反跟踪技术篇),断下后查看堆栈,然后DD CONTEXT.EIP的值,下一行设断,F9再运行断下,单步往下不一会就到出口,第二层壳可以在pushad处下hr esp,F9运行断下后就到出口,然后来到第3层壳,跟第一层壳几乎一样操作就到了OEP,此时可dump,然后修复IAT。

壳是脱了,可是不能运行提示非Visual FoxPro文件,这个问题看到本论坛的讨论,没能有结果。请达者指教,谢谢了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是你的错,老王惹的祸.
2006-2-12 18:16
0
游客
登录 | 注册 方可回帖
返回
//