- DLL劫持的实现实际上就是DLL的重定向,将原dll中的函数重定向,并选择性的hook一些函数
- 目前发现的实现的方式有
- 静态forward definition
- 静态的forward def都需要复制一份原dll作为forward export的目标
- DLL Wrapper:git@github.com:kevinalmansa/DLL_Wrapper.git
- 生成def文件
- https://github.com/rek7/dll-hijacking
- 生成#pragma命令
#pragma comment(linker, "/export:XXX")
- 动态wrapper的方案可以不需要原DLL,直接单独使用
- 使用VC直接提供的Delay Load
- 直接链接目标DLL的lib文件,并通过/DELAYLOAD开关设置目标dll为延迟加载,随后再将原DLL的导出符号直接导出,即可借用VC自带的delayload实现wrapper
- 可以通过dll-hijacking生成forward definition,并随后将/export:XXX=XXX.XXX,@xxxx,批量替换为/export:XXX,完成上面的流程
- 使用LoadLibrary API强行wrap
- 暂未发现工具