SHGenOBは、C言語で記述された位置独立コード(PIC)からシェルコードを生成するために設計されたPythonベースのツールです。Cコードのコンパイル、.textセクションの抽出、および必要に応じてXOR暗号化を使用したシェルコードの暗号化を自動化します。
このプロジェクトは、hasherezadeによるこの資料に完全に基づいています。
SHGenOBユーザーへの重要な注意: このシェルコード生成ツールが正しく動作するためには、入力ファイルのCコードが位置独立コード(PIC)として記述されている必要があります。このツールは、提供されたコードが以下で説明するPICの原則と特性に従っていることを前提としています。
位置独立コード(PIC)は、その絶対メモリアドレスに関係なく実行できる機械語の一種です。この特性により、PICはシェルコード、共有ライブラリ、および特定の種類のマルウェアの作成に特に有用です。PICの主な特徴は次のとおりです:
PICは、コードの正確なロードアドレスが事前にわからないシナリオで不可欠であり、シェルコード開発やシステムプログラミングの特定の分野における重要な概念です。SHGenOBを使用する際は、効果的で信頼性の高いシェルコードを生成するために、入力CコードがこれらのPICの原則に従っていることを確認してください。
pip install pefile argparse
次の構文でコマンドラインからスクリプトを実行します:
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)例:
# 基本使用法
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
save_to_file(content, filename): 指定されたコンテンツを現在のディレクトリのファイルに保存cleanup(): 現在のディレクトリ内の中間ファイル(.asm, .exe, .obj, .lnk)を削除xor_encrypt(shellcode, key): 指定されたXORキーでシェルコードを暗号化insert_shellcode_into_loader(formatted_shellcode, loader_file): シェルコードをローダーテンプレートに挿入extract_text_section(file_path, key): PEファイルから.textセクションを抽出し、オプションで暗号化find_file(root_dir, file_name): 指定されたディレクトリとそのサブディレクトリ内でファイルを検索run_command_with_vcvars(command, vcvars_path): Visual Studio環境変数を設定してコマンドを実行compile_cpp_file(cpp_file, vcvars_path, output_exe): Visual Studioコンパイラを使用してC++ファイルをコンパイルmodify_asm_file(asm_file): 生成されたアセンブリファイルをシェルコード互換性のために変更main(cpp_file, args): シェルコード生成プロセスを調整するメイン関数--debugフラグを使用してクリーンアッププロセスをスキップし、中間ファイルを検査します。これはトラブルシューティングやシェルコード生成プロセスの理解に役立ちます。
SHGenOBを改善するための貢献を歓迎します。以下の手順に従ってください: