【问题标题】:ReadProcessMemory entire processReadProcessMemory 整个过程
【发布时间】:2021-03-28 00:42:10
【问题描述】:

我正在尝试使用ReadProcessMemory 读取整个进程,但无论如何,尝试在低地址读取会导致函数失败。

例如,如果我正在从一个进程读取数据,我可以毫无问题地访问它的内存区域。但是进程的低地址(例如 0)无法访问,ReadProcessMemory 在这些地址上失败。

我是否需要一些特权才能使用ReadProcessMemory 访问整个进程?

【问题讨论】:

    标签: c# c++ c windows readprocessmemory


    【解决方案1】:

    一些内存页面被故意设置为不可读,尤其是第一页,因为这会检测到很多编程错误。

    你可以用VirtualQueryEx判断你是否可以在另一个进程中读取内存页。

    要确定内存页面的大小,请使用GetSystemInfo

    你必须逐页读取内存。

    另外,请查看这篇文章,该文章解释了为什么不应该使用 IsBadReadPtr 而不是 VirtualQueryIsBadXxxPtr should really be called CrashProgramRandomly

    【讨论】:

    • 由于性能原因非常不幸,因为有数千页必须阅读。
    • @Jire 你可以在其他进程中注入一个DLL,并从进程内部扫描内存。
    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2019-08-12
    • 2016-03-02
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多