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的更多相关文章
随机推荐
- source insight和vim同时使用
https://blog.csdn.net/wangn222/article/details/72721993 1.Source Insight中,Options->Custom Command ...
- POJ 1265 Area (Pick定理 & 多边形面积)
题目链接:POJ 1265 Problem Description Being well known for its highly innovative products, Merck would d ...
- MFS分布式文件系统【3】存储节点 CHUNK SERVER 部署
[root@ky_hs_252 mfs-1.6.27]# mkdir /usr/local/mfs [root@ky_hs_252 mfs-1.6.27]# useradd mfs -s /sbin/ ...
- JAVA集合--Iterator接口
本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/cartoon-blog 上一篇文章中我在集合元素的遍历中已经有涉及到I ...
- python库argparse中type的新奇指定方法
最近在看一些项目的源码,总是能学到好多东西. 关于arparse中type的类型指定 不止可以指定常规类型,还可以加一些自己类型判断,具体用法如下(来源): def str2bool(v): &quo ...
- GP下CalculateField的用法
以前用过这个类做字段计算,许久不用有些忘却,记录一下使用方式 public static void CalculateField(IFeatureLayer featureLayer,IField f ...
- 一行代码在 .NET Core 中快速使用 log4net
原文:一行代码在 .NET Core 中快速使用 log4net 1. .NET Core 控制台程序中使用 第一步:添加引用 Install-Package log4net 第二步:将附件 LogH ...
- linux每日命令(1):gzip命令
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用. gzip不仅可以用来压缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流 ...
- python 编写暴力破解mysql用户名密码
本文摘自别人的,自己运行调试了一下#!/user/bin/env python#-*- coding:utf-8 -*- import pymysql#导入连接数据库的模块import sys cla ...
- 24. Java SE 、 Java EE 、JavaME 、 JavaWeb 直接的区别和联系
这个是在别人博客抄的,并不是本人撰写 Java是一门编程语言.Java分为三大版本,SE即标准版,包含了Java核心类库,主要用来开发桌面应用:EE即企业版,包含SE,又有扩展部分(Servlet,J ...