是否可以从正在运行的 .exe 文件中提取/读取变量?

逆向工程 视窗 可执行 可执行程序
2021-06-21 03:23:14

我对 Windows 编程完全陌生,所以在问这个问题时请原谅我的任何天真。我将简要描述我的情况,然后希望您能够回答我的问题。

我有一个用 Delphi 编写并用 Aspack 2.12 打包的小型可执行文件。

当文件运行时,有一个名为 Total 的变量会增加。当文件退出时,.dat 文件将使用新的 Total 值进行更新。

我可以编写一些程序来从 .dat 文件中“读取”总数(只需使用 php 或我熟悉的一种语言)。但是,我想在可执行文件运行时“实时”读取 Total 值(我不需要“写入” Total 值 - 只需读取它)。

我想知道是否有任何方法可以编写一个应用程序来“访问”正在运行的可执行文件并从中读取一个变量?

我记得在 Spectrum 时代,您可以“偷看”和“戳”记忆。这样的事情可行吗?

我想知道这是否可能,如果可能,我该怎么做?

1个回答

看看ReadProcessMemory WinAPI,或者说CheatEngine是一个可以为你做各种内存相关操作(搜索、修改、冻结、调试等)的工具。

您还可以在 Github 上以您熟悉的语言搜索其他一些内存“黑客”项目。

作弊引擎可以在您要查找的值的内存中找到确切的内存地址。您也许可以在每次运行时使用一些指针来获取您的值的位置,因此您不必每次都使用 CheatEngine 来查找地址。我建议您阅读 Cheat Engine 附带的教程,以便更好地理解指针:)