Dll导出函数劫持通用方法

问题发现

dll劫持是一种常见的攻击方法,但是也可以用在不知道程序源码的情况下调试dll的函数。之前在滴水教程的视频中注意到一个问题,视频作者演示了一个劫持messagebox函数,打印输出参数的过程,当时学生提问是否存在一种通用的方法可以劫持所有的函数,当时视频作者回答是无法做到。最近有些空闲想到了这个问题,觉得从模块化的角度来讲,应该存在一种可以劫持所有dll函数的方法。所以在此尝试,尝试后发现了一种伪造dll的通用方法,使用这中方法,可以通过脚本的方式,实现任意一个dll的伪造。

劫持方法

劫持思路

本文采取的方式为新建一个dll,新建的dll满足一下特点:

1.导出原dll所有的函数
2. dll的名称和原dll相同
3. 所有原dll的导出函数都有对应的实现

这样在应用程序中就无法分辨自己加载的dll是原本合法的还是伪造的。当然,此方法仅限于不检查签名的dll。

可能问题

1.函数的返回类型未知

个人见解:从汇编的角度讲,函数的返回类型在汇编语言的运行过程中是未知的,返回值大都存储在eax中,主程序则根据设定的不同,去使用函数返回的eax的值。因此,我们如果在自己的函数中,让真正的函数去执行,那么返回值就无所谓了。
2.函数的参数未知

个人见解:从汇编的角度讲,函数的参数列表只是在调用的时候,为调用者提供一个压栈的顺序。在函数调用的过程中,函数调用者负责压栈参数,函数的执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值