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. PostgreSQL——服务器配置_{postgresql.conf}

    一.设置参数 所有参数名称都是不区分大小写的 值为字符串时,需要单引号 值为数值时不需要单引号,但带单位时,需要单引号 配置文件(如:postgresql.conf.postgresql.auto.c ...

  2. 进程共享变量#pragma data_seg用法

    #pragma data_seg介绍 用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为: #pragma data_seg ("shareddata" ...

  3. centos7.3 编译安装 git 2.13

    安装依赖包 sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 安装 $ ...

  4. 快速列出大纲.提纲.归纳知识点 思维导图工具Xmind

    博客搬迁,给您带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/23/%E5%BF%AB%E9%80%9F%E5%88%97%E5%87%BA%E5%A ...

  5. Java架构师必看的10本书

    1.大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍. 从分布式系统的知识切入,让读者对分布式系统有基本的了解:然后介绍大型网站随着数据量.访问量增长 ...

  6. python 中 random模块的用法

    import random print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 print( random.random() ) # 产生 0 到 ...

  7. web APP 开发之踩坑手记

    屏蔽输入框怪异的内阴影 -webkit-appearance:none 禁止自动识别电话和邮箱 <meta content="telephone=no" name=" ...

  8. day03 mysql外键 表的三种关系 单表查询 navicat

    day03 mysql navicat   一.完整性约束之     外键 foreign key     一个表(关联表: 是从表)设置了外键字段的值, 对应的是另一个表的一条记录(被关联表: 是主 ...

  9. vue生态系统之vuex

    一.webpack生成项目 1.webpack 在需要建立项目的目录中进行初始化项目 E:\vueProject>vue init webpack vuexpj ? Project name v ...

  10. 实时监听input输入情况

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...