在欺骗引擎中,我们可以搜索不同类型的值(int、float、double、string)。这个值可以有不同的长度(1,2,4,8,16字节等等)。CE如何知道在某个特定内存单元中开始的值类型以及它的长度?在记忆中,每个单元格中只有一串零和一。我们如何才能知道这些数据的意义?
发布于 2021-02-17 15:33:53
如何知道CE从某个特定内存单元中开始的值类型以及它的长度?:它使用来自操作系统api的函数,这给它提供了这些信息。
例如,如果您在Windows上,可以在ReadProcessMemory(process_name、address_location、data_size)函数中调用c++,这将为您提供该信息。
// 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和0是二进制数据类型,0到10是十进制,0到F是十六进制,您只需将二进制数据转换为不同类型的数据(0101 = 5),就像您将华氏转换为摄氏,反之亦然。
https://stackoverflow.com/questions/65627090
复制相似问题