◆結論

  • フォルダ名に全角文字とかスペースが入っていると動かないかも
  • 管理者権限で実行

◆Ghidraってなんだよ

リバースエンジニアリングツール。プログラムの解析ツール。

NSA(アメリカ国家安全保障局)が作ってるんだらしい。

https://ghidra-sre.org/

◆いきさつ

Androidのアプリを解析しようと思って以下のツールを触ってたんだけど

Perfare/Il2CppDumper: Unity il2cpp reverse engineer (github.com)

より深い解析には別のツールと組み合わせる必要があるらしかった。IDAってのを使えばいいらしい。IDAの噂は聞いたことある。やるぞぉと思ってIDAをインストールしたんだけど、使い方わけわからん。感覚的じゃない。

しかも使いたい機能が有料のProにしか存在してなくて、でもUIがまぁまぁ受け入れがたかったんで躊躇した。メンテできてねぇ気がする。価格がホームページから確認できなかったのも不安。ユーザーアカウント作らされんのも面倒。

代替ツールねぇかなと思って「IDA alter」とかで検索をかけたらGhidraを発見した。よく見たらIl2CppDumperもGhidraに対応してた。

◆うごきません

久々にめちゃくちゃ詰まった。

G[: CENXLaunchSupport���oу[hł܂ł
: java.lang.ClassNotFoundException: LaunchSupport
G[: CENXLaunchSupport���oу[hł܂ł
: java.lang.ClassNotFoundException: LaunchSupport
G[: CENXghidra.Ghidra���oу[hł܂ł
: java.lang.ClassNotFoundException: ghidra.Ghidra
Press any key to continue . . .

これがもうわけわからん。調べても調べてもわからん。考えうる色々を試したんだけどまったく通過できん。楽しくなってくるくらい通過できない。

途方に暮れすぎて盛大に糞を漏らしてしまったので、サブ機で動かそうと思った。

動いた。環境の違いを考えつつ思い当たったのが、パス。ユーザーディレクトリがいま全角文字列かつ全角空白を含んでたんですね。だからCドライブ直下にGhidraを移してbat叩いたら動きましたとも。超脱力した。膝から崩れ落ちた。

いや、その時は逆立ちしてたんで肘から崩れ落ちた。

最近のWindowsってMicrosoftアカウントと紐づけてセットアップさせやがるんだけど、そこで決められるユーザーディレクトリ名がユーザー名を(ほぼ強制的に)使ってきやがるんですね。それゆえ発生した詰まりです。ビルゲイツ死ねマジで殺す。

せめてユーザーディレクトリ名変えるのを簡単にしてくれ。

◆最終的なGhidraの動かし方2022

ただ、使っててなんかヌルポとか吐いてきやがるからそもそも全角とか空白とか含まないユーザー名のアカウント作ってそこでやるのがいいんだろうと思う。あるいはDocker Desktopでコンテナ立ててアレするとか。

https://github.com/blacktop/docker-ghidra

最終的にはサブ機で解析したわ。使ってみた感じとして、IDAよりは使いやすい気がする。

◆余談

  • Eclipseとかも同じような事象があるらしい。最近使ってなかったんで知らんかったが。
  • Windowsの設定変えてSJISを排そうとしたけどそれも無理っぽかった。
  • ghidraRun.batのなかの「bg」ってのを「fg」に変えるとログとか見られてなんか思える。
    • デフォルトのエンコーディングがUTF-8だからどうこうって言われる。
  • ghidraも使いやすいとは特に思わない。けど使える気はする。
  • 以下ページを読み込んでいろいろ試せば解決する気はする。
  • 解析の手順は以下ページを参照してる。

◆結

PC触ってて詰まることが久しくなかったから、たまにこういうことあると楽しい。