如何查找应用程序依赖于哪些 DLL ,前面文章有讲到过,大家有空可以看看
最简单的找法
找出哪些可执行文件依赖于哪些 DLL,非常简单且低技术含量的方法。将其中一个可执行文件复制到单独的文件夹并运行它
例如 fzsftp.exe
所以 fzsftp.exe 似乎需要libnettle-7.dll才能执行,那么现在从之前的文件夹复制报错的dll,执行可以看到,ok没有发生错误。当然如果为了进一步确认,可以使用 Process Hacker 之类的工具来检查应用程序加载了哪些模块,并进一步确认dll的加载。
制作代理 DLL
将合法函数调用重定向到原始 DLL,并在后台静默加载我们的 shellcode。
用c#编写的SharpDllProxy应用程序,它会从原始 DLL 中提取的导出函数生成代理 DLL 源代码。
项目地址:
https://github.com/Flangvik/SharpDllProxy
执行之后将创建了一个名为"/output_libnettle-7"的文件夹。
SharpDllProxy 在原始libnettle-7.dll中总共找到了 441 个函数调用,并生成了一个完整的代理 DLL 源代码,将函数调用重定向到 tmp8AA5.dll(只是libnettle-7.dll的副本,重命名)。
最后编译
只需编译保存到D:SharpDllProxyoutput_libnettle-7libnettle-7_pragma.c的源代码即可。
一旦触发 DLL_PROCESS_ATTACH 事件,生成的源代码就会创建一个新线程。然后,“DoMagic()”继续将本地文件“shellcode.bin”中的二进制数据读入内存执行,这里可以自定义代码,大家自行发挥。
整个过程基本这样,是不是挺简单的,干就完事。
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
原文始发于微信公众号(柠檬赏金猎人):SharpDllProxy制作代理dll
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论