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

内核挂钩子

由于每个进程的低2gb 的数据是不同的;所以 在内核挂钩子 因该把 代码 放在 高 2gb。

方法1(申请):

比如 使用前面的 ExAllocatePool(0,size);分配非分页内存,然后把shellcode 拷贝到 非分页内存。

方法2(偷内存):

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

在内核固定 没有使用到的地方 放上我们的 shellcode;;

如:gdtr 中的 空向量。

起始 下面这些都没有使用到,都可以占用:

裸函数注意:

在裸函数中没有自动的 ebp ,esp 开栈 平栈的操作;所以忌讳使用局部变量;当然可以自己管理栈,使用好局部变量。

Hook kifastcallentry

重点结论:注意 当

目标地址 < 当前地址 ; jmp 的偏移 应该是 直接 目标 - 当前 -5;

目标地址 > 当前地址 ; jmp 的偏移应该 是 目标 - 当前 -5;

是一样的; jmp 偏移的基址 是当前指令结束位置

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内存地址到 目标函数

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

8_InlineHook的更多相关文章

随机推荐

  1. hibernate基本配置优化

    前面已经说过hibernate的基本配置了,现在对之前的基本配置进行代码优化: 写一个读取配置工具 package tool; import org.hibernate.Session; import ...

  2. 剑指offer——38二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.   题解: 在搜索二义树中,左子节点的值总是小于父节点的值,右子节点的值总 ...

  3. Java集成开发环境IDEA

    一,安装 1,从http://www.jetbrains.com/idea/download/下载最新的community(free)版本. 2,解压文件 3,进入解压目录下的bin目录 4,执行id ...

  4. python不同包之间调用时提示文件模块不存在的问题

    python对于跨包调用函数时,经常会提示模块不存在的问题,主要是python程序执行时,搜索路径导致的,python程序执行的路径依次是: (1)程序根目录(2)环境变量(3)标准库目标(D:\Py ...

  5. 利用dynamic解决匿名对象不能赋值的问题

    原文:利用dynamic解决匿名对象不能赋值的问题 关于匿名对象 匿名对象是.Net Framework 3.0提供的新类型,例如: }; 就是一个匿名类,搭配Linq,可以很灵活的在代码中组合数据, ...

  6. C语言指针变量的长度

    #include <stdio.h> int main() { /********************************************* * * 指针的长度:不同机器可 ...

  7. No package docker-io available

    新手centos6.8安装docker时从遇到No package docker-io available开始的各种不小心的坑... 新安装了CentOS6.8,准备安装docker,执行命令 yum ...

  8. 2019_8_1python

    #函数 #函数是用来重复使用哒 #定义函数套路 ''' 1.首先要会写出裸代码,然后看看哪里是重复需要使用的 2.接下来将需要重复使用的代码转换成参数,带入到函数中 函数格式 def funcName ...

  9. Mnesia动态添加节点杂记

    FAQ List: 1. 如果动态的添加一个节点到Mnesia cluster中 2. 如何动态的从mnesia cluster中删除一个节点 3. 在一个节点上演示将当前已有的表格分片fragmen ...

  10. Ubuntu's Software

    (1)indicator-sysmonitor & acpi (2)nvidia-prime (3)sogou (4)wps (5)ubuntu-tweak