ESP定律手脱ASPack 2.12加壳的dll文件
【目标名称】:M2Server.dll (一个传奇4F的控制端的动态连接库程序)
【文件下载】:
本地下载
【软件加密】:ASPack 2.12 -> Alexey Solodovnikov
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――――――――――――
【脱壳过程】:
用PEID测M2Server.dll的加壳为ASPack 2.12 -> Alexey Solodovnikov,我们把OD中忽略全部异常,
用OD载入程序后,确定一个入口点警告,OD提示程序加壳,选继续分析。
008DE001 M> 60 pushad //载入程序,停在此处!F8一次!
008DE002 E8 03000000 call M2Server.008DE00A //到这里,ESP=0006f888
008DE007 - E9 EB045D45 jmp 45EAE4F7
008DE00C 55 push ebp
008DE00D C3 retn
下断hr 0006f888 访问硬件断点!F9运行,一次,请注意“友好堆栈”
008DE3AF 61 popad
008DE3B0 75 08 jnz short M2Server.008DE3BA //中断,发生变化ESP=0006f8a8继续F9,一次
008DE3B2 B8 01000000 mov eax,1
008DE3B7 C2 0C00 retn 0C
008DE3BA 68 01C08D00 push M2Server.008DC001
008DE3BF C3 retn
============================== 友好堆栈显示 ==========================================
0006F8B0 00000001
0006F8B4 00000000
0006F8B8 008DE001 offset M2Server.<ModuleEntryPoint> //调用加密模块,准备解压代码
0006F8BC 00000001
0006F8C0 00182728
======================================================================================
008DC001 60 pushad
008DC002 E8 03000000 call M2Server.008DC00A //中断,此时ESP又回到0006f888,继续F9,一次,注意“友好堆栈”变化!
008DC007 - E9 EB045D45 jmp 45EAC4F7
008DC00C 55 push ebp
008DC00D C3 retn
============================== 友好堆栈显示 ==========================================
0006F888 00000001
0006F88C 0006F8B8
0006F890 0006F8C4
0006F894 0006F8A8
0006F898 008DE001 offset M2Server.<ModuleEntryPoint> //调用加密模块,正在解压代码
0006F89C 7C92EB94 ntdll.KiFastSystemCallRet
0006F8A0 0000AB52
0006F8A4 0006F930
======================================================================================
008DC3AF 61 popad
008DC3B0 75 08 jnz short M2Server.008DC3BA //中断,发生变化ESP=0006f8a8继续F9就跑飞啦~~~所以改用F8跟!
008DC3B2 B8 01000000 mov eax,1
008DC3B7 C2 0C00 retn 0C
008DC3BA 68 54AE8C00 push M2Server.008CAE54 //F8一次,来到这里,
008DC3BF C3 retn //继续F8,这里返回,说明,代码已解压完毕!
============================== 友好堆栈显示 ==========================================
0006F8B0 00000001
0006F8B4 00000000
0006F8B8 008DE001 offset M2Server.<ModuleEntryPoint> //调用加密模块,解压代码完成
0006F8BC 00000001
0006F8C0 00182728
======================================================================================
008CAE54 55 db 55 ; CHAR 'U' //程序返回到这里,真正OEP就是在这!赶快dump进程!
008CAE55 8B db 8B
008CAE56 EC db EC
008CAE57 83 db 83
008CAE58 C4 db C4
008CAE59 C4 db C4
............
*******************************************************************
再讲讲dump该进程方法:
运行LordPE,在上面进程栏中,选取OD下面那个绿色的loaddll的进程,
然后在LordPE下面进程栏中选取那个“非”系统进程,右键Fix dump!
保存为“dumped.dll”,OK!关闭LordPE!但不要关闭OD哦~~~ ^__^
*******************************************************************
ImportREC修复脱壳文件:
运行ImportREC,选择在LordPE中的那个“未知”进程!OEP中填入:00001000,点“IT AutoSearch”,再点“Get Import”,最后点“Fix dump”,选择你刚dump保存的文件“dumped.dll”,全部修复完成!FixDump!
脱壳的文件有465 KB,用LordPE重建PE优化一下,就只有436 KB了!
完!!!
UnPacked By KuNgBiM[DFCG]
2005-02-28 21:41
文章及打包文件:
附件:M2Server.rar
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)