/JmpUnhook

Ntdll Unhooking POC

Primary LanguageGo

JmpUnhook

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跳转指令跳转回内存中对应位置