一款用于 Themida 保护二进制文件的通用脱壳工具及运行时保护移除工具。 Unthemidator 不会运行二进制文件,也不会在宿主机上调用目标二进制所使用的任何 API 或执行系统调用。
Unthemidator 支持各种类型的 Windows 二进制文件(dll、exe、sys 等),涵盖 x86(32 位) 和 x86_64 / amd64(64 位)两种变体。
脱壳完成后,会执行完整的 PE 重建,使脱壳后的二进制文件可运行且可调试。
除脱壳和 PE 重建外,Unthemidator 还能识别二进制文件中使用的 Themida / Code Virtualizer 虚拟机版本。
只需将加壳的二进制文件拖放到 unthemidator 上,或在 Windows 上使用以下 CLI 命令:
unthemidator.exe [options] {path_to_bin.exe|.dll|.sys|.bin}
以及在基于 Unix 的系统上执行以下 CLI 命令:
./unthemidator [options] {path_to_bin.exe|.dll|.sys|.bin}
只有当 PE 文件的扩展名为 .sys 时,才会被视为内核驱动程序。 这样做是为了确保默认情况下,任何扩展名的文件都能被正确解析为用户态应用程序。 更不用说,加壳的内核驱动程序极为罕见,而且只能在安全性不足的系统上运行。
以下是所有 unthemidator 选项的完整概览。
--out-file - 输出文件名 / 路径。默认为 {program_name}.unpacked.{program_extension}--license-file - 许可证文件名 / 路径。成功脱壳受 WinLicense 保护的二进制文件所必需。--imports-file - 用于保存导入信息的文件名(或路径)。应为 JSON 格式。默认为 {program_name}.imports.json--vms-file - 用于保存 VM 入口点信息的文件名(或路径)。应为 JSON 格式。默认为 {program_name}.vms.json--vm-depth - 用于虚拟机研究和虚拟指令跟踪,指定应对多少层虚拟化进行单步执行。默认为 0 - 不进行 VM 探索。--no-imp - 跳过导入查找--no-startup - 跳过运行时启动处理。这将阻止除初始引导阶段之外的所有脱壳操作。--no-vm-lookup - 跳过虚拟机查找--no-loader - 跳过反转储修复加载器的生成。如果 OEP 被虚拟化或存在逐宏安全检查,这可能导致二进制文件无法运行某些二进制文件依赖于随程序一起提供的自定义模块。你只需在脱壳此类二进制文件之前,将所有自定义模块放入 modules 目录即可。对于缺失的系统模块也可以这样做,如果你在 Unix 系统上运行 unthemidator,这会很有用。
如果你遇到问题,或者某些功能未按预期工作(或完全无法工作),请在此仓库中创建一个 issue。
请查看 Releases 页面以获取预编译的 unthemidator。 目前提供以下版本:
在以下文章中了解更多关于 Themida 混淆内部机制(包括其虚拟机)的信息: