向指针地址添加 20 个字节偏移量
Adding 20 Byes Offset To Pointer Address
我正在尝试从指针地址+偏移量中读取值,但没有得到正确的结果。
我有以下(相关(代码:
uintptr_t moduleBase = GetModuleBaseAddress(procId, L"ProgramImReading.exe");
uintptr_t pObjectManager = moduleBase + 0x237CB28;
std::vector<unsigned int> countOffset = { 0x20 };
uintptr_t totalObjects = FindDMAAddy(hProcess, pObjectManager, countOffset);
std::cout << "Current objects = " << totalObjects << std::endl;
FindDMAAddy:
uintptr_t FindDMAAddy(HANDLE hProc, uintptr_t ptr, std::vector<unsigned int> offsets)
{
uintptr_t addr = ptr;
for (unsigned int i = 0; i < offsets.size(); ++i)
{
ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0);
addr += offsets[i];
}
return addr;
}
由于某种原因,这将不起作用。我可以通过打开作弊引擎并输入 GameAdress + 指针,然后设置偏移量 + 20 并获得正确的值来确认地址是否正确。
当我运行上面的代码时,我得到一个很长的随机值"2596411228208">
我还可以找到指针指向的当前动态地址并直接从该地址读取,但是当我尝试从指针+偏移量读取时,它无法正常工作。
我对你的代码有点困惑,但我认为你在谈论这个:
当你有一个指向int
的指针时,即 4 个字节的长度,并且您将指针增加 1,您实际上是在向指针添加 4,因为您需要向前移动 4 个字节才能获得下一个int
。喜欢这个:
uint32_t* pointer = 124;
++pointer; //128
或带有short
,即 2 个字节长:
uint16_t* pointer = 124;
++pointer; //126
若要向uint32_t
指针添加字节数,必须先转换为uint8_t
指针,然后再转换回指针uint32_t
。
uint32_t* pointer = 124;
uint32_t offset = 0x20;
pointer = (uint32_t*)((uint8_t*)pointer + offset);
FindDMAAddy 返回指针链的最终地址。 您的代码希望它包含该地址中的值,而事实并非如此。 您需要使用 ReadProcessMemory 来读取它。
正确的代码是:
uintptr_t moduleBase = GetModuleBaseAddress(procId, L"ProgramImReading.exe");
uintptr_t pObjectManager = moduleBase + 0x237CB28;
std::vector<unsigned int> countOffset = { 0x20 };
uintptr_t addr = FindDMAAddy(hProcess, pObjectManager, countOffset);
int totalObjects = 0;
ReadProcessMemory(hProc, (BYTE*)addr, &totalObjects, sizeof(totalObjects), 0);
std::cout << "Current objects = " << totalObjects << std::endl;
由于您希望在给定地址找到int
,因此需要使用:
for (unsigned int i = 0; i < offsets.size(); ++i)
{
int var;
ReadProcessMemory(hProc, (BYTE*)addr, &var, sizeof(var), 0);
addr += offsets[i];
}
相关文章:
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 通过指针偏移量访问结构变量值
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- librdkafka:rd_kafka_assignment 返回分配分区的偏移量 -1001
- 是否通过向封闭对象的地址添加字节偏移量来访问子对象
- 向指针地址添加 20 个字节偏移量
- glMapBufferRange(..) 中的偏移量关系和 glDrawArraysInstanced(..) 中的第一
- 是否有与 C# Structs/StructLayout 等效的功能,C++中的字段偏移量?
- 我的 sumASCII 函数中的此偏移量是多少?
- boost::序列化中的派生类偏移量计算.有效吗?
- RedisGraph 语法错误在偏移量 8 靠近"创建"
- 胎面偏移量的时间复杂度?
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- 编译器在构造函数中计算的成员偏移量不正确
- 使用基地址和偏移量获取变量的地址
- 缓冲区视图中的字节偏移量大于字节长度
- 从带有位偏移量的std::字符串中按字节提取连续位
- 调用堆栈字节偏移量
- 在编译时确定结构成员字节偏移量
- 是否可以手动计算类成员的字节偏移量