
🛡️ Windows PE向けオープンソースのバイナリ保護ツールキット。Nanomite、VM保護、アンチデバッグなど。
Secure(セキュア) Quality(品質) Uncrackable(解析不能) Runtime(実行時) Encryption(暗号化) – Windows PEファイル向け高度なバイナリ保護ツールキット
SQUREは、リバースエンジニアリング、デバッグ、改ざんに対する多層防御を提供します。
| 機能 | 説明 |
|---|---|
| ナノマイト | 条件分岐をINT3に置き換え、実行時にVEHがディスパッチ |
| XTEA暗号化 | PEヘッダーから鍵を派生させて.textセクションをページごとに暗号化 |
| VM保護 | カスタムバイトコードインタプリタでコードを仮想化 |
| タイダルメモリ | ページ単位の暗号化とオンデマンドVEH復号 |
| ハニーポット | 分析を誤誘導するダミー関数とトラップコード |
| アンチデバッグ | PEB.BeingDebuggedの検出と鍵の破壊 |
| アンチダンプ | メモリダンプ防止技術 |
| サンドボックス検出 | CPUIDに基づくVM/ハイパーバイザー検出 |
| インポート難読化 | IATのハッシュ化と実行時解決 |
| 整合性チェック | 改ざん検出のためのカスケードハッシュチェーン |
| Shamir秘密分散 | GF(2^64)上で3つのシェアに鍵を分割 |
| ホワイトボックス暗号 | DCA攻撃に耐性のあるルックアップテーブル |
# リポジトリをクローン
git clone https://github.com/mttm2/squre.git
cd squre
# リリースバイナリをビルド
cargo build --release
# CLIは target/release/squre-cli.exe に配置されます
# 基本保護
squre-cli protect app.exe -o protected.exe
# 最大保護(全機能有効)
squre-cli protect app.exe -o protected.exe --level maximum
# 再現可能なビルド用のカスタムシード
squre-cli protect app.exe -o protected.exe -s 0xDEADBEEF
squre-cli protect [OPTIONS] --output <OUTPUT> <INPUT>
Options:
-o, --output <OUTPUT> 出力PEファイルのパス
-s, --seed <SEED> CEWEシード(16進数、未指定時はランダム)
-l, --level <LEVEL> 保護レベル: standard(デフォルト)または maximum
保護機能:
--vm VM保護を有効化(仮想化コード)
--honeypot ハニーポットモードを有効化(ダミー関数、トラップ)
--tidal タイダルメモリを有効化(ページ単位の暗号化)
--ultra 超強化モードを有効化(16フェーズのアンチ分析)
--harden 強化モードを有効化(ポリモーフィックセクション)
--anti-dump メモリダンプ防止保護を有効化
--integrity-check コード整合性チェックを有効化
--direct-syscall 直接システムコールを有効化(ユーザーモードフックをバイパス)
チューニング:
--junk-level <0-3> ジャンクコード挿入レベル
--fake-keys <N> 埋め込むダミー鍵の数
--layers <1-3> 暗号化レイヤー(XTEA/XOR/Rolling)
--obfuscate <0-3> 難読化レベル
--no-nanomite ナノマイト分岐を無効化
--no-anti-debug アンチデバッグチェックを無効化
--level maximum)SQUREは、ソースレベル統合によりRustバイナリを自動保護できます。
# Rustプロジェクトのビルドと保護
squre-cli build ./my-rust-project -o protected.exe --level maximum
anti_debug マクロによる保護を有効にするには squre-core クレートを追加します:
use squre_core::anti_debug;
fn main() {
// アンチデバッグとナノマイトハンドラをインストール
anti_debug!();
// ここにコードを記述
}
┌─────────────────────────────────────────────────────────────┐
│ Protection Flow │
├─────────────────────────────────────────────────────────────┤
│ 1. OS loads PE → entry = .sqpre (obfuscated stub) │
│ 2. .sqpre decrypts .sqinit using PE-derived XOR key │
│ 3. .sqinit decrypts .text using XTEA with page keys │
│ 4. Jump to original entry point (CRT init → main) │
│ 5. anti_debug!() installs VEH + loads nanomite table │
│ 6. INT3 branches dispatched by VEH handler │
│ 7. Tidal Memory encrypts pages → VEH decrypts on demand │
└─────────────────────────────────────────────────────────────┘
squre/
├── crates/
│ ├── squre-cli/ # バイナリ保護用CLIツール
│ │ ├── src/
│ │ │ ├── main.rs # CLIエントリポイント
│ │ │ ├── pe/ # PE解析と書き込み
│ │ │ └── transform/ # 保護変換
│ │ │ ├── hardening.rs # アンチ分析フェーズ
│ │ │ ├── honeypot.rs # ダミーコード生成
│ │ │ ├── vm_protect.rs # VMバイトコードコンパイラ
│ │ │ └── ...
│ └── squre-core/ # Rust統合用ランタイムマクロ
├── examples/ # サンプルプロジェクト
└── TUTORIAL.md # 詳細な利用ガイド
SQUREは正規のソフトウェア保護を目的としています。
マルウェアには使用しないでください。 このツールは防御目的専用です。
保護されたバイナリの実行時オーバーヘッドは最小限です。
コントリビューションは大歓迎です! お気軽にIssueやプルリクエストを送信してください。
git checkout -b feature/amazing)git commit -m 'Add amazing feature')git push origin feature/amazing)MITライセンス – 詳細は LICENSE を参照してください。
SQURE – あなたのコードは保護に値するからです。