硬件hook

3 篇文章 0 订阅
2 篇文章 0 订阅

硬件hook的技术

1,用来脱壳。

2,游戏辅助。

3,反调试。

什么是线程?什么是EIP?

EIP是指向下一个执行的代码,是寄存器

进程是不能执行的,不能跑起来。我们的进程能执行是线程来进行辅助。宿主(进程)和寄宿者(线程)二者关系。

cpu存在线程,在操作系统,线程是全局概念。

线程上下文。即时不时运行。

#include < iostream > #include <windows.h> using namespace std;

int main() { CONTEXT ctx; GetThreadContext(GetCurrentThread(),&ctx); system("pause");

}

硬件断点(调试寄存器)

DR7寄存器最重要,DR中地址数值异常OD就会接管并暂停。

DR7是决定DR0中地址是否执行。

DR6决定字节

推荐书籍《软件调试》

专业的话来说就是通过对地址调试寄存器写值构造异常中断,然后调试

我们用veh,让程序异常,然后跳转到处理异常的函数,然后让程序接着向下执行。

crc检测(下断点,程序立马死掉)

1,用途,防破解

具体实现校验综合。

OD中f2断点是什么断点

cc断点。一、 1.F2断点:普通断点、CC断点、int3断点 2.为什么叫CC断点呢? 可以通过调试看出来,我们在一个指令上下断点, 例如:je xxxx指令,这个指令机器码是74 01 我们在这里下断点 指令所在内存是0040101A,内存处存放的完整数据是74 01 C3 A1 然后我们将这条指令对应内存地址的内容复制到寄存器内:mov eax [0040101A] 按理说,eax内容应该是A1C30174 但是 ,eax内容是A1C301CC 最后变成了CC,这个CC,其实就是汇编里,int3指令对应的机器码

OD只是为了方便我们看,因此不将设置断点指令的内存内容改成CC,只是为了方便我们看,其实设置了断点,这个指令已经改了CC了

二、 1.有些作者,就可以在程序中设计进行检测,如果发现指令有CC,就知道有人在调试,就可以防止你调试(善意的可能会单纯关闭软件,或者让CC失效,恶意的会格盘,安装木马类似类似,这种手段叫做暗桩),这也就是反调试 2.bpx,bp+xxx 可以给指令下断点,也可以给api函数下断点 bpx+api,可以给所有调用api函数的地址下断点 3.如果检测到了cc断点,程序停不下来,其实可以尝试着把断点往下面设置设置,尤其是对于调用的函数,下断到第一行,被检测的概率很大,如果第一行下断停不下来,就往下设置试试,比如可以设置到段尾 原文链接:CC断点介绍_Sezangel的博客-CSDN博客

全局校验

启动了一个线程,对断点cc进行检测。

我们通常采用暂停线程来处理,暂停crc线程。

易语言

text edx,3 易语言字符串比较

可以直接看

考虑硬件断点。

OD -bug

od(IDAFicator.dll)与硬件断点冲突

让ExitProcess不执行

我们总结一下过crc的方法

1,干掉crc线程

2,干掉crc函数的判断

3,绕过crc检测的位置,到更低层去改

4,硬件hook

5,其他hook,欺骗crc检测函数(虚标hook)

6,干掉退出函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值