C++ 添加基址+;用于修改值的偏移量

C++ 添加基址+;用于修改值的偏移量,c++,offset,object-address,C++,Offset,Object Address,我正在尝试修改纸牌的值,例如分数 无论如何,我找到了指针指向的地址(使用作弊引擎),但我很难注入代码来修改分数。我几乎可以肯定,这是我将偏移量添加到基值的方式,而不是Windows DEP、我的注入方法或任何其他方式 这是我正在使用的代码 #define BASE 0xFFAEAFA8 #define fOFFSET 0x50 #define sOFFSET 0x14 #define VALUE 55555 *(int*)(((*(int*) BASE) + fOFFSET) +

我正在尝试修改纸牌的值,例如分数

无论如何,我找到了指针指向的地址(使用作弊引擎),但我很难注入代码来修改分数。我几乎可以肯定,这是我将偏移量添加到基值的方式,而不是Windows DEP、我的注入方法或任何其他方式

这是我正在使用的代码

#define BASE    0xFFAEAFA8
#define fOFFSET 0x50
#define sOFFSET 0x14
#define VALUE   55555


*(int*)(((*(int*) BASE) + fOFFSET) + sOFFSET) = VALUE;
每当我注入这段代码,我的游戏就会崩溃。如果我修改作弊引擎中的值而不是代码中的值,则可以正常工作。

尝试:

volatile int * pScore = (int*)( BASE + fOFFSET + sOFFSET );
*pScore = VALUE;
我做错了什么:
我需要使用
ReadProcessMemory()
API来查找指针指向的地址。然后添加偏移量。

是以字节或整数(DWORDs)为单位的
sOFFSET
?在调试器中运行该程序,以获得有关它如何“崩溃”的更多详细信息。@Nemo:Solitaire是一个非常容易学习基本注入和黑客攻击的项目。没有什么比每次开机时都要输入验证器密钥更烦人的了(哇)@Kerrek SB-实际上我不太喜欢。也许我使用了错误的数据类型?我猜它是一个整数,因为我一直扫描的值类型是4个字节。@juryben:好吧,如果你想以字节为单位推进一个指针,你必须将它强制转换为
char
;如果将一个
int*
,它将按
sizeof(int)
递增。。。