首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在内存中搜索特定的对象结构吗?

我可以在内存中搜索特定的对象结构吗?
EN

Stack Overflow用户
提问于 2014-02-13 07:05:01
回答 3查看 66关注 0票数 1

昨晚我带CheatEngine去兜风,在我目前玩的游戏中找到了一个结构。游戏有4个字符,每个字符都有“生命值”和“法力”,这两个字符都是4个字节(int)。有什么方法可以扫描应用程序找到第一次出现的情况吗?

我发现玩家1的健康状态位于2DC2E72C,我将把它缩短为"72C“,因为其他玩家的健康在那之后非常精确。

  • 玩家1健康:72 c
  • 玩家2健康:81 c
  • 玩家3健康: 90C
  • 球员4健康: 9FC

在使用了我信任的microsoft计算器之后,我发现每个玩家之间的健康值是240字节。玩家的法力值为4字节,位于生命值之后,因此其结构如下:

  • 1000名玩家1健康
  • 004玩家1点法力
  • 240人-2健康
  • 244人2法力
  • 诸若此类。

所以我的问题是,我能在应用程序内存中搜索这个模式吗?模式将沿着这样的线: 2x4字节,240字节,2x4字节,240字节.

EN

回答 3

Stack Overflow用户

发布于 2014-02-13 07:09:06

如果有包含内存内容的文本文件,则可以使用正则表达式搜索所需的模式。Boost有一个很好的正则表达式库。

票数 0
EN

Stack Overflow用户

发布于 2014-02-13 07:12:49

我认为不会有一种managed的方法来做到这一点。

但是,CheatEngine是一个开放源码程序,它也是这样做的。

http://www.cheatengine.org/

也许您可以查看源代码,并找出您需要使用C#实现相同的API调用。

更新:我知道了,您已经提到了CheatEngine,第一次忽略了它。我在CodeProject http://www.codeproject.com/Articles/15680/How-to-write-a-Memory-Scanner-using-C上找到了这篇文章

看起来很简单

票数 0
EN

Stack Overflow用户

发布于 2014-02-13 07:23:31

如果我没记错的话,当时有一个叫做FreeCheese的作弊程序。它的工作方式是这样的:

  1. 从用户输入中获取搜索值
  2. 扫描游戏的进程内存,查找与用户输入和存储找到的地址相匹配的值
  3. 要求用户更改值ingame并接受新值作为输入。
  4. 从步骤2重新扫描地址,并丢弃与新值不匹配的
  5. 重复步骤3和步骤4,直到找到始终反映用户指定的更改的地址(地址数目)为止。
  6. 向用户请求一个新值,并将该值写入找到的地址。

步骤6很棘手,因为您需要进行类型/大小检查,以确保您能够实际应用新值。

快乐的欺骗:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21747401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档