更改已在运行的程序的变量值
Change variable value of the already running program
我认为这是不可能的,但我应该尝试一下。
我有一个程序,正在进行物理模拟并将帧记录到文件中。它记录直到未达到分解值,例如:
int counter=0; //global variable
void SomeFunction()
{
...
if(counter == 400) //written exactly by this way, i.e. 400 is not a variable, just a number
PostQuitMessage(0);
else
MakeScreenshot();
counter++;
...
}
问题是我忘了将if(counter == 400)
更改为if(counter == 1000)
,现在程序将以 400 帧完成,尽管我需要 1000 帧。
我不能只是重新编译程序,因为计算非常繁重,而且程序已经运行了 2 天,我等不及了。
对我来说非常重要,有没有办法在程序运行期间更改if
语句或确切的变量值?
唯一的希望是,据我所知,有一些程序可以像改变金钱/健康/游戏中的其他东西一样,并且用户可以按值搜索变量并更改它
目前它在大约 200-300 帧上,我几乎没有时间修复它。
您可以使用Windows函数ReadProcessMemory
和WriteProcessMemory
。
但是您需要确定值的位置400
.在正在运行的程序中查找值可以使用上述函数完成。根据常量的大小,它应该是USHORT
或UINT
。
因此,您可以使用以下步骤:
- 在第二个实例中查找值
- 隔离周围的操作码序列。
例如,cmp xxx, 400
- 在正在运行的可执行文件中查找此 OpCode 序列以查找唯一位置并将关键值替换为
1000
。
这可以称为"热补丁"。这就是简单的内存中作弊的工作方式,需要root权限。
我下载了作弊引擎,并通过其值找到了计数器变量的地址。在所有地址中,我需要的地址都显示为绿色。
我将存储在该地址的值更改为 401,现在一切正常。
相关文章:
- 使用变量值作为 PlaySound 中的路径
- 通过指针偏移量访问结构变量值
- 变量值在 C++ 中的 glutIdleFunc() 中未递增
- 更新 #ifdef 中的现有变量值?
- 在程序变得低效之前,允许多少新的[]和删除[]分配是否有限制?
- 尝试更改 main 函数内的全局变量值时出现编译错误 C++.
- 通过 Rcpp 和 bit64 R 包将最大的int64_t变量值从 C++ 传递到 R
- 如何使用 IRBuilder 更新 LLVM IR 中的全局变量值?
- 更改已在运行的程序的变量值
- 在 Xcode 中使用后对外部变量值进行初始化
- C++整数变量值
- 变量值,在三元运算符之后
- 如何获得对不同类的引用,以便从所述类内部获得变量值
- Java应用程序的JNI-c++变量值
- 如何固定从传感器获得的变量值
- 离开方法时重置变量值
- 打印具有通用特定变量值的类对象
- 在宏函数C++中设置宏变量值
- 多线程程序中的变量值损坏
- Visual Studio 2008:如何暂停正在运行的程序以查看变量值