吾爱汇编论坛

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 18157|回复: 191

[原创逆向图文] 探讨DLL脱壳

  [复制链接]

  离线 

李沉舟 发表于 2018-2-17 16:20 | 显示全部楼层 |阅读模式


无聊翻悬赏贴发现有悬赏脱DLL壳的,⊙﹏⊙b汗。其实只是多加了一个重定位表的修复工作。

下面这段话是我从罗云斌的汇编书里面直接复制出来的。在原书PE结构,重定位一节中可以看到原文。

[Asm] 纯文本查看 复制代码
在开始分析重定位表的结构之前需要了解两个问题:第一,对一条指令进行重定位需要
哪些信息;第二,这些信息中哪些应该被保存在重定位表中。下面举例来说明这两个问题。
作为例子,现将 13.4.2 节中的那段代码搬回来:
:00400FFC 0000 ;dwVar 变量
:00401000 55 push ebp
:00401001 8BEC mov ebp, esp
:00401003 83C4FC add esp, FFFFFFFC
:00401006 A1FC0F4000 mov eax, dword ptr [00400FFC]  ;mov eax,dwVar
:0040100B 8B45FC mov eax, dword ptr [ebp-04] ;mov eax,@dwLocal
:0040100E 8B4508 mov eax, dword ptr [ebp+08] ;mov eax,_dwParam
:00401011 C9 leave
:00401012 C20400 ret 0004
:00401015 68D2040000 push 000004D2
:0040101A E8E1FFFFFF call 00401000  ;invoke Proc1,1234
其中地址为 00401006h 处的 mov eax,dword ptr [00400ffc]就是一句需要重定位的指令,
当整个程序的起始地址位于 00400000h 处的时候,这句代码是正确的,假如将它移到
00500000h 处的时候,这句指令必须变成 mov eax,dword ptr [00500ffc]才是正确的。这就意
味着它需要重定位。
让我们看看需要改变的是什么,重定位前的指令机器码是 A1 FC 0F 40 00,而重定位
后将是 A1 FC 0F 50 00,也就是说 00401007h 开始的双字 00400ffch 变成了 00500ffch,改
变的正是起始地址的差值(00500000h-00400000h)=00100000h。
所以,重定位的算法可以描述为:将直接寻址指令中的双字地址加上模块实际装入地址
与模块建议装入地址之差。为了进行这个运算,需要有 3 个数据,首先是需要修正的机器码
地址;其次是模块的建议装入地址;最后是模块的实际装入地址。这就是第一个问题的答案。
在这 3 个数据中,模块的建议装入地址已经在 PE 文件头中定义了,而模块的实际装
入地址是 Windows 装载器确定的,到装载文件的时候自然会知道,所以第二个问题的答案
很简单,那就是应该被保存在重定位表中的仅仅是需要修正的代码的地址。
事实上正是如此,PE 文件的重定位表中保存的就是一大堆需要修正的代码的地址。



我们修复重定位表可以有哪些思路呢?
可以发挥一下脑洞想想,比如找到壳模拟重定位的相关代码,Patch得到一份完整的重定位表。再往前推,还有一种方法是让DLL加载到不同的基址,然后分别DUMP出来,比较一下就能找到要修复的地址。

以UPX为例,演示一下第一种方法。第二种方法就没什么好讲的了(

工具有OllyDbg,内存管理插件,ILLY插件,UPX壳,Reloc Fix(主题需要审核,我发帖的时候还没审核通过,点开我个人资料在主题里面找一下吧)
游客,如果您要查看本帖隐藏内容请回复


评分

参与人数 22威望 +1 HB +63 THX +17 收起 理由
侠客行 + 1
车太震 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
lies + 1
拿着雪糕 + 1 + 1
消逝的过去 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
hetao8003200 + 1
h112233h456 + 1
EMT + 1 + 1
vawa1900 + 1 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
菜鸟中的菜鸟 + 3 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
方长 + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
幽灵and九幽 + 3 + 1 能不能把OD或者插件打包一下
轮回v + 6 + 1 感谢分享干货 真正的技术贴咋评分这么少
tony2526 + 1 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
1106541927 + 2 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
DDK4282 + 3 + 1 [快捷评语] - 评分=充满爱,感谢您的作品!
zzzxc123 + 2 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
皆笑谈 + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
影风 + 2 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
syzh802618 + 1 + 1 [快捷评语] - 2018,狗年发发发,狗年旺旺旺!
Shark恒 + 1 + 30 + 1 [快捷评语] - 悬赏杀手主题,额外增加10HB,感谢热心解答!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  在线 

Shark恒 发表于 2018-2-17 17:08 | 显示全部楼层


沉舟童鞋,这个悬赏链接是什么,如果方便的话,写在主题前面,方便大家学习。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   50%

syzh802618 发表于 2018-2-17 21:30 | 显示全部楼层


感谢楼主分享!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   90%

YAN742347999 发表于 2018-2-17 21:36 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   70%

zaq123456 发表于 2018-2-17 22:06 | 显示全部楼层


感谢楼主分享!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   66.67%

孙悟空大仙 发表于 2018-2-17 22:38 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   80%

moont 发表于 2018-2-20 19:53 | 显示全部楼层


学习学洗dll
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   3.33%

谁伴我闯荡 发表于 2018-2-20 20:06 | 显示全部楼层


来看看是什么东西
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   36.67%

topcookie 发表于 2018-2-20 20:59 | 显示全部楼层


对dll很懵逼
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

升级   83.33%

569121786 发表于 2018-2-20 21:15 | 显示全部楼层


感谢楼主分享!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编论坛(www.52hb.com)所发布的破解补丁、注册机、逆向教程、逆向文章等,包含但不限于上述内容,仅限用于学习和研究目的,不得用于非法途径或商业行为。否则,一切后果请用户自行承担。本站内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如果您喜欢某程序,请购买正版,支持正版,获得正版优质服务。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@iCloud.com
站长微信:SharkHeng


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编论坛 ( 京公网安备11011502005403号 , 京ICP备20003498号 )

GMT+8, 2022-5-22 23:16 , Processed in 0.418611 second(s), 75 queries .

Powered by Discuz!

吾爱汇编论坛 www.52hb.com

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