Ntdll Unhooking POC
又是受到别的项目启发
https://github.com/trickster0/LdrLoadDll-Unhooking
这个项目采用了构造函数并跳转的方式进行脱钩
但是针对不同的函数又需要一系列定制的手段
本项目提供了一种思路,以通用方式构造中转函数
仅讨论实现思路,具体效果不在此讨论范围
具体实现思路:
假设需要调用ntdll里A函数:
1.读取ntdll.dll文件里的函数A
2.读取内存ntdll里的函数A
3.判断这两个的函数前两个字节是否相等
4.若相等则判定为未被hook直接返回内存中的地址
5.若不相等遍历对比前几个字节直到第n个字节相等
6.构造中转函数,将前n个字节填充成ntdll文件内的内容,后面为jmp跳转指令跳转回内存中对应位置