基于 VTIL 的动态 VMP 卸载器和导入修复程序。
基于 VTIL 的动态 VMP 回收器和导入修复程序。适用于 VMProtect 3.X x64。
VMPDump.exe <Target PID> "<Target Module>" [-ep=<入口点 RVA>] [-disable-reloc]
参数: * <Target PID>: 目标进程的 ID,以十进制或十六进制形式表示。 * <Target Module>: 应要转储和修复的模块名称。如果希望转储进程的映像模块,则可以使用空字符串 ("")。 * [-ep=<Entry Point RVA>]: 可选提供的入口点 RVA,以十六进制形式表示。VMPDump 会简单地将可选标头中的入口点替换为此值。 * [-disable-reloc]: 可选设置,用于指示 VMPDump 在输出映像中标记已删除的重定位信息,强制映像以转储的 ImageBase 加载。如果需要可运行的转储结果,则此选项非常有用。
在运行 VMPDump 之前,目标进程中的 VMProtect 初始化和解压过程必须完成。这意味着它必须在 OEP (原始入口点) 或之后。所储存和修复的映像将出现在进程映像模块目录中,名为 `<目标模块名称>.VMPDump.<目标模块扩展名>。
VMPDump 会扫描所有可执行的部分以查找这些引导程序,并使用 VTIL x64 提升程序将其提升到 VTIL。然后对这些引导程序进行分析,以确定需要替换哪种调用以及需要覆盖哪些字节。一旦所有调用都被检索到, VMPDump 将创建一个新的导入表,并将 Thunk 添加到现有 IAT 中。对 VMP 引导程序的调用将被替换为直接调用这些 Thunk。
请注意,在变异的例程中,有时没有足够的字节来用直接的跳转调用替换 VMP 导入中枢调用,因为后者比前者多 1 个字节。在这种情况下,将扩展该部分,并注入一个跳转到导入中枢的中枢。然后将 VMP 导入中枢调用替换为 5 个字节的重定位。
暂无开放 Issues,或尚未同步最近议题。