【问题标题】:A Question regarding methods of dumping ram [All languages, and platforms]关于转储 ram 方法的问题 [所有语言和平台]
【发布时间】:2010-11-22 14:56:52
【问题描述】:

我最近决定要编写一个应用程序,作为市场上一些闭源 ram dump 应用程序的开源替代方案;主要是作为一种学习体验。

但我不完全确定从哪里开始(对于 Windows 机器)。我想我必须使用在内核级别执行的例程来遍历内存,但是我如何在拍摄快照时阻止机器做任何事情,或者尽可能少做,甚至可以访问这样的公羊,我迷路了。

感谢任何有经验或建议的人,非常有趣的话题。

【问题讨论】:

    标签: c++ python windows linux memory-dump


    【解决方案1】:

    对于 Windows,您需要的一切都在 dbghelp.dll 中 - 参考 here

    您可以直接调用 Minidump 函数,也可以手动遍历所有结构(这需要更多的工作,但更符合您描述的教育练习)。

    对于过程控制,writing a basic debugger 上的信息应该很有用。

    【讨论】:

    • 感谢您提供的链接,看来这应该很有帮助。
    • 再想一想,看起来 dbghelp.dll 不适合这项工作,这对于用户模式内存转储来说很好;但我需要将物理内存写入磁盘。
    【解决方案2】:

    Google Breakpad 可能会有所帮助。不过我自己还没用过,

    【讨论】:

      【解决方案3】:

      这里有一个关于暂停进程的快速教程,以便您可以使用它。 http://www.infernodevelopment.com/freeze-programs-using-win32-threads

      这里有一些函数可用于查找您要查看的进程或窗口

      1. GetWindowThreadProcessId
      2. 枚举窗口
      3. 任务列表
      4. 获取当前进程

      读取内存,可以使用以下api函数。

      1. 开放进程
      2. 读取进程内存

      谷歌搜索这些应该会给你一个好的开始

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 2021-11-25
        相关资源
        最近更新 更多