前言:
- 之前有人发过帖子:【原创】对应PEB、TEB、断链隐藏的一点小分析,这个是利用PEB断链进行的Dll伪装。
- 而本贴使用了另外的一个诡异的方案来实现这些东西,这个方案本质上是实现了Dll的替换加载。
正文:
- 实现原理:加载Dll的时候系统会使用ZwOpenFile进行打开Dll文件,此时,我们只需要hook了ZwOpenFile函数,然后进行简单的替换就可以实现替换加载Dll了!
- 实现图:
- Hook处理部分:
- 查看其Dll列表,发现连列表中的路径也是错误的,这是因为我们只替换了Dll加载时被打开的句柄,R3下系统仍然以为我们加载的main.e,实际上main.e更不不可能用LoadLibrary加载起来,真正加载的是“测试Dll.dll”(在PCHunter中可以看到这个Dll被标红)
PS:
- 我们不能只局限于伪装加载文件系统上的Dll,也可以尝试内存加载Dll用这个方法进行替换,不过处理文件句柄这个坑我实在没法处理,就摆烂了。