180222 逆向-脱壳技术(5)

1625-5 王子昂 总结《2018年2月22日》 【连续第509天总结】
A. 脱壳技术(5) DLL文件脱壳
B.

DLL文件脱壳

简介

Dll是Dynamic Link Library动态链接库的缩写,它与EXE同属PE文件,结构大体相同
但由于无法独立运行,必须借助exe来导入加载,因此相比exe的动态调试起来要麻烦一些

另一方面由于加载基址不定(EXE的加载基址默认都是0x400000),因此需要考虑重定位表的问题

寻找OEP

当DLL被初次映射到进程的地址空间中时,首先调用入口函数DllMain。并且退出时还会再次调用DllMain函数。

外壳由于需要解密原程序的代码,因此之前的若干方法都是一样使用的。
值得注意的是外壳的DllMain需要执行两次,因此可以通过这个特点来进行观察,当Dll卸载的时候最后调用的就是DllMain函数了

由于Dll的基址是由系统动态分配的,因此每次下断的地址都是不同的

Dump和输入表的重建与exe方法相同,再次不赘述,通过工具可以很方便地操作

构造重定位表

对于DLL来说,由于基址不定,导致API的地址是不定的,因此重定位表是必须的。
本来由PE加载器来完成的重定位地址,由于加载时原程序代码未恢复,因此只能由外壳程序来代替进行重定位工作。因此此时的重定位表就会被放到另外别的地方去,并可能被加密/编码等

脱壳时要恢复重定位表,需要根据外壳程序的重定位工作来找到重定位表并修复还原

C. 明日计划
脱壳技术(6)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值