用指针帮助
逆向工程
十六进制
十六进制
作弊引擎
2021-06-30 03:26:15
1个回答
它是不同的,因为它不仅是0x28FA190 + 0x374
,而且是*(0x28FA190 + 0x374)
。
0x28FA190
是一个基地址,可能是一个结构,并且0x374
是一个偏移量,当您对这些值求和并取消引用结果时,您将获得0x374
距该结构开头的字节数的字段值。这个字段似乎是一个指针,这就是为什么它的值也是一个地址,但它可以包含任何值。
struct A
{
char padding[0x374]; // occupy the first 0x374 bytes, so that myPointer's address is address of this structure + 0x374 (i.e. (DWORD)this + 0x374)
int* myPointer;
};
A a;
int valueOfMyPointer = **(int**)((DWORD)&a + 0x374); // valueOfMyPointer = *a.myPointer;
由于指针运算,您需要显式转换&a
为DWORD
(又名unsigned long
) - 如果您这样做&a + 0x374
,结果实际上是(DWORD)&a + 0x374 * sizeof(a)
.
您还可以从屏幕上编写整个表达式,如下所示:
uint32_t result = *(DWORD*)(*(DWORD*)((DWORD)GetModuleHandle("ac_client.exe") + 0x374) + 0x14);
其它你可能感兴趣的问题