首页 > 解决方案 > 如何安全地重写可执行文件的汇编线程?

问题描述

我的目的是使以线程安全的方式重写函数启动程序集(.text)成为可能。问题是我不能确定在重写函数时其他线程不在函数的开头。我写了大约 5 个函数的第一个字节。此操作在整个过程生命周期中执行。

我有几个想法如何做到这一点:

  1. 暂停其他线程。不错。但是只在windows上是可以的。在linux上没有这样的东西。您必须使用信号来实现它,这会使操作复杂化并且难以调试。由于它是一种频繁的操作,因此它也会对性能造成很大的损害。
  2. 使用线程优先级。写入线程被授予更高的优先级,所以其他人应该等待它。据我了解,它只能在单核平台上有所帮助。

我的问题是还有其他方法可以做到这一点。

标签: c++multithreadingassemblydetours

解决方案


推荐阅读