【问题标题】:How to find the starting address of an application for memory editing a process?如何找到内存编辑进程的应用程序的起始地址?
【发布时间】:2020-06-19 22:27:39
【问题描述】:

我想知道如何从头到尾找到应用程序的有效地址,因为我想知道如何记忆编辑应用程序,例如记事本。我是否必须反编译应用程序并查看汇编代码或机器代码。因为我看到人们总是为扫雷和一些 PC 视频游戏等应用程序制作模组。

附:我将使用编程语言 C# 和 Win32 函数来执行内存编辑。

【问题讨论】:

  • 哇。您的问题在 2019 年仍然与我相关:-D 干杯。

标签: c# winapi memory-editing


【解决方案1】:

查找进程的开始和结束地址

Process proc = Process.GetCurrentProcess();
IntPtr startOffset = proc.MainModule.BaseAddress; 
IntPtr endOffset = IntPtr.Add(startOffset ,proc.MainModule.ModuleMemorySize); 

http://www.ownedcore.com 是学习记忆编辑的好资源。

【讨论】:

  • 正是我想要的!谢谢
  • @Loman 在文档中写着Gets the amount of memory that is required to load the module。这不是您在扫描应用程序时想要扫描的内容。看我的回答。
【解决方案2】:

首先,您使用 GetSystemInfo Win32API 函数来获取应用程序可用的最小和最大虚拟地址。然后,您从最小地址开始扫描内存块,并以可用的最大地址结束。但是您跳过(您不扫描它们)所有您无法阅读的块。这是 CodeProject 上的一篇文章,其中显示:https://www.codeproject.com/articles/716227/csharp-how-to-scan-a-process-memory

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多