吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 28035|回复: 77
收起左侧

[原创] PESpin1.32学习笔记之API Redirection的处理

[复制链接]
ximo 发表于 2008-12-24 19:50
引:
“一个有信念者所开发出的力量,大于99个只有兴趣者”

本文章主要讲述PESpin1.32的API Redirection的处理方法,加壳选项如图:

1.GIF

而试炼品依然为98记事本.

OD载入程序,F8单步2次后,即可使用ESP定律法

2.GIF

下完硬件断点后,SHIFT+F9运行,来到下面的地方。(为了方便后面的调试,ESP处的硬件断点暂时不要删除!)

3.GIF

接下来F8单步走,即可来到OEP!

4.GIF

OEP:
5.GIF

来到OEP后,很明显的发现,API被重定位了。
众所周知,98记事本是个VC++的程序,当然,从入口代码来看,也很显然是VC++的入口点。
随便找个VC++的程序,即可知道,代码:
004010D3    FF15 E80E4100        call dword ptr ds:[410EE8]

处应该调用一个系统API函数。而具体为什么函数,也可以靠经验去猜测。

当然,也可以这么看,跟入这个CALL,去看下里面的东西:

跟随后可以发现下面的代码:

6.GIF

其实,有经验的朋友一眼就能发现,此API函数即为GetCommandLineA
当然,此试炼品为98记事本,找未加壳的程序比对下:
004010D3   
FF15 E0634000        call dword ptr ds:[<&KERNEL32.GetCommandLineA>]    ; kernel32.GetCommandLineA

也可知,此API函数为GetCommandLineA

好,知道了此函数,就方便了我们的调试
CTRL+F2,重新载入程序
在数据窗口处CTRL+G,输入GetCommandLineA

7.GIF

然后,下硬件访问断点

8.GIF

下完断点后,SHIFT+F9运行,5次后,取消该硬件断点

9.GIF

然后F8结合F7一路走,直到来到代码
mov dword ptr ds:[edi],eax的地方

10.GIF

而此处,即为最佳的patch代码的地方!

由于离OEP最近的哪个API不一定是RVA的起始位置,为了把所有的API都处理,故在此处先下个硬件执行断点,接着CTRL+F2重新载入程序,接着SHIFT+F9,再次来到这个最佳地点!
来到后,我们找块空地,patch代码
我们可以用隐藏OD的插件来申请一段空地

11.GIF

申请的新空间的地址为00930000

12.GIF

然后先记录下patch地址处的原始代码:
0040D18A    8907                 mov dword ptr ds:[edi],eax              ;
0040D18C    EB 02                jmp short NotePad_.0040D190

二进制代码为:
89 07 EB 02

然后,把0040D18A处的代码修改为
Jmp 00930000

然后来到00930000处patch我们的代码
具体的代码为什么,我们来看堆栈处:
在堆栈的EIP的所在处往上找

13.GIF

可以发现,出现了SHELL32这个系统DLL,那具体的偏移地址为多少呢?我们可以双击EIP处的地址栏,就会出现以EIP处为原点的偏移值

14.GIF

由于堆栈所指向的值为ESP的值,故此处应为ESP-3C
而下面一行ESP-38的值为偏移大小
也就是说,真正的地址为
Address=[ESP-3C]-[ESP-38]
以此函数为例,真正的地址=7D6110D7-0000000F=7D6110C8

所以patch如下代码:

mov eax,[esp-3c]
sub eax,[esp-38]

接着就输入刚才记下的原始代码:
mov dword ptr ds:[edi],eax
jmp 0040D190
全部二进制代码如下:
8B 44 24 C4 2B 44 24 C8 89 07 E9 81 D1 AD FF
Patch完代码后,在第一行下F2断点,接着SHIFT+F9运行
断下后,F8,2次后,即可在寄存器窗口的EAX值处看到正确的API函数了

15.GIF

16.GIF

OK,被重定位的API全部回来了,好极了!下面就取消所有除了原始的ESP处的那个断点,
SHIFT+F9运行,中断后,F8单步走,即可顺利来到OEP了!
而此时可以发现,OEP处,所以的API都回来了

17.GIF

哈,下面就可以dump程序了。
然后用Import REC修复
修复时可能会出现下面的问题
输入OEP的值10CC后,会出现下面的错误

18.GIF

可以用下面的方法来解决。
右键----高级命令------获取API调用,然后按确定就OK

19.GIF

按确定后,会发现,所有的IAT都出来,而且全部有效

20.GIF

最后就是转存修复了。当然也得注意2个问题
(1)        别忘了把OEP处的值修正为10CC
(2)        改下Import-REC的选项,如下图

21.GIF

最后,转存修复!然后程序就能正常运行了!

30.GIF

脱壳过程到此结束!

总结一下:脱壳的过程并不难,关键是如何定位和找到最佳的patch地点,以及如何自己patch代码,由此可见,汇编基础的重要性!应验了某大牛的一句话:不会汇编的人,学脱壳破解永远是菜鸟。同时,也要注意下Import-REC的几个使用下技巧!

引:
今日复今日,今日何其少!今日又不为,此事何时了!人生百年几今日,今日不为真可惜!若言姑待明朝至,明朝又有明朝事。为君聊赋今日诗,努力请从今日始。
------文嘉《今日诗》

珍惜时间,珍爱生命,努力学习,努力拼搏!

作者:ximo[LCG]

[ 本帖最后由 ximo 于 2008-12-24 19:51 编辑 ]

PESpin学习笔记.rar

271.79 KB, 下载次数: 157, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2威望 +5 收起 理由
wgz001 + 3 精品文章
小生我怕怕 + 2 支持超兄!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小生我怕怕 发表于 2008-12-24 20:03
支持超兄的教程!
什么也不是 发表于 2008-12-24 20:09
[s:216]
膜拜大牛 还是喜欢你的视频教程 看起来让人更懂 [s:208]
creantan 发表于 2008-12-24 20:17
学习学习。。。。。。



今日复今日,今日何其少!今日又不为,此事何时了!人生百年几今日,今日不为真可惜!若言姑待明朝至,明朝又有明朝事。为君聊赋今日诗,努力请从今日始。[s:357]
zzage 发表于 2008-12-24 20:28
终于发出来了...[s:17]
超神~
tianxj 发表于 2008-12-24 20:58
偶像,出个录像吧
傻人有傻福 发表于 2008-12-24 21:13
徐老师就是强啊o(∩_∩)o
520crack 发表于 2008-12-25 00:50
学习啊
wgz001 发表于 2008-12-25 02:24
“路漫漫其修远兮,我将上下而求索”
膜拜了
w3700473 发表于 2008-12-25 13:58
视频看不了 55555555
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表