其实,这个问题也不是什么陌生问题,网上和本站都有朋友发过类似的帖,只不过我按照自己方式,图片为主例出二个实例,共同学习!本帖主要是探讨手工如果处理附加问题,网上和本站都有附加数据的工具化处理,不是此帖讨论的. 引用” 1).overlay只是数据它是不映射到内存的,它将被程序以打开自己的方式来读取数据
2).只要不是区段里面包括的文件的大小,将被视为overlay.”
本帖有二个实例讲解,先学习第一个实例.也是一个28程序,先按一般程序查壳,是UPX压缩壳~~ 对于UXP 脱壳我只是简单说明下,方法有好多种.单步跟踪,内存法,ESP定律,直接法….等
1. 那我们就选择用直接法---就是搜索POPAD字符串 2. 载入软件到OD如图:
1
3.点击搜索后如图
2
4. 在JMP处下断点F2,重新载入软件后,按F9运行,就会停到断点处!
2.1
5.到JMP后,按F7步入进去,就是程序入口OEP地址
2.2
6.步入到OEP地址后,可以右键选择用OllyDump插件脱壳.如图
2.3
7.点击成功脱壳,保存文件,再点击打开脱壳后的程序,发现出错!如
3
8. 用PEID查询,没有附加的overlay数据,知道后.现在 就用WinHex手工把原程序里数据,取出来 并加到已经脱壳的程序中去!用WinHex分别打开原程序和脱壳程序.
4
找到一些为0地址最后处,这里开始就是附加数据,我们就要手工处理复制. 9.具体如下,选择开始块,结尾块之间数据代码. 10.这样就把开始块到结尾块之间数据,就全部选择上了,下一步就是右键—编辑—复制
8
9
11.复制原程序数据后,就要打开脱壳程序.准备把这些数据粘接回去!.方法是打开脱壳程序并下拉到全部地址为0的最后处.
10
选中最后地址,右键-复制
11
12 一路确定!
15
17
13.粘接完后,保存软件,先用PEID查看下,我们再打开保存的软件,看是什么情况?
179
180
打开已经附加上的软件,能成功打开软件 ,说明我们脱壳成功,不过脱壳后软件 有1.96M比原来1.74M大了一点.,要注意的是,这个软件 有文件名自效验,不过大家有兴趣继续的话,可以,双OD对比跟踪调试,一会也会找到,不过不在此文讨论范围内!
第二个实例就没有这么幸运了,附加数据后就能直接打开.那得手工要修改下,附加数据的地址指针,才能正确打开软件! 1,先行按常规查壳……
200
2. 载入OD调试脱壳……..
201
3.图单步到004E5061地址处,就是我们熟悉程序入口哟!我们就用ESP定律来脱下壳!
202
4.—右边ESP—右键—跟随到数据窗口
203
5.图下断点后,重新载入软件,按F9运行到断点停下来.单步到004E5046处,再按F7步入jmp关键跳到程序的OEP处!
204
6.程序的OEP处,右键选择—ollydump脱壳!
205
7.就上图吧,大家对ESP也不是太陌生了吧~ 8. 功后,我们打开脱壳运行下看是什么 情况?
207
9. 那我们不管那么多,就先修复下软件,其实就是修下输入表…..
208
10. 重新定位OEP地址到ImportREC,来重新获取输入表~
209
11. 获取输入表,要处理一些无效的函数~~~
210
12. 修复再转存文件
211
13.我们来分析下原软件的区段,看下数据情况~~~
212
14. 来偏移地址+偏移量=60124地址区段最后地址!这样的话,我们就要用WinHex来打开原程序和已经修复脱壳程序,再手工处理附加数据!
213
15.从上面图中,从地址60124后,直到下拉最后为0地址.这些不在区段内,但这些是原程序运行附加数据,所以从60124处起---直到最后我们都把它复制下来,并粘接到已经脱壳修复后的程序中去!方法如上例子相同!
214
215
16.复制它…..再用WinHex打开修复脱壳后程序,并把它下拉到最后全部为0的地址处
217
17.在打开脱壳修复后的程序中,下拉到最后为0的地址处,右键-粘接上从原程序60124以后复制的数据!
218
219
18.把上面数据粘接成功后,另保存成功! 我再打开粘接成功程序时,还是一样出错哟.这说明还是没有访问到这个地址,这就是我们要手工修复附加地址指针地址.从上图中,可以看到E7A00,这个地址一定记得,我们先找到原60124地址,把它换成EA700!
220
搜索如下~~~
221
修改地址如图:
修改后再保存为exe,我们再打开修改指针后的软件,看下什么情况 ?
有些朋友就问,有自动附加数据工具,还用手工做什么?其手工处理附加数据,才能学习到好多东西,了解具体情况!这样学到东西才是你自己的东西!
2 例子下载地址:
3A.rar
(622.72 KB, 下载次数: 32)
|