
x86-64 PE向けのbin2binコード仮想化ツール
私のお気に入りのゲームの一つにちなんで名付けられた「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
まず第一に、これはほとんど POC(概念実証)プロジェクトです。あまり安定しているとは期待しないでください。とはいえ、今後も継続的に機能や修正を追加していく予定です。
実装してほしい機能やハンドラーがあれば、ぜひ issue を開いてください。あらゆる貢献を歓迎します。
このプロジェクトはソース公開(source-available)であり、オープンソースではありません。
ソースコードは PolyForm Noncommercial License 1.0.0 の下で利用可能です。
ライセンス条件に従い、非営利目的に限り、本ソフトウェアの使用、研究、改変、共有が認められています。
商用利用、企業利用、社内利用、本番ビジネス利用、ホステッドサービス、有料製品、クライアント業務、コンサルティング業務、組織内での導入は、別途書面によるライセンスなしでは許可されません。
商用またはエンタープライズ向けライセンスについては、[email protected] / @nodiuus までお問い合わせください。