【问题标题】:How to enumerate a process's modules?如何枚举进程的模块?
【发布时间】:2011-03-31 20:04:48
【问题描述】:

我的应用程序创建了一个挂起的进程,通过 VirtualQueryEx() 获取进程的信息,但使用 EnumProcessModules() 获取进程的模块信息失败。

仅当进程未创建挂起并且在调试器中命中断点(因此程序在执行调用之前运行)时,上述任务才完成。

我正在尝试编写一个非常不错的反汇编程序,为此我需要运行一个暂停的目标进程,但 EnumProcessModules() 不适用于暂停的进程。

还有其他选择吗?

【问题讨论】:

    标签: winapi


    【解决方案1】:

    几年前我处理过类似的事情。如果我没记错的话,我最终做的是创建暂停的任务,然后GetThreadContext,设置它的陷阱标志SetThreadContext,恢复线程(运行一条指令),然后使用EnumProcessModules

    当然,可能还有其他方法可以解决这个问题,但至少如果有记忆的话,那是我当时想出的,我似乎记得它的工作原理。

    【讨论】:

    • 恢复线程后,程序正常执行,而不仅仅是一条指令。陷阱标志设置为 0x100。
    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2017-08-07
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多