ガイド

0x1 ギドラのインストール

  1. Ghidra は、サイバーセキュリティ任務をサポートするために国家安全保障局 (NSA) の研究部門によって開発されたソフトウェア リバース エンジニアリング (SRE) スイートです。ユーザーがさまざまなプラットフォーム (Windows、Mac OS、Linux) でコンパイルされたコードを分析できるようにする、ハイエンド ソフトウェア分析ツールのフル機能セットが含まれています。機能には、逆アセンブリ、アセンブリ、逆コンパイル、プロットとスクリプト、その他数百もの機能が含まれます。IDA と同様に、Ghidra はさまざまなプロセッサ命令セットと実行可能形式をサポートしており、ユーザーはパブリック API を使用して独自の Ghidra プラグインやスクリプトを開発することもできます。違いは、IDA は有料であるのに対し、Ghidra は無料でオープンソースであることです。

  2. Ghidra プロジェクトのホームページまたは GitHub からダウンロードできます。

1)https://Ghidra-sre.org

2)https://github.com/NationalSecurityAgency/Ghidra

3)https://github.com/NationalSecurityAgency/ghidra.git) )

  3. 圧縮パッケージを解凍することで直接Ghidraを利用できるため、各種システム構成を変更する必要がないというメリットがあります。

1. GhidraInstallDir ディレクトリに切り替えて、GhidraRun.bat を実行します。

2. Ghidra はプロジェクトによって管理されます。ユーザーは最初に test という名前のプロジェクトを作成する必要があります。

3. 以前に書いた helloworld を見て、[ファイル] -> [ファイルのインポート] -> で分析したいファイルをインポートします。

4. Ghidra がロードされると、ファイルの基本情報が表示されます。

5. ターゲットファイル名を右クリック -> プログラムから開く -> CodeBrowser で直接分析し、g キーを押して目的のアドレス (例: 00401000) に移動します。中央に逆アセンブリウィンドウが表示され、擬似右がコード、左がセクション、関数テーブル

6. 右側の疑似コードは、図の右上隅に従って C コードをエクスポートすることもできます。

0x3 ギドラの機能

  1. 次に、Ghidra の使用方法を学ぶための簡単なコードを作成します。プログラムは非常に簡単で、パスワードを入力するだけです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int reserveChar(char *ch, int length);
int DectoHex(int dec, char *hex, int h_length);

// 10进制转换16进制
int DectoHex(int dec, char *hex, int h_length)
{
  char str[16] = "0123456789abcdef";
  int i;
  for (i = 0; dec > 0; i++)
  {
    if (i < h_length)
    {
      // 这样存是反着的
      hex[i] = str[dec % 16];
    }
    dec /= 16;
  }
  reserveChar(hex, i);

  return 0;
}

// 翻转字符串
int reserveChar(char *ch, int length)
{
  char temp;
  if (length % 2 == 0)
  {
    for (int i = 0; i != (length / 2); i++)
    {
      temp = ch[i];
      ch[i] = ch[length - i - 1];
      ch[length - i - 1] = temp;
    }
  }
}

int main()
{
  int user = 1314520;
  char password[15] = "";
  char input[15] = "";

  printf("请输入密码:\n");
  scanf("%s", input);

  DectoHex(user, password, 15);

  if (!strcmp(input, password))
  {
    printf("密码正确\n");
  }
  else
  {
    printf("密码错误\n");
  }

  system("pause");
  return 1;
}

2. 次に、プログラムを実行して確認してください。表示されたら、任意のキーを押して続行してください。システム関数が呼び出されていると推測できます。

3. Ghidra に移動し、検索 -> 文字列の場合 -> で一時停止を検索します。

 4. 見つけたら、g を押してアドレスを入力し、右側の相互参照を参照して、ダブルクリックして使用場所を見つけ、キー機能を見つけます。

6. 逆コンパイルウィンドウに移動して疑似コードを確認し、ida の逆コンパイルされたコードを比較すると、IDA の逆コンパイル機能がより強力であることがわかります。

7. Ghidra はデータ、セクション、関数も管理できます。たとえば、他のツールを使用せずに、ここで DOS ヘッダー ファイルを直接表示できます。

おすすめ

転載: blog.csdn.net/qq_47301716/article/details/131059011