GhidraとChatGPTでバイナリファイルの逆コンパイルと予後を自動で行うpythonスクリプト )
コンピュータが「ビープ・ブープ」することに興味がなく、理解できませんか? このアイドル スクリプトを使用して、バイナリのリバース エンジニアリング、難問の解読、または恋人が作成したマルウェアを実行できます。
バージョンこれプラグインは、現時点では Linux で調査されています。 それにもかかわらず、住居の窓でそれを騒がせるとは限りません。
必要なもの このプラグインを導入するには、次が必要になります:
Ghidra 9.2 以降 (https://で入手可能) ghidra-sre.org/) Python 3.6 以降 Python Pip (https://pypi.org/project/pip/ で入手可能) OpenAI Python API (https://github.com/openai/openai-python で入手可能) Ghidraton (https://github.com/mandiant/Ghidrathon で入手可能) インストール
- このリポジトリをネイティブ マシンにクローンします。 - Ghidra Scripts フォルダに移動し、python ファイル "GhidrAI.py" を複製します。 - Ghidra の作業ディレクトリに移動し、ファイル "chat_gpt.py" を複製します。 - スクリプト マネージャを生成し、スクリプト "ghidrai.py" を実行します。
使用法 これを指示するにはプラグインを使用するには、Ghidra を生成し、購入したバイナリ ファイルを生成して調査するだけです。 バイナリがロードされるとすぐに、プラグインをうまく動かすことができます.
プラグインはOpenAI API に自動的に参加して、逆コンパイルと予測を組み立てます。 デバイスが完全になるとすぐに、プラグインは逆コンパイルされたコードのマスクを表示し、最近のウィンドウで予測が終了します。
アプリの動作を示すかどうかに関係なく、OpenAI API キー (https://openai.com/api/ で入手可能) を OPENAI_API_KEY 環境変数として作成するのは非常に強力です。 . ヘッドレスモード ./analyzeHeadless GHIDRA_PROJECT_DIRECTORY -import YOUR_BINARY -postscript ghidrai.py 謝辞
このプラグインは、Bushido Security の 2ourc3 によって、教えられるプロジェクトの一部として作成されていました。 ChatGPT 言語モデルを開発し、コミュニティで利用できるようにしてくれた OpenAI に感謝します。
例
頭文字<(byte)*pcVar4; if (bVar1 !=*pcVar4)"> ; _memset(local_34,0,0x30); if (param_2==0x111) { if (param_3==2) { PostQuitMessage(0); } else { if (param_3==0x3e9) { GetDlgItemTextA(hDlg_004142a0,1000,(LPSTR)local_34,0x30); pcVar4="cr4ckingL3ssons"; pbVar2=local_34; プロデュース { bVar1=*pbVar2; bVar5=bVar1 <(byte)*pcVar4; if (bVar1 !=*pcVar4)">
{ バイト bVar1; バイト *pbVar2; uint uVar3; char *pcVar4; bool bVar5; バイト local_34 ; _memset(local_34,0,0x30); if (param_2==0x111) { if (param_3==2) { PostQuitMessage(0); } else { if (param_3==0x3e9) { GetDlgItemTextA(hDlg_004142a0,1000,(LPSTR)local_34,0x30); pcVar4="cr4ckingL3ssons"; pbVar2=local_34; プロデュース { bVar1=*pbVar2; bVar5=bVar1 <(バイト)*pcVar4; if (bVar1 !=*pcVar4)
解析コード<(byte)*pcVar4; if (bVar1 !=*pcVar4)"> ; _memset(localSerialKey, 0, 0x30); // localSerialKey バッファを 0 で初期化します。 if (message==WM_COMMAND) { // オケージョンが WM_COMMAND かどうかをテストします。 if (occasion==2) { // 機会がシャット ボタンのボタン クリックかどうかをテストします。 PostQuitMessage(0); // WM_QUIT メッセージをウィンドウに送信します。 } else if (occasion==0x3e9) { // その機会が、ID 1001 に固定されたアテンド アイを持つボタンのボタン クリックかどうかをテストします。 // ID に固定された指定されたattend an eye を使用して、attend an eye fixed のテキストの譲渡マテリアルを取得します。 serialKey="cr4ckingL3ssons"; bytePtr=localSerialKey; プロデュース { currentByte=*bytePtr; comparisonResultBool=currentByte { バイト currentByte; バイト *bytePtr; uint comparisonResult; char *serialKey; bool comparisonResultBool; バイト localSerialKey ; _memset(localSerialKey, 0, 0x30); // localSerialKey バッファを 0 で初期化します。 if (message==WM_COMMAND) { // オケージョンが WM_COMMAND かどうかをテストします。 if (occasion==2) { // 機会がシャット ボタンのボタン クリックかどうかをテストします。 PostQuitMessage(0); // WM_QUIT メッセージをウィンドウに送信します。 } else if (occasion==0x3e9) { // その機会が、ID 1001 に固定されたアテンド アイを持つボタンのボタン クリックかどうかをテストします。 // ID に固定された指定されたattend an eye を使用して、attend an eye fixed のテキストの譲渡マテリアルを取得します。 serialKey="cr4ckingL3ssons"; bytePtr=localSerialKey; プロデュース { currentByte=*bytePtr; comparisonResultBool=currentByte <(バイト)*serialKey; if (currentByte !=*serialKey)
精度 - ChatGPT の説明<(byte)*pcVar4; if (bVar1 !=*pcVar4)">AI 言語モデルとして、私はコードのレビューにおける精度の固定されたパーセンテージを非公開にするつもりはありません。 私の応答の通常と正確さは、私が受け取った入力と、私が真に訓練されたガイドラインに依存します. 私の回答は、膨大な量の原文を伝える素材の記録データを調査することで私が真にプライベートに学んだパターンと記録のデータと一致しています。 私は貴重で有益な回答をするように設計されていますが、複雑なコードや特殊なドメインの全体的または審美的な予測を行うのに常に苦境に陥っているわけではありません. 私の応答は常に最も効率的に操縦するために早くすべきであり、すべてのコードは常に経験豊富な開発者によって徹底的にレビューされ、検証されるべきであり、本番環境でより早くなる前に、マスクを示すことが重要です。 Bushido Security に関する詳細な記録データについては、オンラインの Web ページをご覧ください: https://www.bushido-sec. com/
.
これプラグインは、現時点では Linux で調査されています。 それにもかかわらず、住居の窓でそれを騒がせるとは限りません。
必要なものこのプラグインを導入するには、次が必要になります:
Ghidra 9.2 以降 (https://で入手可能) ghidra-sre.org/) Python 3.6 以降 Python Pip (https://pypi.org/project/pip/ で入手可能) OpenAI Python API (https://github.com/openai/openai-python で入手可能) Ghidraton (https://github.com/mandiant/Ghidrathon で入手可能)インストール
- このリポジトリをネイティブ マシンにクローンします。 - Ghidra Scripts フォルダに移動し、python ファイル "GhidrAI.py" を複製します。 - Ghidra の作業ディレクトリに移動し、ファイル "chat_gpt.py" を複製します。 - スクリプト マネージャを生成し、スクリプト "ghidrai.py" を実行します。
使用法これを指示するにはプラグインを使用するには、Ghidra を生成し、購入したバイナリ ファイルを生成して調査するだけです。 バイナリがロードされるとすぐに、プラグインをうまく動かすことができます.
プラグインはOpenAI API に自動的に参加して、逆コンパイルと予測を組み立てます。 デバイスが完全になるとすぐに、プラグインは逆コンパイルされたコードのマスクを表示し、最近のウィンドウで予測が終了します。
アプリの動作を示すかどうかに関係なく、OpenAI API キー (https://openai.com/api/ で入手可能) を OPENAI_API_KEY 環境変数として作成するのは非常に強力です。 .
ヘッドレスモード
./analyzeHeadless GHIDRA_PROJECT_DIRECTORY -import YOUR_BINARY -postscript ghidrai.py
謝辞
このプラグインは、Bushido Security の 2ourc3 によって、教えられるプロジェクトの一部として作成されていました。 ChatGPT 言語モデルを開発し、コミュニティで利用できるようにしてくれた OpenAI に感謝します。
例
頭文字<(byte)*pcVar4; if (bVar1 !=*pcVar4)"> ; _memset(local_34,0,0x30); if (param_2==0x111) { if (param_3==2) { PostQuitMessage(0); } else { if (param_3==0x3e9) { GetDlgItemTextA(hDlg_004142a0,1000,(LPSTR)local_34,0x30); pcVar4="cr4ckingL3ssons"; pbVar2=local_34; プロデュース { bVar1=*pbVar2; bVar5=bVar1 <(byte)*pcVar4; if (bVar1 !=*pcVar4)">
{ バイト bVar1; バイト *pbVar2; uint uVar3; char *pcVar4; bool bVar5; バイト local_34 ; _memset(local_34,0,0x30); if (param_2==0x111) { if (param_3==2) { PostQuitMessage(0); } else { if (param_3==0x3e9) { GetDlgItemTextA(hDlg_004142a0,1000,(LPSTR)local_34,0x30); pcVar4="cr4ckingL3ssons"; pbVar2=local_34; プロデュース { bVar1=*pbVar2; bVar5=bVar1 <(バイト)*pcVar4; if (bVar1 !=*pcVar4)解析コード<(byte)*pcVar4; if (bVar1 !=*pcVar4)"> ; _memset(localSerialKey, 0, 0x30); // localSerialKey バッファを 0 で初期化します。 if (message==WM_COMMAND) { // オケージョンが WM_COMMAND かどうかをテストします。 if (occasion==2) { // 機会がシャット ボタンのボタン クリックかどうかをテストします。 PostQuitMessage(0); // WM_QUIT メッセージをウィンドウに送信します。 } else if (occasion==0x3e9) { // その機会が、ID 1001 に固定されたアテンド アイを持つボタンのボタン クリックかどうかをテストします。 // ID に固定された指定されたattend an eye を使用して、attend an eye fixed のテキストの譲渡マテリアルを取得します。 serialKey="cr4ckingL3ssons"; bytePtr=localSerialKey; プロデュース { currentByte=*bytePtr; comparisonResultBool=currentByte { バイト currentByte; バイト *bytePtr; uint comparisonResult; char *serialKey; bool comparisonResultBool; バイト localSerialKey ; _memset(localSerialKey, 0, 0x30); // localSerialKey バッファを 0 で初期化します。 if (message==WM_COMMAND) { // オケージョンが WM_COMMAND かどうかをテストします。 if (occasion==2) { // 機会がシャット ボタンのボタン クリックかどうかをテストします。 PostQuitMessage(0); // WM_QUIT メッセージをウィンドウに送信します。 } else if (occasion==0x3e9) { // その機会が、ID 1001 に固定されたアテンド アイを持つボタンのボタン クリックかどうかをテストします。 // ID に固定された指定されたattend an eye を使用して、attend an eye fixed のテキストの譲渡マテリアルを取得します。 serialKey="cr4ckingL3ssons"; bytePtr=localSerialKey; プロデュース { currentByte=*bytePtr; comparisonResultBool=currentByte <(バイト)*serialKey; if (currentByte !=*serialKey)
精度 - ChatGPT の説明<(byte)*pcVar4; if (bVar1 !=*pcVar4)">AI 言語モデルとして、私はコードのレビューにおける精度の固定されたパーセンテージを非公開にするつもりはありません。 私の応答の通常と正確さは、私が受け取った入力と、私が真に訓練されたガイドラインに依存します. 私の回答は、膨大な量の原文を伝える素材の記録データを調査することで私が真にプライベートに学んだパターンと記録のデータと一致しています。 私は貴重で有益な回答をするように設計されていますが、複雑なコードや特殊なドメインの全体的または審美的な予測を行うのに常に苦境に陥っているわけではありません. 私の応答は常に最も効率的に操縦するために早くすべきであり、すべてのコードは常に経験豊富な開発者によって徹底的にレビューされ、検証されるべきであり、本番環境でより早くなる前に、マスクを示すことが重要です。Bushido Security に関する詳細な記録データについては、オンラインの Web ページをご覧ください: https://www.bushido-sec. com/
.