ldiotFaiFai 发表于 2021-1-28 16:08

关于异常处理+硬件断点Hook的问题

因为一个程序因为某些原因不能写内存内容,所以常规修改汇编实现的hook就不能用,刚好看到论坛里有份异常处理+硬件断点的源码,试了下,但发现有个问题,虽然是能Hook到指定位置然后执行自己的子程序,但Hook到的程序本身的代码就不会执行下去了,导致程序失效甚至直接崩溃,想问下该怎么让他能继续执行下去?
源码是站内的:https://www.52hb.com/forum.php?mod=viewthread&tid=21769

sky 发表于 2021-1-28 16:08

自己子程序执行完,在jmp到HOOK位置,下一行代码不就行了...

Eric 发表于 2021-1-28 16:24

置内存属性可读写

如果你hook到自己子程序能运行, 可能你返回值有问题.

ldiotFaiFai 发表于 2021-1-28 16:30

Icpower 发表于 2021-1-28 16:24
置内存属性可读写

如果你hook到自己子程序能运行, 可能你返回值有问题.

置内存属性不管用,所以才想着找个不用写内存就能Hook的方法,异常处理这个因为是直接改了EIP的跳转地址跳到了自己的子程序,所以原来应该跳转的地方没执行,就是不知道这个应该怎么改

独鲨 发表于 2021-1-28 16:40

改EIP 或者 把dr0-3全清了

四公子丶 发表于 2021-1-28 16:41

你要弄清楚你返回的地址是否合法

ldiotFaiFai 发表于 2021-1-28 17:15

独鲨 发表于 2021-1-28 16:40
改EIP 或者 把dr0-3全清了

现在就是改EIP跳到了自己的子程序,所以原来应该执行的代码就没执行

ldiotFaiFai 发表于 2021-1-28 17:17

用了个骚方法,改EIP前记录下原EIP然后清掉DR0的断点,再改EIP跳到自己的子程序,然后自己的子程序执行完再call回原EIP,执行完再重新置DR0下断点,但感觉这样的做法好笨

虫虫编程 发表于 2021-1-28 20:01

你哪个可能是出发vmp的crc效验把,改动程序任何以地方都异常

oawxx 发表于 2021-1-28 20:23

看一下返回值,玩异常处理的返回值应该是-1
页: [1] 2
查看完整版本: 关于异常处理+硬件断点Hook的问题