Blackbone
Windowsメモリハッキングライブラリ
特徴
プロセス操作
- PEB32/PEB64 の管理
- WOW64 バリアを介したプロセスの管理
プロセスメモリ
- 仮想メモリの割り当てと解放
- メモリ保護の変更
- 仮想メモリの読み取り/書き込み
プロセスモジュール
- ロードされたすべての (32/64 ビット) モジュールの列挙。ローダーリスト/セクションオブジェクト/PEヘッダーの方法を使用したモジュールの列挙。
- エクスポート関数のアドレス取得
- メインモジュールの取得
- ローダーリストからのモジュールのアンリンク
- モジュールの注入と排出 (純粋なILイメージを含む)
- WOW64 プロセスへの64ビットモジュールの注入
- ネイティブPEイメージの手動マッピング
スレッド
- スレッドの列挙
- スレッドの作成と終了。クロスセッションのスレッド作成のサポート。
- スレッドの終了コード取得
- メインスレッドの取得
- TEB32/TEB64 の管理
- スレッドの結合
- スレッドの一時停止と再開
- ハードウェアブレークポイントの設定/削除
パターン検索
- ローカルまたはリモートプロセス内の任意のパターンの検索
リモートコード実行
- リモートプロセス内の関数の実行
- 独自のコードのアセンブルとリモート実行
- cdecl/stdcall/thiscall/fastcall 規約のサポート
- 値、ポインタ、参照による引数のサポート (構造体を含む)
- FPU タイプのサポート
- 新しいスレッドまたは既存のスレッドでのコードの実行
リモートフック
- int3 またはハードウェアブレークポイントを使用したリモートプロセス内の関数のフック
- リターン時の関数のフック
手動マッピング機能
- x86 および x64 イメージのサポート
- 任意の保護されていないプロセスへのマッピング
- 適切なメモリ保護フラグによるセクションマッピング
- イメージの再配置 (サポートされているのは2種類のみ。他の再配置タイプを持つPEイメージは見たことがありません)
- インポートおよび遅延インポートの解決
- バインドインポートは副作用として解決されると思います
- モジュールのエクスポート
- 転送されたエクスポートイメージの読み込み
- APIスキーマ名のリダイレクト
- SxS リダイレクトと分離
- アクティベーションコンテキストのサポート
- ネイティブロード順序と同様のDLLパス解決
- TLS コールバック。1つのスレッドのみ、かつ PROCESS_ATTACH/PROCESS_DETACH 理由のみ。
- 静的 TLS
- 例外処理サポート (SEH および C++)
- いくつかのネイティブローダー構造へのモジュールの追加 (基本的なモジュールAPIサポート: GetModuleHandle、GetProcAdress など)
- セキュリティクッキーの初期化
- C++/CLI イメージのサポート
- イメージのアンロード
- 手動インポートマッピングの場合のインポートライブラリの参照カウンタの増加
- 循環依存関係の適切な処理
ドライバ機能
- ユーザーメモリの割り当て/解放/保護
- ユーザーおよびカーネルメモリの読み取り/書き込み
- WOW64 プロセスに対する永続的なDEPの無効化
- プロセス保護フラグの変更
- ハンドルアクセス権の変更
- プロセスメモリの再マッピング
- 割り当てられたユーザーモードメモリの隠蔽
- ユーザーモードDLLの注入と手動マッピング
- ドライバの手動マッピング
必要条件
- Visual Studio 2017 15.7 以降
- Windows SDK 10.0.17134 以降
- WDK 10.0.17134 以降 (ドライバのみ)
- VC++ 2017 Libs for Spectre (x86 および x64)
- Spectre 緩和策を含む Visual C++ ATL (x86/x64)
ライセンス
Blackbone は MIT ライセンスの下でライセンスされています。依存関係はそれぞれのライセンスに従います。
