实现原理:加载Dll的时候系统会使用ZwOpenFile进行打开Dll文件,此时,我们只需要hook了ZwOpenFile函数,然后进行简单的替换就可以实现替换加载Dll了!
实现图:
Hook处理部分:
查看其Dll列表
,发现连列表中的路径也是错误的,这是因为我们只替换了Dll加载时被打开的句柄,R3下系统仍然以为我们加载的main.e,实际上main.e更不不可能用LoadLibrary加载起来,真正加载的是“测试Dll.dll”(在PCHunter中可以看到这个Dll被标红)
我们不能只局限于伪装加载文件系统上的Dll,也可以尝试内存加载Dll用这个方法进行替换,不过处理文件句柄这个坑我实在没法处理,就摆烂了。