C ++ WriteProcessMemory() - 编写结构的一部分

时间:2016-09-16 19:57:30

标签: c++ struct readprocessmemory wpm

我正在阅读游戏结构。然后我修改了这个结构并将其写回(使用RPM和WPM)。如果我回写整个结构,我会在游戏中遇到崩溃,我试图破解。这就是为什么我只想写一个结构的一部分。怎么能实现这一目标? (例如,浮动r直到浮动b)

struct GlowStruct
{
void* m_pEntity;
float r;
float g;
float b;
float m_flGlowAlpha;
unsigned char _0x0014[16];
bool m_bShouldGlow;
bool m_bUnknown;
bool m_bFullBloomRender;
unsigned char _0x0027[13];
}GlowStructA;

// Where I'm writing to. I read my struct from the same place.
WriteProcessMemory(hProcess, (LPVOID)(GlowPointer + (Glowindex * 0x38)), &GlowStructA, sizeof(GlowStruct), NULL);

1 个答案:

答案 0 :(得分:0)

如果只想编写表示r,g和b的3个浮点数,则只想写12个字节,因为每个浮点数都是4个字节。您想使用从成员变量r开始的12个字节,该变量位于您的glow结构的偏移量0x4。

该代码等同于此:

WriteProcessMemory(hProcess, (LPVOID)(GlowPointer + (Glowindex * 0x38)), (void*)(&GlowStructA + 4), 12, NULL);