Reversing問題チェックリスト
Reversing
1週目
Pythonプログラムを実行する
patchme
Pythonプログラムを書き換える
unpackme
2週目
ツールの使用
GDBを使う
動的解析の際にデバッガが必要になります。
GDB Test Drive
Visual Studio Codeを使う
変数名を変更して、難読化されたコードの見通しを良くできます。
bloat.py
プログラムで使用される文字列がすべて難読化されています。
関数名が分かりにくいものになっています。
3週目
Ghidraを使う
暗号化されたフラグの復号処理を書いたり、プログラムを書き換えて勝手に呼び出したりするのが基本
普通、ファイルには暗号化されたフラグが埋め込まれている
バイナリにフラグ情報を直接埋め込むとstringsなどで簡単に解けてしまうから
暗号化処理を解析して逆算することを要求される場合もあります。
4週目
アセンブリを読む
Bbbbloat
GDB Test Drive
アセンブリを実際に読むと、問題文中のコマンドの意味がわかります。
5週目
擬似コードを書く
アセンブリは限られたレジスタのみで処理が進むため、そのままだと追うのが難しいです。
動作について何か分かったら、似た動作をするC言語のソースを書いて表現すると良いです。
GDB Test Drive
復号処理が含まれています。
C言語で擬似コードを書いて、復号処理を実装する練習ができます。
Some Assembly Required 2
難しい問題です。
まず、JavaScriptの難読化を復元する必要があります。
次に、wasmの動作を解析する必要もあります。
たくさん解く
解くことで新しい知識を学ぶ
SECCON
日本で開催されている
SECCON Beginnersは初心者に解ける問題もある
https://github.com/SECCON
SECCONのGitHub