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

C# 我可以在内存中搜索特定的对象结构吗?,c#,memory,C#,Memory,昨晚我带着作弊引擎去兜风,在我目前玩的游戏中我发现了一个结构。游戏有4个字符,每个字符都有“健康”和“法力”,这两个字符都是4字节(整数)。是否有一种方法可以扫描应用程序以找到第一次出现的情况 我发现玩家1的生命值位于2DC2E72C,我将把它缩短为“72C”,因为其他玩家的生命值在这之后非常精确 玩家1生命值:72摄氏度 玩家2健康:81C 玩家3健康:90摄氏度 玩家4生命值:9FC 在使用我信任的microsoft计算器进行了一些手工操作之后,我发现每个玩家的健康状态之间有240字节。

昨晚我带着作弊引擎去兜风,在我目前玩的游戏中我发现了一个结构。游戏有4个字符,每个字符都有“健康”和“法力”,这两个字符都是4字节(整数)。是否有一种方法可以扫描应用程序以找到第一次出现的情况

我发现玩家1的生命值位于2DC2E72C,我将把它缩短为“72C”,因为其他玩家的生命值在这之后非常精确

  • 玩家1生命值:72摄氏度
  • 玩家2健康:81C
  • 玩家3健康:90摄氏度
  • 玩家4生命值:9FC
在使用我信任的microsoft计算器进行了一些手工操作之后,我发现每个玩家的健康状态之间有240字节。玩家法力值为4字节,位于生命值之后,因此结构为:

  • 000玩家1健康
  • 004玩家1法力
  • 240玩家2健康
  • 244玩家2法力
  • 等等

所以我的问题是,我可以在应用程序内存中搜索这个模式吗?模式应该是这样的:2x4字节,240字节,2x4字节,240字节

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

我认为不会有一种
管理的
方法来实现这一点

然而,CheatEngine是一个开源程序,它也可以实现同样的功能

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

更新:我明白了,你已经提到了作弊引擎,第一次就忽略了它。 我在CodeProject上找到了这篇文章


看起来很简单

如果我没记错的话,那时候有一个叫免费奶酪的作弊程序。它的工作方式是这样的:

  • 从用户输入中获取搜索值
  • 扫描游戏的进程内存,寻找任何与用户输入匹配的值 存储找到地址
  • 要求用户更改ingame和take的值 新值作为输入
  • 从步骤2中重新扫描地址,并丢弃与新值不匹配的地址
  • 重复步骤3和4,直到找到始终反映用户指定更改的地址(地址数)
  • 向用户请求一个新值,并将该值写入找到的地址
  • 第6步很棘手,因为您需要进行类型/大小检查,以确保可以实际应用新值

    快乐欺骗:)