8_InlineHook
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个字节
计算偏移 是最重要的;
注意 步骤:
计算到目标code 的偏移 (或者直接使用寄存器)
将当前位置的 opcode 修改 为跳转 指令 char * [] = {0xe9,0x.....0x..}
然后在目标地址那个做好处理后 最好将 执行流 交换原来的执行流;所以再计算偏移(或使用寄存器)跳回去;
f7 单步调试触发 的是 idt 里面的 1号处理
使用 pchunter 查看idt 里面的序号为 1 的向量的地址;然后 使用ida 调试 查看;
hook;
大致如下:
程序1 : 挂钩gdt内存地址到 目标函数
程序2 :hook 逻辑操作 代码:
8_InlineHook的更多相关文章
随机推荐
- GIT 学习第二天 (二)
工作区和暂存区 工作区: 就是你在电脑里能看到的目录,比如:webgit 文件夹 就是一个工作区 版本库: 工作区有一个隐藏目录 .git ,这个不算工作区,而是Git的版本库 Git的版本库里存了很 ...
- 剑指offer——48把数字翻译成字符串
题目要求: 给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”.一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcf ...
- Linux的各个发行版本(二)
CentOS CentOS是世界上使用的最好的Linux服务器发行版之一,占了全世界Linux服务器的30%. 它是Red Hat 的衍生产品,提供了稳定的服务器环境. 特点: 支持的X86-64架构 ...
- 42-Ubuntu-用户管理-07-修改权限命令介绍
修改文件权限 序号 命令 作用 01 chown 修改文件/目录拥有者 02 chgrp 修改文件/目录所在主组 03 chmod 修改文件/目录权限 chmod chown chgrp ...
- 使用jQuery的datetimepicker插件
因为后台系统要使用年月日时分的设置,又因为使用的Bootstrap框架只有datepicker和timepicker控件.所以在jQuery库中找到轻量级的datetimepicker插件,很好地解决 ...
- Loop Sql
-- Numeric FOR loop -- set serveroutput on -->> do not use in TOAD -- DECLARE k ; BEGIN .. LOO ...
- nodejs mysql 连接数据库
1.设计数据库 2.设计数据库表 3.下载MySQL模块 npm install --save mysql 4.编写代码 const mysql=require('mysql'); //1.连接 // ...
- Vue Router高级
路由组件传参 通过props解耦 const User = { props: ['id'], template: '<div>User {{ id }}</div>' } co ...
- 安装和使用pyspider框架时遇到的问题
安装pyspider, 直接cmd中输入 pip install pyspider, 而后提示报错 从网上找到解决方法,pycurl需要根据python版本采用wheel方法安装. 下载链接为http ...
- Springboot文件上传限制
#100,000,000 100M spring.servlet.multipart.max-file-size = 100000000 spring.servlet.multipart.max-re ...