シェルコードのバッドバイト追放者
概要 • クイックスタート • インタラクティブTUI • ターゲット指定のバッドバイト除去 • バッドバイトプロファイル • 機能 • アーキテクチャ • システム要件 • 依存関係 • ビルド • インストール • 使い方 • 難読化戦略 • ヌル除去戦略 • MLトレーニング • エージェント メナジェリー • 開発 • トラブルシューティング • ライセンス
byvalver は、C で構築されたCLIツールで、x86/x64/ARM/ARM64 シェルコードから bad-bytes を完全な機能等価性を維持しながら自動的に除去(「追放」)します。
v4.0 の新機能: クロスアーキテクチャ対応
| アーキテクチャ | 成熟度 | 戦略数 | 備考 |
|---|---|---|---|
| x86 (32ビット Intel/AMD) | 安定版 v4.2 | 150+ | 本番テスト済み、完全カバレッジ |
| x64 (64ビット Intel/AMD) | 安定版 v4.2 | 150+ | デフォルトアーキテクチャ、本番テスト済み |
| ARM (32ビット) | 実験的 v0.1 | コア7種 | テスト限定的、コア命令のみ |
| ARM64 (AArch64) | 実験的 v0.1 | 基本 | フレームワーク対応、最小限の戦略 |
--arch フラグによる Capstone モードの自動選択v4.0.1 バグ修正:
can_handle ロジックを修正v4.2 の新機能: x64 サポートの強化
is_64bit_register()、is_extended_register()、build_rex_prefix()このツールは Capstone 逆アセンブルフレームワークを使用して命令を解析し、ランク付けされた 175 以上の変換戦略を適用して、bad-byte を含むコードを同等の代替コードに置き換えます。
汎用 bad-byte 追放フレームワークは、2 種類の使用モードを提供します:
--bad-bytes オプションで、追放する任意のバイトを指定できます(例: 改行セーフなシェルコード用に --bad-bytes "00,0a,0d")--profile オプションは、一般的なエクスプロイトシナリオ向けの事前設定済みバッドバイトセットを使用します(例: --profile http-newline、--profile sql-injection、--profile alphanumeric-only)Windows、Linux、macOS に対応
コア技術:
C 実装CapstoneNASM[!NOTE] ヌルバイト除去(
--bad-bytes "00"またはデフォルト): 十分にテスト済み / 汎用バッドバイト除去(--bad-bytes "00,0a,0d"など): 実装されたばかり
数分で byvalver を使い始めましょう:
オプション 1: GitHub から(推奨)```bash curl -sSL https://raw.githubusercontent.com/umpolungfish/byvalver/main/install.sh | bash
**オプション 2: ソースからビルド**```bash
git clone https://github.com/umpolungfish/byvalver.git
cd byvalver
make
sudo make install
sudo make install-man # Install man page
banish NULL BYTES (デフォルト):```bash byvalver input.bin output.bin
**バッドバイトプロファイルの使用:**```bash
# HTTP contexts (removes null, newline, carriage return)
byvalver --profile http-newline input.bin output.bin
# SQL injection contexts
byvalver --profile sql-injection input.bin output.bin
# Alphanumeric-only shellcode (most restrictive)
byvalver --profile alphanumeric-only input.bin output.bin
手動バッドバイト指定:```bash
byvalver --bad-bytes "00,0a,0d" input.bin output.bin
**高度な機能:**```bash
# Add obfuscation layer before denullification
byvalver --biphasic input.bin output.bin
# Enable ML-powered strategy selection
byvalver --ml input.bin output.bin
# Generate XOR-encoded shellcode with decoder stub
byvalver --xor-encode DEADBEEF input.bin output.bin
# Output in different formats
byvalver --format c input.bin output.c # C array
byvalver --format python input.bin output.py # Python bytes
byvalver --format hexstring input.bin output.hex # Hex string
変換したシェルコードは必ず検証してください:```bash
python3 verify_denulled.py --bad-bytes "00,0a,0d" output.bin
python3 verify_functionality.py input.bin output.bin
### クロスアーキテクチャ対応
`byvalver` は `--arch` フラグにより複数のアーキテクチャをサポートしています:
**x86(32ビット Intel/AMD)** - 150以上の戦略で完全サポート```bash
byvalver --arch x86 --bad-bytes "00" x86_shellcode.bin output.bin
x64 (64-bit Intel/AMD) - 完全サポート (デフォルト)```bash byvalver --arch x64 --bad-bytes "00,0a,0d" x64_shellcode.bin output.bin
**ARM (32-bit)** - 基本的な戦略による実験的サポート```bash
byvalver --arch arm --bad-bytes "00" arm_shellcode.bin output.bin
ARM64 (AArch64) - 基本的な戦略を備えた実験的サポート```bash byvalver --arch arm64 --bad-bytes "00,0a" arm64_shellcode.bin output.bin
**注記:**
- ARM/ARM64 サポートはコア命令(MOV、算術演算、ロード/ストア)に重点を置いています
- ARM にはよりシンプルな bad-byte プロファイルを使用してください(例:ヌルバイトのみ)
- ARM/ARM64 を選択した場合、実験的警告が表示されます
- 基本的なアーキテクチャ不一致検出により、シェルコードが誤ったアーキテクチャであると思われる場合に警告します
- 自動アーキテクチャ検出は将来のリリースで計画されています
### バッチ処理
ディレクトリ全体を処理します:```bash
# Process all .bin files recursively
byvalver -r --pattern "*.bin" input_dir/ output_dir/
# Apply HTTP profile to all shellcode in directory
byvalver -r --profile http-newline input_dir/ output_dir/