序:
我只想说~~再不发帖老大就 不搭理我了~~~
原因:玩保护玩到了 XINGCODE3 就他的各种检测就让我不得不重视这个问题了:o:
各种窗口 各种X 我的工具 让我忍无可忍,就决定先HOOK了在说其他 最开始我用TA 的代码里面的 HOOK 方法 在 挂钩 NT 内核中的函数算是无往不利 在SHADOWSSDT中就蛋疼菊花紧了~~
于是 开始自己搞:mad::mad:
我们要做的就是
得到KeServiceDescriptorTableShadow的地址 然后根据这个玩意儿得到函数地址 再inline hook!
大家要说了为什么不直接利用表HOOK 我就像说一句 太麻烦 要找一个在同一4GB 的内存空间做代理函数 还要二级跳 何必呢:D::D::D:
HOOK 方式 使用汇编引擎得到一个不截断的大于等于14字节的可存放JMP 的长度
然后COPY 这个一片内存 复制到代理函数的开头 我用的汇编文件 给他30 个NOP 怎么都够了
然后 进入过滤函数 最后决定是跳回去执行还是这里就返回了
下面这个函数是获取 指定shadowssdt中指定index的项的函数地址
ULONG64 ssdt_GetSSDTShaDowFuncX64(ULONG serviceID){
PKSERVICE_TABLE_DESCRIPTOR SSDTShadow;
PULONG W32pServiceTab
我只想说~~再不发帖老大就 不搭理我了~~~
原因:玩保护玩到了 XINGCODE3 就他的各种检测就让我不得不重视这个问题了:o:
各种窗口 各种X 我的工具 让我忍无可忍,就决定先HOOK了在说其他 最开始我用TA 的代码里面的 HOOK 方法 在 挂钩 NT 内核中的函数算是无往不利 在SHADOWSSDT中就蛋疼菊花紧了~~
于是 开始自己搞:mad::mad:
我们要做的就是
得到KeServiceDescriptorTableShadow的地址 然后根据这个玩意儿得到函数地址 再inline hook!
大家要说了为什么不直接利用表HOOK 我就像说一句 太麻烦 要找一个在同一4GB 的内存空间做代理函数 还要二级跳 何必呢:D::D::D:
HOOK 方式 使用汇编引擎得到一个不截断的大于等于14字节的可存放JMP 的长度
然后COPY 这个一片内存 复制到代理函数的开头 我用的汇编文件 给他30 个NOP 怎么都够了
然后 进入过滤函数 最后决定是跳回去执行还是这里就返回了
下面这个函数是获取 指定shadowssdt中指定index的项的函数地址
ULONG64 ssdt_GetSSDTShaDowFuncX64(ULONG serviceID){
PKSERVICE_TABLE_DESCRIPTOR SSDTShadow;
PULONG W32pServiceTab