
TinyLoad v7.3
オープンソースのWindows x64 PEパッカー兼クリプター。カスタム仮想マシンで実行可能ファイルを圧縮・暗号化し、自己解凍型スタブに変換します。
TinyLoad v7.3 - Windows 向け PE パッカー
TinyLoad は x64 実行ファイル向けの PE クリプター/パッカーです。入力された exe をさまざまな保護レイヤーでパックし、リバースエンジニアリングを防ぎます。単一の .cpp ファイルだけで構成され、外部依存関係はありません。
動作の仕組み
TinyLoad はペイロードを自身のコピーに追加します。パックされた exe が実行されると、ペイロードを抽出して復号し、元のファイルをディスクに書き出すことなくメモリ上で直接実行します。パックするたびに VM オペコードがランダムに変更され、それぞれ独立した鍵を持つ 4 つのサブテーブルに配置されるため、同じビルドは 2 つとして存在しません。
ダウンロード
リリース からプリコンパイル済みバイナリを入手するか、自分でビルドしてください。
ソースからのビルド
MinGW (g++) が必要です。次のように実行するだけです:
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s
または build.bat を使用します。
使い方
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
| フラグ | 説明 |
|---|---|
--i <file> | パックする入力 exe |
--o <file> | 出力パス(デフォルト: input_packed.exe) |
--vm | VM 暗号化 |
--c | LZ77 圧縮 |
--veh | VEH ページフォールト復号 |
--noconsole | GUI サブシステム |
--vm、--c、--veh のうち少なくとも 1 つが必要です。
例
DIE 画像
圧縮
ハッシュチェーンマッチングと 64KB のスライディングウィンドウを使用したカスタム LZ77 圧縮。圧縮が最初に実行され、その上に VM 暗号化が適用されるため、圧縮データ内のパターンも隠されます。
VM 暗号化
スタブ内で動作するカスタムの 28 オペコード仮想マシン。オペコードはランダムに 8 個ずつの 4 つのサブテーブルに配置され、各サブテーブルはペイロードデータから導出された異なる鍵で XOR 暗号化されます。1 つのサブテーブルをクラックしても、28 個中最大 8 個のオペコードしか判明しません。暗号自体は、VM インタープリタ内で完全に実行される、rotl と rotr の鍵混合を使用した 128 ビットストリーム暗号です。ペイロードは XXTEA を使用して暗号化されます。
VEH ページフォールト復号
--veh を有効にすると、すべての PE セクションページが PAGE_NOACCESS としてマップされます。プログラムがページにアクセスしようとすると例外が発生し、ベクタード例外ハンドラがその 1 ページだけを復号して正しい保護を設定します。ウォッチドッグスレッドがバックグラウンドで実行され、200ms 間アクセスされていないページを再暗号化します。どの時点でもプログラムの大部分はメモリ上で暗号化されたままなので、メモリダンプには最近アクセスされた部分しか記録されません。
アンチダンプ
最も重要な 4 つの API(GetModuleHandleA、GetProcAddress、ExitProcess、VirtualAlloc)は、スタブ内のラッパー関数を通してリダイレクトされます。ペイロードが読み込まれた後、インポートディレクトリ全体がゼロ化されるため、メモリダンプからインポートテーブルを再構築できません。
グラフ:
ライセンス
MIT
補足
- readme に載せていない機能がたくさんあります。コードを自分で読むか、changelog.md を参照してください。
- これは私がテストしたほとんどのファイルで動作します。あなたのファイルで動かない場合は issue を開いてください。調査します。
- 提案や機能アイデアも issues にどうぞ。
- 使っていただけるなら、スターがとても助けになります <3
- 今後のアップデートについては、ブログ https://iamsopotatoe-coder.github.io/TinyLoad/#blog をチェックしてください。
- はい、AV はパッカーを検出します。それは想定内です。(現在 VirusTotal で 9 件の検出があります。これでパックしたファイルはどれも 9 件検出されます。内容は関係ありません。)
- これをマルウェアのパックに使わないでください。正規の目的を意図しています。