【发布时间】:2021-01-08 10:12:43
【问题描述】:
在作弊引擎中,我们可以搜索不同类型(int、float、double、string)的不同值。该值可以有各种长度(1、2、4、8、16 字节等)。 CE 如何知道在某个特定存储单元中开始的值是什么类型的值以及它有多长?在内存中,每个单元格中只有一堆零和一。我们如何知道这些数据的含义?
【问题讨论】:
标签: memory memory-management cheat-engine
在作弊引擎中,我们可以搜索不同类型(int、float、double、string)的不同值。该值可以有各种长度(1、2、4、8、16 字节等)。 CE 如何知道在某个特定存储单元中开始的值是什么类型的值以及它有多长?在内存中,每个单元格中只有一堆零和一。我们如何知道这些数据的含义?
【问题讨论】:
标签: memory memory-management cheat-engine
CE 如何知道某个特定内存单元中的起始值是什么类型以及持续多长时间?:它使用操作系统 api 中的函数来提供该信息。
例如,如果您使用的是 Windows,则可以在 c++ 中调用 ReadProcessMemory(process_name, address_location, data_size) 函数,该函数将为您提供该信息。
// Pseudocode of how CE might do it
for (int address = 0x0000; address < 0xFFFF; i += sizeof(int) {
int value = ReadProcessMemory('notepad.exe', address, sizeof(int));
int* value_address = &value;
}
在内存中,每个单元格中只有一堆零和一。我们如何知道这个数据的含义?: 1ns和0s是二进制类型的数据,0到10是十进制,0到F是十六进制,你只是将二进制数据转换成不同类型的数据(0101 = 5),就像您将华氏转换为摄氏度一样,反之亦然。
【讨论】: