baiyunem 发表于 2013-6-28 10:36

菜鸟学处理附加数据笔记一则

本帖最后由 baiyunem 于 2013-6-28 10:54 编辑

本人是个菜鸟,菜到什么水平?只能告诉你,我就学了Shark恒老大那10来课而已,知道什么水平了吧。。。所以可能写得很差,希望大家别笑我{:1_936:},
注册以来因为工作、生活等各种原因(也许是因为懒,囧),一直都没能入门,至于破解教程,什么黑鹰的、天草的硬盘放了一堆,但是一直没看。。。汗
这篇笔记是遇到带Overlay数据壳,在Google搜脱壳后如何处理附加数据,出来结果的第一篇就是这位大牛2004年写的文章,
http://www.pediy.com/kssd/pediy06/pediy6923.htm
除了看以外,我习惯上动手做一遍(发现写一遍更深刻哈,不过就是太累了),于是有了本文。
软件一,XX钢笔2.0先查壳

额,upx+overlay…看大牛的文章知道是有overlay的,只能用Shark恒老大教的知识,一步步来了,碰下运气。用OD载入程序,

ESP定律下断后,程序断下在这

可以看到程序断在了ntdll领空,于是我们执行到用户代码

OD这时提示我们,这软件可能有壳,不管,因为已经查过,的确是有壳的,点否就是了,然后程序一直运行下去
直到回到了程序领空,就停了下来这时我们按esp定律一步步跑下去,继续寻找我们需要的OEP。直到

这里不能点00420978这行F4,否则会跳到系统领空,然后绕了几个圈绕晕你再回这里
我就在这里绕了几个圈,然后忽然发现exitprocess…顿悟!420976时不点00420978这行,而是直接点下一行0042097E,F4,于是程序来到0042097F的jmp,Shark恒老大说的~大跳,嘿嘿
跳完以后就是一片光明,我等菜鸟心中一顿狂喜。。。OEP!于是按照老大的教程Dump之 附加数据修复:
之前没经验,直接按大牛说的,打开LordPE,点PE Editor,选没修改过的原程序,然后点Sections

就可以看到区段数据(这完本文才发现PEID的PE区段右边的箭头就可以看到区段数据,囧)

很开心,果然和大牛写的数据一样(如果不一样,就要考虑有没有做错,不然的话这文章是学下去的。。。毕竟是04年的文章),
最后一个区段起始是8E00,大小1000,于是按大牛的教学,推测8E00+1000=9E00为附加数据的起始,这时,我们使用WinHex打开源程序,转到9E00
这时,我们就可以看到

这里应该就是附加数据的头了,然后我们选择从9E00到文件结尾的数据

然后用WinHex打开修复好的文件,在文件结尾粘贴0字节(不知道在哪的看上图红框上一行),然后点新填充的那个字节,粘贴复制过来的附加数据然后保存文件,再用peid看一下文件

好像正常,运行一下,

额,强制更新,不给用。。。本想跳过验证的,结果太菜N次下来都没弄好,谁能教教我,囧rz…算了,本来就是按大牛文章学overlay的,既然能运行,应该ok了吧^_^ 不纠结了继续往下学
软件二,某英语速记软件

额,这壳第一次见,不知道是不是强壳,反正直接上Shark恒老大的ESP定律,结果撞墙。。。于是上脚本,无果,N次听在系统领空后提示This is OEP,于是傻眼。无奈,求助万能的Google,终于找到了想要的。。。程序载入后,停在系统领空

直接Alt+F9跑出来,停在下图,然后按照谷哥来的办法,F8往下走,

ESP定律下断后,程序停到了下面这里

F8大跳出去,于是我们看到了阳光

然后记下该记的,Dump之

现在运行,显然不行。。。不过可以先查壳

脱掉了。。。大牛一句“脱壳我就不说了”,俺花了好长时间,泪流…好吧,擦干泪继续看大牛教程,用OD载入Dump后的文件,这时我就想,是否要修复,大牛没说,不过在大牛贴的数据里,发现了蛛丝马迹
有下横,额,那就先修复

ImpREC载入Dump出来的exe,按Shark恒老大的做法,自动查找IAT,获取输入表我擦,一堆无效的,显然直接保存不行,Shark老大没说咋办。。。额,又求谷哥去,发现有人提到1级修复,于是发现右键有1、2、3级修复,喜,于是一个个点开,右键选1级修复,弄了好久,

忽然发现右边一堆按钮,灵光一闪,点无效函数,自动选上了所有无效的函数,然后在任意一个上面右键,选对应的修复,晕,全弄好了,看来我又浪费了不少时间。。。亏我还一个个点了好久
还好1级就全部修好了…转储,于是俺也有了_.exe,继续看大牛的教程准备修复overlay先查区段,的确如大牛所说:4CA00+13724=60124

按照大牛说的,复制过去,和上一个软件一样粘贴到修复好的exe末尾…

记下红框中的数字,这个是附加数据起始,到时候要用…然后另存
用od载入这个有附加数据的exe,下断SetFilePointer后,F9运行,断下后,看右下角堆栈
额。。。13C?和大牛的不一样,而且值这么小,应该不是,于是继续F9,再次断下,依然不是,心里凉了半截,反正到这步了,继续F9好了
阳光啊~ 可耐的60124,我看到你了。按大牛说的,源程序同样办法也可以断下60124,我也试了,的确如此。按大牛所说ATL+F9到返回用户代码,找找这个数字的来源

大牛的代码里直接指名了7C92E4F4是要点,也就是EDX当前的值,然后我们按大牛的要求,找找什么时候给EDX赋值的。因为当前所在是tern,按F8出来看看,

果然没几行代码,都没有EDX,按提示,我们继续跑到retn去

出来一瞧,眼花缭乱,果然在上几行,我们看到了edx00493577.8B15 CC7A4A00mov edx,dword ptr ds:按照Shark恒老大早几天写的走向大牛,这句意思就是将4A7ACC的数据写到edx去,也就是说,我们要去4A7ACC瞧瞧。重新载入程序,在左下角地址那右键,选转到,填入4A7ACC,点OK,去到以后,像ESP定律那样下断,不过那时候老大是用访问,我是选了硬件写入,感觉这样会更准确点(建议清掉之前的断点,不然可能你会又断在SetFilePointer上),F9以后,断在了这里
果然如大牛所说0049349B.A3 CC7A4A00   mov dword ptr ds:,eaxEAX数据写入4A7ACC,但是往上看一句00493496.A1 D07A4A00   mov eax,dword ptr ds:4A7AD0的数据写入EAX,也就是说,4A7ACC实际上是4A7AD0的数据,那我们就要找什么时候写入4A7AD0,于是重复一次刚才干的就是了重载,转到,下断点,F9,我们来到

60124是我们要修改的,但是改多少,改之前附加在文件记下的954368,但是不能改954368,因为这个是十进制的,这里用的是十六进制的,所以要转化为E9000。保存文件,试一下吧,可以鸟~~
水平太菜,弄这文章都弄了很久,反复操作了好多次。。。唉,求老师,没有人问,往往小问题都要搜半天,撞墙都撞到满头包,囧rz...

原版软件下载地址
http://pan.baidu.com/share/link?shareid=1692980553&uk=3893310742
http://pan.baidu.com/share/link?shareid=1689701998&uk=3893310742

克拉克 发表于 2013-6-28 10:58

好吧,LZ辛苦了。+1

baiyunem 发表于 2013-6-28 11:13

{:1_906:}太菜,只能用时间来补救了。。。

小雨细无声 发表于 2013-6-28 11:15

我懒都是用工具,又学一招。

小雨细无声 发表于 2013-6-28 11:18

哇恒大在房地产足球界很牛X,在破解界依旧牛X。

三月的风 发表于 2013-6-28 11:20

948413534 发表于 2013-6-28 11:20

我感觉自己是纯菜鸟啊{:1_936:}

jinyu0727 发表于 2013-6-28 11:27

嘎嘎 看不懂

451290583 发表于 2013-6-28 11:30

oppaboy 发表于 2013-6-28 11:32

白菜鸟学习了
页: [1] 2 3
查看完整版本: 菜鸟学处理附加数据笔记一则