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的更多相关文章
随机推荐
- 调试口:JTAG与SW-Debug Port
- JAVA 实现数据导入Phoenix
需要导入的jar 包有: 实现代码: package cn.test; import java.sql.Connection; import java.sql.DriverManager; impor ...
- log4j.properties的详细配置
log4j.properties的详细配置 log4j.properties的maven配置 <dependency> <groupId>org.scala-lang</ ...
- pytest-mark跳过
import pytestimport sysenvironment='android' @pytest.mark.skipif(environment=="android",re ...
- C语言结构体数组
#include <stdio.h> int main() { /*************************************************** *结构体数组:数组 ...
- BBS论坛 文章详情、点赞、评论
六.文章详情.点赞.评论 文章详情页面: def article_detail(request, username, article_id): # user_obj = models.UserInfo ...
- Ubuntu 常用软件记录【持续更新】
主机之间通信 Shell 管理器: asbru-cm 文件传输工具: filezilla 虚拟化 Virtual box
- Oracle之视图联合查询加排序问题
在公司修改bug,有这样的需求:需要从两张视图中查出相同字段的数据,按照导师姓名先排序,再按照学号排序 union联合两张表,SELECT * from((SELECT DS_ID,PYLX_ID,Y ...
- 现如今,最热门的13个Java微服务框架
曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...
- github合并分支到master
(1)切换到master分支 git checkout master (2) 将backup分支的代合并到master git merge backup (3) 查看状态 git status (4) ...

