c++ - 如何使用 C++ 从 .exe 读取/写入 asm 寄存器?

标签 c++ assembly executable

我想修改某个程序中寄存器的值。 唯一的问题是,我不知道如何访问它。如果有办法,我该如何读/写它? (首选语言C++)

最佳答案

如果你想在程序运行时修改一个特定的寄存器,你可以使用调试器来实现,比如OllyDbg。 .

如果您想在程序未运行时修改代码,以便将来运行该程序时它的行为会有所不同,您可以使用反汇编程序(例如 IDA)查看程序集。 .但是您还需要一些可以根据您的修改重新组装程序的东西,例如 NAsm

您还可以在两个程序都在运行时将一个程序附加到另一个程序,使用 Windows 中的 OpenProcess() 函数。然后,您可以向其他进程读取和写入任意值,包括修改它的代码。设置和正常工作是一件非常棘手的事情……这就是调试器的工作方式,通常是非常复杂的软件。最好使用现有的而不是尝试编写自己的!

关于c++ - 如何使用 C++ 从 .exe 读取/写入 asm 寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418677/

相关文章:

c++ - 获取 boost::asio::async_read 读取的字节数

c++ - 为什么 boost::future<T>::then() 产生一个新线程?

c - 了解程序集中的条件代码标志设置

c++ - 使用旋转函数旋转整个数组

c++ - 如何在 C++ 中使用数学

assembly - 将寄存器设置为零有多少种方法?

c - 在程序集或注册表中看到的指针

Java-eclipse-获取.exe文件

c - CMake 是将包含的 header 中的所有内容编译到可执行文件中还是仅将主类中使用的部分编译?

java - 如果 JAR 可执行文件位于 Programs 目录中,则它不会启动