挂钩、dll注入和线程安全



当我用jmp操作码覆盖函数的第一个操作码时,我实际上写入了5个字节(或者简称jmp为2)。但是,如果在我更改这个函数时,另一个线程(来自同一进程)会调用它呢?这将导致意外行为。但我没有找到任何解释。钩住的文章会让它看起来没有问题。

也许在win32api中,你使用了mov-edi有nop的事实。但我的问题更多的是理论

感谢

很可能会导致问题。您可以在上创建一个关键部分来更改代码,并输入关键部分以确保在更改代码时进行独占访问。

在相互访问的情况下,执行线程可以(理论上)看到第一个字节,并将在接下来的4个字节上执行跳转(在长跳转的情况下)。在调用的情况下,下一条指令(IP)在跳转之前被推送,即当前+5。从理论上讲,ret可能会导致该线程运行到未修改的指令中(例如,您可能需要nop)。

这都是理论上的,但在更改代码时应该防止相互访问。

如果注入到特定进程中,则可以挂起该进程,安装所有挂钩,然后继续。

相关内容

  • 没有找到相关文章

最新更新