Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SHGenOb — Pythonベースのツールで、PIC Cからシェルコードを生成します。 | Kitploit
ツール/GitHubGitHub/oldboy21/shgenob
暗号化/復号化ツールペイロード生成エクスプロイトシェルコードマルウェア分析バイナリ解析学習と教育シェルコード生成
GitHuboldboy21/shgenob

SHGenOb

Pythonベースのツールで、PIC Cからシェルコードを生成します。

リポジトリを見る
435410ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

SHGenOB: PIC Cコードからのシェルコード生成ツール

はじめに

SHGenOBは、C言語で記述された位置独立コード(PIC)からシェルコードを生成するために設計されたPythonベースのツールです。Cコードのコンパイル、.textセクションの抽出、および必要に応じてXOR暗号化を使用したシェルコードの暗号化を自動化します。

このプロジェクトは、hasherezadeによるこの資料に完全に基づいています。

位置独立コード(PIC)

SHGenOBユーザーへの重要な注意: このシェルコード生成ツールが正しく動作するためには、入力ファイルのCコードが位置独立コード(PIC)として記述されている必要があります。このツールは、提供されたコードが以下で説明するPICの原則と特性に従っていることを前提としています。

位置独立コード(PIC)は、その絶対メモリアドレスに関係なく実行できる機械語の一種です。この特性により、PICはシェルコード、共有ライブラリ、および特定の種類のマルウェアの作成に特に有用です。PICの主な特徴は次のとおりです:

  • アドレス独立性: PICは、メモリ内のどこにロードされても正しく実行できます。
  • 固定メモリ参照なし: 絶対アドレスを使用せず、代わりに相対アドレッシングやその他の手法を使用してメモリ位置を参照します。
  • 自己完結型: PICは通常、必要なデータをすべてコード自体に含んでいるため、外部依存関係が減少します。
  • スタック文字列: 文字列をcharの配列として宣言すると、コンパイラはそれらをPEファイルの.dataセクションや.pdataセクションではなく、スタックにプッシュします。
  • 再配置不要: ローダーによる再配置を必要としないため、ロードと実行が高速化されます。
  • サイズの縮小: PICは、位置依存コードと比較して、バイナリサイズが小さくなることがよくあります。
  • レジスタ相対アドレッシング: データへのアクセスやジャンプを実行するために、レジスタ相対アドレッシングを頻繁に使用します。
  • オフセットの使用: 絶対アドレスの代わりに、現在の命令ポインタからのオフセットを使用します。
  • プラットフォーム固有の技術: CPUアーキテクチャによって、位置独立性を実現するために異なる技術が必要になる場合があります。

PICは、コードの正確なロードアドレスが事前にわからないシナリオで不可欠であり、シェルコード開発やシステムプログラミングの特定の分野における重要な概念です。SHGenOBを使用する際は、効果的で信頼性の高いシェルコードを生成するために、入力CコードがこれらのPICの原則に従っていることを確認してください。

機能

  • Microsoft Visual Studioツールを使用してPIC Cコードをコンパイル
  • コンパイルされた実行可能ファイルから.textセクションを抽出
  • オプションでXOR暗号化を使用してシェルコードを暗号化
  • 生成されたシェルコードをローダーテンプレートに挿入
  • 生成されたシェルコードを使用してローダーをコンパイルおよびテスト
  • 中間ファイル検査のためのデバッグモードをサポート
  • 正常実行後の中間ファイルのクリーンアップ

必要条件

  • Windowsオペレーティングシステム
  • Python 3.6以上
  • Microsoft Visual Studio 2022 Community Edition(または互換バージョン)
  • 以下のPythonパッケージ:
    • pefile
    • argparse
  • Visual StudioのCコンパイラ(cl.exe)およびアセンブラ(ml64.exe)
  • Visual Studioのvcvars64.batファイル(コンパイル環境のセットアップ用)

インストール

  1. python.orgからPython 3.6以上をインストール
  2. Microsoft Visual Studio 2022 Community Editionをインストール
  3. 必要なPythonパッケージをインストール:

pip install pefile argparse

  1. このリポジトリをクローンまたはダウンロードしてローカルマシンに配置

使用方法

次の構文でコマンドラインからスクリプトを実行します:

root@kitploit:~
python shgenob.py --code-file <c_fileへのパス> [--masm-file <masm_fileへのパス>] [--debug] [--xor-key <キー>]

引数:

  • --code-file または -cf: (必須)PICコードを含むmain.cファイルへのパス
  • --masm-file または -mf: (オプション)シェルコードに追加のアセンブリロジックを含めるための外部.masmファイルへのパス
  • --debug または -d: (オプション)デバッグモードを有効にする(中間ファイルのクリーンアップをスキップ)
  • --xor-key または -xk: (オプション)シェルコードを暗号化するためのXORキー(形式: AA,BB,CC)

例:

root@kitploit:~
# 基本使用法
python shgenob.py --code-file main.c

# 外部MASMファイルを使用
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# すべてのオプションを使用
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

関数の説明

  1. save_to_file(content, filename): 指定されたコンテンツを現在のディレクトリのファイルに保存
  2. cleanup(): 現在のディレクトリ内の中間ファイル(.asm, .exe, .obj, .lnk)を削除
  3. xor_encrypt(shellcode, key): 指定されたXORキーでシェルコードを暗号化
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): シェルコードをローダーテンプレートに挿入
  5. extract_text_section(file_path, key): PEファイルから.textセクションを抽出し、オプションで暗号化
  6. find_file(root_dir, file_name): 指定されたディレクトリとそのサブディレクトリ内でファイルを検索
  7. run_command_with_vcvars(command, vcvars_path): Visual Studio環境変数を設定してコマンドを実行
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Visual Studioコンパイラを使用してC++ファイルをコンパイル
  9. modify_asm_file(asm_file): 生成されたアセンブリファイルをシェルコード互換性のために変更
  10. main(cpp_file, args): シェルコード生成プロセスを調整するメイン関数

ワークフロー

  1. コマンドライン引数を解析
  2. Visual Studioツール(vcvars64.bat, cl.exe, ml64.exe)を検索
  3. 入力Cファイルをアセンブリにコンパイル
  4. 生成されたアセンブリファイルを変更
  5. 変更されたアセンブリファイルをアセンブル
  6. 結果の実行可能ファイルから.textセクションを抽出
  7. オプションで抽出したシェルコードを暗号化
  8. シェルコードをファイルに保存
  9. シェルコードをローダーテンプレートに挿入
  10. ローダーをコンパイル
  11. 生成されたシェルコードでローダーをテスト
  12. 中間ファイルをクリーンアップ(デバッグモード時以外)

デバッグ

--debugフラグを使用してクリーンアッププロセスをスキップし、中間ファイルを検査します。これはトラブルシューティングやシェルコード生成プロセスの理解に役立ちます。

セキュリティに関する考慮事項

  • このツールは教育目的および許可されたテスト目的のみを対象としています
  • 生成されたシェルコードは、ウイルス対策ソフトウェアによってフラグが立てられる可能性があります
  • 暗号化(XORキー)を使用してシェルコードを難読化しますが、これは基本的な難読化の形式であることに注意してください
  • 対象システムでこのツールを使用する許可があることを確認してください

制限事項

  • 現在、WindowsおよびMicrosoft Visual Studioツールチェーンのみをサポート
  • 一部のエッジケースに対するエラーハンドリングは限定的
  • XOR暗号化は基本的な難読化の形式であり、すべてのユースケースに十分ではない可能性があります

貢献

SHGenOBを改善するための貢献を歓迎します。以下の手順に従ってください:

  1. リポジトリをフォーク
  2. 機能用の新しいブランチを作成
  3. 変更をコミット
  4. ブランチにプッシュ
  5. 新しいプルリクエストを作成
ツールをダウンロード