1 shellcode低2Gb警告、应使用高2GB 稳定 :

内核挂钩子

方法1(申请):

方法2(偷内存):

注意: 偷的时候 看一下 页属性 是否可读可写可执行

裸函数注意:

Hook kifastcallentry

重点结论:注意 当

jmp 寄存器 和call寄存器一样 也 不需要计算什么偏移;寄存器是什么就跳到什么。

push 0xAddr;ret 也不需要 计算偏移;但是需要 6个字节;计算偏移的需要5个字节

计算偏移 是最重要的;

注意 步骤:

  1. 计算到目标code 的偏移 (或者直接使用寄存器)

  2. 将当前位置的 opcode 修改 为跳转 指令 char * [] = {0xe9,0x.....0x..}

  3. 然后在目标地址那个做好处理后 最好将 执行流 交换原来的执行流;所以再计算偏移(或使用寄存器)跳回去;

f7 单步调试触发 的是 idt 里面的 1号处理

使用 pchunter 查看idt 里面的序号为 1 的向量的地址;然后 使用ida 调试 查看;

hook;

大致如下:

程序1 : 挂钩gdt内存地址到 目标函数

8_InlineHook-LMLPHP

程序2 :hook 逻辑操作 代码:

8_InlineHook-LMLPHP

05-13 01:22