Ring0和Ring3 HOOK 大检查

1、HOOK SERVICE TABLE:HOOK SSDT 这种方法对于拦截 NATIVE API 来说用的比较多。

SSDT hook,一句话——Windows把需要调用的内核API地址全都存在了

一个表中(System Service Dispatch Table),要想hook一个内核API,比较简单的办法就是把

该内核API在表(SSDT)中保存的地址修改为自己撰写的函数地址。 2、HOOK INT 2E 方法:IDT HOOK

IDT是中断描述表,可以替换其中的中断处理程序。

这种方法对于跟踪、分析系统调用来说用的比较多。原理是通过替换 IDT 表中的 INT 2E 中断,使之指向我们自己的中断服务处理例程来实现的。掌握 此方法需要你对保护模式有一定的基础。 3、 HOOK PE 方法:EAT HOOK 这种方法对于拦截、分析其他内核驱动的函数调用来说用的比较多。原理 是根据替换 PE 格式导出表中的相应函数来实现的。

EAT是可执行文件的导出表,记录DLL中可供其他程序使用的函数,可执行文件装载时会使用相应DLL的EAT表来初始化IAT表,通过替换EAT表中的函数地址,就可以使依赖于本DLL的程序得到一个假的地址。

4.IAT HOOK (ring3 用)

IAT是可执行文件的导入表,记录可执行文件使用的其它DLL中的函数,通过替换IAT表中的函数地址,可以hook相应DLL中的函数调用。

5、Inline Hook方法 (ring 0和ring3 都可以用)

Inline hook的工作流程: 1)验证内核API的版本(特征码匹配)。 2)撰写自己的函数,要完成以上三项任务。 2)获取自己函数的地址,覆盖内核API内存,供跳转。

Inline Hook的缺点: 1) 不够通用。各个windows版本中,内核API的开始一段不尽相同,要想通吃,就要多写几个版

本或者做一个特征码搜索(因为有的内核API在各个版本中非常相似,只是在“特征码”之前或之

后加一点东西)。 2) 已被一些检测工具列入检测范围,如果直接从内核API第一个字节开始覆盖,那么很容易被检

测,如果把覆盖范围往后推,并加以变形,也许能抵挡一气。具体情况,我才疏学浅,尚未试验

6.SYSENTRY hook 为了性能的考虑,xp后的系统都改用sysentry命令来进入ring0,去调用SSDT中的服务,不再是通过IDT中的 int 2E。这也使得我们hook也变得相对容易了。 首先获得sysentry的地址,然后改之,不用再考虑IDT了

7)IRP hook IRP是 I/O request packets,驱动程序中有一系列分发例程来处理请求,这些例程保存在驱动设备对象的数据结构中的一个表中,也很容易替换。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP饭米粒

手把手撸PHP扩展 0x00: 编写config.m4文件

这是一个系列的文章,会逐步带大家去实现一个PHP协程扩展。我们把这个扩展叫做study。

13930
来自专栏Java架构沉思录

细说 Java hashCode

写过 Java 程序的同学一定都知道 hashCode 方法,它是 Object 对象的一个 native 方法。无论是我们平常使用的 HashMap 还是重写...

8620
来自专栏java技术大本营

java练习本(2019-06-27)

C.abstract interface C extends D,E//D、E为已定义的接口{abstract void fun(){};}

9230
来自专栏gojam技术备忘录

计网实验操作记录

在dhcp-config模式下设置地址范围和子网掩码,network x.x.x.x 255.255.255.0

11230
来自专栏PHP饭米粒

手把手撸PHP扩展 0x01: 开发规范

2、全局PHP扩展函数以及扩展方法的参数声明放在study_*.cc、study.cc里面。

11120
来自专栏程序猿声

【CPLEX教程02】配置Cplex的Java环境以及API说明

因为小编一般用的C++和Java比较多,而且现在开发大型算法用这类面向对象的编程语言也方便得多。基于上面的种种考虑,加上时间和精力有限,所以就暂时只做C++和J...

14020
来自专栏视频加密

适合程序嵌入的pdf控件了解

如果开发一个软件,需要用到PDF功能,您的选择是基于Adobe PDF吗? 如果是基于Adobe PDF,需要用户安装一个几十M的Adobe的安装包,这显然是不...

14400
来自专栏PHP饭米粒

手把手撸PHP扩展 0x02: 整理文件

在开发之前,我们先对项目的文件以及文件的内容进行整理,让结构更加的清晰。整理的依据是开发规范。

10330
来自专栏C语言入门到精通

7.5 变量的存储方式和生存期

4、全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。

10220
来自专栏技术探究-前端、Python、爬虫、数据分析、工具

【前端攻略--HTML/CSS】html 文档流的理解

理解好文档流,有助于我们对css中定位和浮动的理解。什么是文档流呢,经过我看过的一些文章,加入自己的理解。我得出文档流的定义如下:

14820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励