多谢Fly的文章指点,本文将补充Fly兄的没提及的问题,另,本文只涉及脱壳
软件下载页面:
http://www.skycn.com/soft/11437.html
【软件简介】:Mr.Captor 是一个非常好用的屏幕截图程序!后略...
【调试环境】:Win2000 server + sp4、Ollydbg、PEiD、LordPE、ImportREC 1.6
―――――――――――――――――――――――――――――――――
单刀直入,应该采取6个步骤脱壳:
1)BP OpenMutexA
2)BP GetModuleHandleA
3)修改Magic jmp
4)下内存断点
5)LordPE做dump处理
6)Import修正IAT
前面5个步骤可以参考Fly兄的破解文章,关于修复IAT,这里要说一下。
脱到6),可以看到获得输入表的树型结构里有两个父节点,第一个父节点里有很多dll在一起,仔细看一下,发现未能分析的垃圾指针都存在于各个dll之间,这个时候虽然有的垃圾指针可以通过Level1来分析出来),但是,实际上这是假象。
众所周知,一般的垃圾指针都是靠填充dll与dll之间的空余段的,也就是说如果出现如下情况,应该先考虑Cut,而不是用Level1:
FThunk: 0006FA3C NbFunc: 00000007
1 0006FA3C comdlg32.dll 0075 PrintDlgA
1 0006FA44 comdlg32.dll 0073 PageSetupDlgA
1 0006FA48 comdlg32.dll 0070 GetSaveFileNameA
1 0006FA4C comdlg32.dll 006C GetFileTitleA
1 0006FA50 comdlg32.dll 006E GetOpenFileNameA
1 0006FA54 comdlg32.dll 0065 ChooseColorA
1 0006FA58 ptr:00xxxxx // 这里就是分界线,不要轻易Level1
1 0006FA5C ole32.dll 0096 DoDragDrop
1 0006FA60 ole32.dll 0112 OleUninitialize
1 0006FA64 ole32.dll 00FB OleInitialize
1 0006FA68 ole32.dll 0120 ReleaseStgMedium
汗,贴不了图,只能用文字了:(
遇到如此情况,要义无反顾的Cut掉:D ,我就被折磨够呛阿,一看到可以修复(Level1)就疯狂修复,汗,各位大大不要嘲笑我啊。
通过这个方法,基本上可以把大家分离出来了,分离到最下面,发现:
1 0006FB58 ptr:00xxxxx
1 0006FB5C ptr:00xxxxx
1 0006FB60 ptr:00xxxxx
要判断这里是垃圾指针还是可用指针,那么先用Level1分析,分析的结果如果未出现在已分析的列表,那么就是可用指针,反之,可以Cut掉了。
好了,总结了一下经验,哎,照葫芦画瓢,还花了这么长时间,还要继续修炼ing。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!