我正在尝试从(32 位 Windows 应用程序)聊天窗口读取消息。不幸的是,窗口有一个自定义类,因此GetWindowText()没有帮助。我需要以某种方式从内存中读取数据。
我使用 CheatEngine 对其进行了调查,并在多个地方找到了我正在寻找的字符串。但是,它们的位置似乎不时发生变化,因为地址处的值发生了变化,例如在聊天中输入了新文本时。
不幸的是,我不是这方面的专家。我天真的假设是,字符串包含在一些类似向量的数据结构中(地址处的变化值可能是由重新分配引起的?),但我当然不确定。我已经编写了一个基本的 MemoryScanner,它能够找到一些整数值(我相信我也可以扩展它来查找字符串),但是如果我不知道聊天消息的地址和底层数据结构的确切布局?
我很感激任何建议!
编辑:我已经开始用 IDA Pro 分析程序。我发现了几个字符串(在 .rdata 部分),它们经常在聊天中使用,甚至是类似 'printf' 的名称替换。我在这些字符串以及调用这些字符串的函数上设置了断点。但是,输入聊天消息时不会触发它们。
关于 .rdata 段,我有什么需要了解的吗?例如,它是否在程序启动时加载?如果是这样,我将如何从这里开始?