Reversing
前提知識
問題によって圧縮されていない場合や、別の形式で圧縮されている場合がある
まず表層解析し、次に動作を解析する
Reversingの第一段階
文字列の存在確認
フラグや、それに近い文字列がバイナリに隠れていないかを見る
実行形式の特徴を特定することが必要
ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, ...
out.wasm: WebAssembly (wasm) binary module version 0x1 (MVP) 動作を解析する
実行方法が分かったら、動作の分析を始めることができる
動作の解析は2つの方法を繰り返す
コードを動かして、動作の概要を理解する
何をするファイルなのかを理解したい
理解しやすいが、内部がどのような機構なのか想像するには限界がある
単純な命令の集まりのため、情報を得る効率は低い
手動逆コンパイルのほうがアセンブリ言語への理解が高まると思うt6o_o6t.icon 実行ファイルは、C言語などのソースコードをコンパイルしてリンクしたもの
CTFであってもこれは同じ
変数名を書き換える機能を使って、変数の意味が分かったら随時更新する
アセンブリを読み動的解析も行えている場合、擬似コードを書けると良い C言語で書けるのが良いかもしれないt6o_o6t.icon チームで参加している場合は、書いた擬似コードなどを共有しておくと便利