naozoabのブログ

鮮度命でとりあえず学びを書く

リバースエンジニアリングした

とても苦手意識のあるリバースエンジニアリングに挑戦してみた。
意外なことにPEファイルの解読に成功し、Python3に移植することができたので、その流れを簡単に書く。

・まずは動的解析(実行してみるだけ)。VM上で動かして挙動をざっくりと確認する。
・stringsコマンドで、どのような文字列が含まれているかを確認。
・Ghidraで、これまでに得られた文字列で検索をかけ、コードの概要を追う。
・分からないオペランドは最高のサイト(https://hikalium.github.io/opv86/)で調べる。

今までGhidraでドラゴンに実行ファイルを食べさせた後は、entryポイント付近と睨めっこするものだとばかり考えていたので、今回は文字列を使って柔軟にコードを解読し始められてとても良かった。
今回は複雑にフラグレジスタを意識する必要がなかったし、入門にはとても良い問題だった気がする。食事を忘れるほどに没頭でき、とても楽しかった。

また、これまでに微かにアセンブリと触れてきたおかげで「これは汎用レジスタだな...」「リトルエンディアンだから...」と軽く当たりを付けられるようになっていたのはとても良かった。
頭の片隅に点として存在する知識が線で繋がって、やっと理解に近づく人間なので、今後もこういった手を動かした学びを続けていきたい。
ちゃんと積読のGhidra実践ガイドも消化吸収したい。

他の参考になったサイト様:
http://wisdom.sakura.ne.jp/programming/asm/index.html
https://tsalvia.hatenablog.com/entry/2019/04/01/002315