吃麻花麻花疼 发表于 2024-7-24 16:06

吃麻花麻花疼 发表于 2024-7-24 18:01

吃麻花麻花疼 发表于 2024-7-24 18:04

hou 发表于 2024-7-24 16:06

原理也是windows api,用DebugActiveProcess获取调试权限,再调用GetThreadContext,SetThreadContext来读取和修改当前线程的寄存器;
这样一来会告知软件,它正在被调试,如果有反调试就会被干掉;如果你不嫌麻烦,你打补丁也能这样做,直接mov不香吗{:5_117:}

对于市面上的HOOK模块修改寄存器的方式,都是先用变量保存寄存器,如果你需要改动寄存器,那么就是修改变量,最后由模块mov eax,变量

吃麻花麻花疼 发表于 2024-7-24 16:09

杀马特团长 发表于 2024-7-24 16:27

OD应该也是通过hook来的 但是他可能是硬件层面的修改 {:5_117:}

2224272689 发表于 2024-7-24 16:33

调试器中断引发异常,通过注册的异常处理回调来获取当前线程上下文CONTEXT,然后来进行修改。

Scorpio 发表于 2024-7-24 16:33

你说的是寄存器标志位,Baymax轻松制作补丁

boot 发表于 2024-7-24 16:58

吃麻花麻花疼 发表于 2024-7-24 16:09
268HB几乎是我全部家当了

调试器通过int3中断或者dr硬件中断,接管当前异常,并执行异常处理。

如果要模拟调试器,可以通过注册异常,并在异常回调中修改寄存器。也就是veh hook + int3或硬件断点的实现。

弃天帝520 发表于 2024-7-24 17:04

直接打补丁不香吗

温九 发表于 2024-7-24 17:18

答案是可以的 已经用易语言实现了
页: [1] 2
查看完整版本: 求助:OD内修改寄存器的原理是什么?