: :办公软件 2019-10-15 16:29:39
常规Hook需要修改进程数据,但是游戏类的往往有CRC校验,改了内存会被发现
VEH+Dr7Hook 就是Dll注入时创建一个VEH异常处理函数
1.往Dr0写入Hook的地址(比如游戏走路会调用一个Call),Dr7写入控制码,
2.当你控制游戏人物走路时,会经过那个Call,因为这个地址被下了硬件断点,就会报一个异常
3.这个时候VEH的处理函数接手处理这个异常,先取消断点(将Dr0和Dr7置0),然后Eflag寄存器TF位置1,使线程单步执行,然后VEH返回-1,线程就会再从Hook的地址处再次执行(游戏中该走的路还是会继续走)
4.因为我们已经设置了TF位为1,所有线程运行到下一步汇编指令时又会报异常,这个时候我们的处理函数就接手,再将Dr0填入Hook的地址,Dr7填入控制码,断点再次生效
5.这个时候线程已经运行到 Hook地址的下面一句了,并且后面我们没有设置断点,也没有TF位置1,所以再返回-1时,程序就正常运行了
http://www.awuming.com/thread-26348-1-1.html
TAG: VEH,Dr7,硬件断点,Hook源码
10-03无痕DrxHook(VEHHook)
11-11易语言VEH捕获异常地址
01-30微信HOOK源码支持最新版本
12-29利用硬断VEH实现APIHOOK源码
09-15超级反调试、隐藏线程、清除硬件断点等功