【问题标题】:Reading memory from a process (game in this case)从进程中读取内存(本例中为游戏)
【发布时间】:2012-01-10 14:35:37
【问题描述】:

我正在制作一个自动点击自动取款机,以便在我的学校重新开始之前回到 C#。在过去的 5 个月里,我作为实习生一直在玩 php,当我们回到学校时,php 将消失,而 C# 将在拐角处出现。

我用 C# 玩了很长时间,只要我有一个想法,就是一些有趣的东西,没什么特别的。现在我正在制作一个带有记录功能的自动点击器,这样我就可以在游戏中自动化一些事情,但我想更进一步,记忆阅读!

直到现在,我发现很难找到一些像样的信息(不知道在哪里寻找)我卡住了。我想做一些可以与瞄准机器人进行比较的东西,但没有任何商业或任何东西,只是想尝试一下。我想知道 pacman 中的幽灵,弹球中的 bal,甚至飞行游戏中的飞机的位置。

我该如何开始呢?我已经阅读了一些关于内存如何工作的内容以及一些实际获取它的功能。但我不知道如何找到地址。例如,我也不知道如何在 if 语句中使用它们。

有人可以在这里指出正确的方向吗?

【问题讨论】:

  • 你的意思是从游戏中读取指针?
  • 确切地说,x/y/z 值,也许还有更多信息,谁知道呢!我只是不知道从哪里开始。
  • 您是在询问在您自己的进程(即您自己的执行代码)中访问内存,还是在任何正在运行的任意进程中访问内存?
  • 另一个,比如跑步游戏。
  • 你要为什么游戏制作训练器?通常人们用 C++ 编写游戏培训师(比如我)。您可以使用多种不同的工具来查找地址,例如 ollydbg 和 CheatEngine。

标签: c# memory-management


【解决方案1】:

我建议你检查(C#)ReadProcessMemory

【讨论】:

    【解决方案2】:

    Cheat Engine 可以帮助您找到所需的内存地址,尽管这是一项相当繁琐的任务。如果您想进行实验,它还可以让您更改内容。 还有Tutorials on Youtube和上CheatEngine forum

    【讨论】:

    • 是的,但是对于更高级的游戏,我一直找不到地址。想我就去找一些更高级的教程吧。
    • @Gideon 如果你用作弊引擎找不到它们,你也不会用 C# 找到它们
    • 我可以想象,但重点是我想学习如何去做,我不是要一个解决方案或一段工作代码。如果我练习 CE,从长远来看,编程会更容易吗?
    【解决方案3】:

    编写培训师的最佳选择是直接使用本地语言。学习一些 C 和 C++,然后使用 ReadProcessMemory。即使在不安全模式下使用 C# 中的本机指针也是非常困难和丑陋的。使用 P/Invoke 并没有那么糟糕,但对于你的情况,C# 给你的唯一很酷的东西就是 WinForms。如果您在同一个地方的其他进程中需要 WinForms 和本机指针,托管 C++ 是最佳选择:)

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      相关资源
      最近更新 更多