【问题标题】:How do I read from a pointer that looks like "process name" + address?如何从看起来像“进程名称”+地址的指针中读取?
【发布时间】:2011-11-28 17:14:55
【问题描述】:

正如标题所说,我正在尝试从作弊引擎指针扫描中找到的地址读取。但唯一的问题是我曾经使用过的唯一指针只是指针地址+偏移量。我正在使用 Visual Studio 2010 中的 C# .Net 4.0。我想我记得以前看过一些关于此的内容,但我并没有想太多,因为它当时不适用于我。

获取进程或模块 ID 并将其添加到指针地址,然后添加偏移量并从那里读取?但我不记得获取进程 ID 或模块 ID 的命令:/

这也是我正在使用的 5 级指针,我只使用了 1 级或 2 级指针,但我猜它大致相同。只需从指针中读取地址,直到获得要写入的基地址。

如果有帮助,我的指针如下所示: "进程名.exe"+003E6D98

“如果你说为什么你需要使用 .NET 的指针,这可能会有所帮助” - John Saunders

我正在为我的一款游戏制作教练。我以前做过它们,只是没有使用这种类型的指针,我完全忘记了如何处理这种类型的地址。我想我必须得到模块的 id,但我忘记了如何。实际上,我对内存和指针非常擅长,我通常只有平均地址,旁边没有进程名称。

【问题讨论】:

  • OpenProcess 加 ReadProcessMemory
  • 如果你说为什么你需要使用来自 .NET 的指针,这可能会有所帮助
  • 您可以通过循环运行程序来查找进程名称来创建对进程的引用。 msdn.microsoft.com/en-us/library/…
  • @JohnSaunders - 我猜是因为他熟悉 C# 而不熟悉 C++,如果您了解自己在做什么,那么在 .NET 中处理指针并没有错。我什至认为它更容易,因为如果你做错了什么,你很快就会被告知你做错了什么,而不是被允许做错事。
  • @JohnSaunders - 他使用 C# 的原因并不重要。如果您有能力指导他,他想要 C# 中的解决方案,您应该这样做。我的知识仅限于 Process 类。

标签: c# .net memory pointers


【解决方案1】:

OP 有问题的回答 - 作为 CW 的回答

string sProcessName = "MyProcessName.exe";
Process[] MyProcesses = Process.GetProcessesByName(sProcessName);
IntPtr hProcModuleBA = MyProcesses[0].MainModule.BaseAddress;
IntPtr PointerAddr = new IntPtr(MyPointer.ToInt32() + BaseAddress.ToInt32());

这将在您的进程中搜索 sProcessName,将其添加到数组“MyProcesses”中。我选择了列表中的第一个来获取 BaseAddress。是 40000 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2015-08-09
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    相关资源
    最近更新 更多