以我最喜欢的游戏之一命名的 "nocturne" 是一个 bin2bin 的 x86-64 PE 代码虚拟化与二进制重写器。
要使用 Nocturne 虚拟化器,请将 core/ 中的 "nocturne_sdk.hpp" 复制并包含到你的项目中。
#include "nocturne_sdk.hpp"
VIRTUALIZE int secret(int x) {
if (x % 2 == 0) {
return x / 2;
} else {
return x * 3 + 1;
}
}
VIRTUALIZE_MARK(secret);
然后,运行 CLI 可执行文件。
cli.exe -i <input.exe> -o <output.exe>
示例:
cli.exe -i example.exe -o example_protected.exe
默认情况下,CLI 使用 auto 模式。
或者,显式指定:
cli.exe -i <input.exe> -o <output.exe> --mode auto
示例:
cli.exe -i example.exe -o example_protected.exe --mode auto
要扫描标记:
cli.exe -i <input.exe> -o <output.exe> --mode markers
示例:
cli.exe -i example.exe -o example_protected.exe --mode markers
或者,如果你想在无需 SDK 的情况下虚拟化二进制的特定段:
cli.exe -i <input.exe> -o <output.exe> --mode rva <start_rva> <end_rva>
示例:
cli.exe -i calc.exe -o calc_vmp.exe --mode rva 0x1600 0x1864
虚拟化之前:

虚拟化之后:
混淆后的调度器循环:

LIEF
Zydis
argparse
首先,这主要是一个概念验证项目。请不要期望它 非常 稳定。话虽如此,我会随着时间的推移逐步添加更多功能/修复。
如果你想实现任何功能或处理程序,我恳请你提交一个 issue。我欢迎任何及所有贡献。
本项目源代码可用,但并非开源。
源代码依据 PolyForm 非商业许可证 1.0.0 版本提供。
你可以在遵守许可条款的前提下,为非商业目的使用、研究、修改和分享本软件。
未经单独书面许可,不允许商业使用、企业使用、公司内部使用、生产业务使用、托管服务、付费产品、客户工作、咨询工作或组织部署。
如需商业或企业许可,请联系:[email protected] / @nodiuus