首页
社区
课程
招聘
[旧帖] [原创]DLL脱壳中修复重定位表的新思路 0.00雪花
2011-8-29 15:35 3494

[旧帖] [原创]DLL脱壳中修复重定位表的新思路 0.00雪花

2011-8-29 15:35
3494
加密与解密第三版中,修复重定位表大概用以下方法:
第一步:
首先需要获取需要重定位的各个RVA地址,保存在一个连续的数据块(bin文件)中。以DWORD的0作为结束。可以通过对外壳加补丁做到这点,参见351页。(感觉纯用OD脚本更方便)
第二步:
然后利用ReloREC工具,将BIN文件拖入界面,然后点击Fix Dump按钮选择DLL文件来修复定位表。

在第一步中,需要跟踪外壳代码中对定位表的处理。因此可能要面对许多讨厌的杂乱的ANTI-DEBUG。
于是我想出个新办法,不必跟踪外壳代码。可一步算出需要重定位的RVA地址。

我们知道,DLL每次加载的地址可能是不同的。我们设法让DLL加载在2个不同的虚拟地址中,然后分别DUMP出2份DLL文件。只要比较这2份DLL文件的不同,就可以得出需重定位的RVA地址了。
那么如何让DLL加载在不同的地址呢?可以修改PE文件头中默认的加载基址。
如果外壳有自校验的话,也可以在不同的虚拟机中加载。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞5
打赏
分享
最新回复 (7)
雪    币: 1
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
怪蜀黍 2011-8-29 15:40
2
0
嗯 思路不错
雪    币: 90
活跃值: (82)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
东方容克 2011-8-29 15:48
3
0
类似的方法也可以用于寻找IAT。
尤其是外壳HOOK-API时。

能得到邀请码吗?
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wawt 2011-8-29 15:50
4
0
mark!继续学习中!
雪    币: 90
活跃值: (82)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
东方容克 2011-8-30 01:04
5
0
对穿山甲的变形膨胀代码,没有人写个自动清理工具什么的吗?不难的吧。
一是去除无用指令;
二是指令的整合。
三是跟踪指令流程,去除杂乱的JMP
雪    币: 90
活跃值: (82)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
东方容克 2011-8-30 01:11
6
0
如何判断指令是无效的?

一,根据是否写内存。
二,是否调用API。
....

如何整合指令。
一,根据对堆栈的操作。
二,前后寄存器的比较。
....

肯定是个复杂的深度递归的算法...

很多地方和编译器是反着来的。如果熟悉编译器原理和离散数学,搞这个算法不是不可能把。
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
klclkk 2011-8-30 10:52
7
0
那书我怎么就看不懂嗫
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
habushiwoa 2011-8-30 11:54
8
0
如果能制作一个工具,具体的实现它,应该是个好东西!
游客
登录 | 注册 方可回帖
返回