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. Linux Kernel Development有关内存管理

    1 Pages Page的概念来源为处理器Processor的部件MMU(Memory Management Unit),MMU通过设置好的页表(通过设置CR3寄存器,指向页目录所在的物理内存)对内存 ...

  2. HDU 6665 Calabash and Landlord (分类讨论)

    2019 杭电多校 8 1009 题目链接:HDU 6665 比赛链接:2019 Multi-University Training Contest 8 Problem Description Cal ...

  3. springboot上传图片大小限制

    背景:springboot项目上传图片超过1M报错,经了解,springboot默认上传文件1M 需求:更改默认配置,控制上传文件大小 方法:①更改配置文件(经试验不可行,不知道为什么):②更改启动B ...

  4. HTML中<frameset>标签不显示的问题

    啥都不说,先上代码 <html> <head> <title>index</title> <meta content = 'text/html'; ...

  5. mac 常使用的一些小技巧

    全选 command +A 剪切 command + x 复制 ommand + c 粘贴 command + v 撤销 command + z 聚焦搜索 command + 空格 退出全屏窗口 Co ...

  6. ARM TK1 安装ROS- indigo

    之前安装不成功是因为校园网无法访问源的问题. Ubuntu ARM install of ROS Indigo There are currently builds of ROS for Ubuntu ...

  7. vue 外卖app(2) stylus

    1.安装 npm  install stylus   stylus-loader  --save-dev 安装成功 2.编写样式 <style  lang="stylus" ...

  8. TPCx-BB官宣最新世界纪录,阿里巴巴计算力持续突破

    2019年9月17日,TPC官宣Alibaba Cloud MaxCompute认证结果.同月26日,杭州云栖大会阿里巴巴宣布了这一成绩,飞天大数据平台计算引擎MaxCompute成为全球首个TPCx ...

  9. Android中的APK,TASK,PROCESS,USERID之间的关系

    开发Android已经有一段时间了,今天接触到底层的东西,所以对于进程,用户的id以及Android中的Task,Apk之间的关系,要做一个研究,下面就是研究结果: apk一般占一个dalvik,一个 ...

  10. Qt5编译使用QFtp

    使用 QNetworkAccessManager 可以实现 Ftp 的上传/下载功能(参考:Qt之FTP上传/下载),但有些原本 QFtp 有的功能 QNetworkAccessManager 却没有 ...