memory - 作弊引擎如何知道内存中有什么样的值
问题描述
在作弊引擎中,我们可以搜索不同类型(int、float、double、string)的不同值。该值可以有各种长度(1、2、4、8、16 字节等)。CE 如何知道在某个特定存储单元中开始的值是什么类型的值以及它有多长?在内存中,每个单元格中只有一堆零和一。我们如何知道这些数据的含义?
解决方案
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),就像您将华氏温度转换为摄氏度一样,反之亦然。
推荐阅读
- python - 使用 FastAPI,我一直遇到 'foo' 没有属性 'bar' 问题,通常是 Session 对象
- javascript - 烧瓶点击带有href位置问题
- kubernetes - 推出:版本“argoproj.io/v1alpha1”中的种类“推出”没有匹配项
- c# - [ModuleInitializer] 的行为不正确?
- java - Android:Mediaplayer 可以在模拟器上运行,但不能在手机上运行
- java - javafx 的 JSON 配置在 VScode 中不起作用
- prolog - Prolog:为什么这个谓词显示为真?
- python - 使用python的二维码解码得到太多的值来解包错误
- vue.js - 如何从 js 文件访问 Nuxt 上下文
- php - 如何使用 $_SESSION 从数据库中检索数据并使用它来查询数据库