| 动画介绍:教程中所使用到的工具:
1.OllyDBG
2.Peid 0.94
好了,接下来我们OD载入,FSG 2.0 这个是我刚刚加好的壳.o(∩_∩)o...[软件还在这里呢]
UnFSG20+汉化 , 好了,我们先查壳,一会再载入咯,
三次扫描断定程序为:FSG 2.0 -> bart/xt 壳
OD载入,这里我就少说点废话吧,看好操作咯。
00400154 > 8725 EC444100 XCHG DWORD PTR DS:[4144EC],ESP 0040015A 61 POPAD 0040015B 94 XCHG EAX,ESP ; FSG_2_0.004144F0 单步跟踪F8到此。
地址 数值 注释
004144F0 004001E8 FSG_2_0.004001E8 004144F4 004001DC FSG_2_0.004001DC 004144F8 004001DE FSG_2_0.004001DE 004144FC 004010CC FSG_2_0.004010CC 鼠标点击,右键,数据窗口跟随,
然后这里看我操作吧,也就是ESP定律了。这里要说一下哦,和我们平常使用的方法稍微有点变化。。
右键,断点,设置硬件执行断点,然后F9运行,?????看不懂,郁闷,不管了。删除断点,
这里我们可以使用OD的功能,看,到达程序的OEP了。接下来脱壳吧,o(∩_∩)o...。
脱壳后(10CC) 10CC 就是程序的OEP 了。我们来打开脱壳的程序看看是否能成功运行。
无法定位程序输入点 RegQueryValueExA 于动态连接库 kernel32.dll上。
郁闷,就是不行咯。我们来修复看看,哦,忘了,这里还用到一个工具,当然就是IM输入表重建程序.
OEP处填写10CC,37个指针,脱壳后(10CC)_ 1次修复过后,运行看看, - -! 糟糕哦,
呵呵,接下来就是重点了。修复, 看我操作吧,
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; kernel32.GetCommandLineA
Ctrl+G 输入 004063E4 当然我们如果选择其他的也可以
例如:
00401101 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; USER32.CharNextA
这里我们就Ctrl+G 输入 004064F4 咯.好了.废话不易多说.
开工,小小失误,接下来,鼠标往上拉,找到全0的地方,ok,这么快就找到了.
呵呵,接下来我们就可以成功脱壳咯.打开IM,输入OEP
其实这里就是RVA大小出错了.okok,废话太多了.谁叫我担心你们学不会呢,
o(∩_∩)o....RVA后面的4个数字更改为:62E4,这里大家可以自己去计算的.
直接默认1000得了.获取输入表,不要点自动查找IAT,然后,显示无效的,这里还有这么些无效的..
俺们就剪切掉,接下来修复转存文件,脱壳后(10CC)__ 这个就是经过我们2次修复的软件了.
可以打开,未修复的不行,修复1次的被我删除了,我们来查壳,ok./.
脱壳后:Microsoft Visual C++ 6.0 SPx Method 1
好了.如果大家有什么不懂的,可以多看几遍,其实脱壳破解挺简单的,就是需要耐心耐心+耐心.. |