14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ghidra を使ってみよう

Posted at

Ghidra is 何

Ghidra は NSA が開発したリバースエンジニアリングツールです。
"ギドラ" と読むそうです。名前といい、開発元といい、とても強そうですね(何が)。

インストールと最初の起動

Mac の場合は Homebrew でインストールできます。

brew install java  # JDK がインストール済みの場合は不要
brew install ghidra

このままでも起動はするのですが、途中 GateKeeperでエラーになります。

スクリーンショット 2021-01-26 6.23.23.png

issueは提案されていていくつか回避策はあるようですが、いまいちな気がしたので以下のようにしました。

xattr -d com.apple.quarantine /usr/local/Caskroom/ghidra/9.2.1,20201215//ghidra_9.2.1_PUBLIC/GPL/DemanglerGnu/os/osx64/demangler_gnu_v2_33_1
xattr -d com.apple.quarantine /usr/local/Caskroom/ghidra/9.2.1,20201215/ghidra_9.2.1_PUBLIC/Ghidra/Features/Decompiler/os/osx64/decompile

ghidraRun コマンドで起動します。
初回の起動時のみ JDK HOME を聞かれます。Homebrew でインストールした場合は /usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home になります。

$ ghidraRun
******************************************************************
JDK 11+ (64-bit) could not be found and must be manually chosen!
******************************************************************
Enter path to JDK home directory: /usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home
Saved changes to /Users/user/.ghidra/.ghidra_9.2.1_PUBLIC/java_home.save

Hello World!

Hello World!を解析してみましょう。

適当に対象のプログラムを作っておきます。

$ cat main.c
#include <stdio.h>

int main(void) {
	printf("Hello World!");
	return 0;
}

$ cc main.c

Ghidra を起動して、プロジェクトを作成します。

  1. File > New Project
  2. Non-Shared Project
  3. Project Directory/Name は適当に。

File > Import File からこのプロジェクトに先程の a.out を登録します。
でもって登録した a.out をダブルクリックするとコードの解析画面になります。
左に3つ並んでいるパネルの Symbol Tree パネルで、Functions > Entry をクリックすると、main 関数にジャンプできます。

entry.png

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?