といっても,復元不可能とわかっている情報 (コメントやローカル変数名など)についてはスッパリあきらめて,復元可能な情報をいかに読みやすい形で表示するか (元通りでなくても読みやすければよい) という目標にすり替えます.
まさにそれなんだけど。今やろうとしている解析の対象のバイナリは、元の言語がCですらない。
解析としては、
- 関数引数がわかる。
- ループ変数がわかる。
- 短絡評価を消すことができる
とかでもかなり大きい。fragmentをつなぎあわせるのが楽になるからだ。
すべてを解析したいわけではない(興味のあるのはアルゴリズムとかファイルフォーマットであるケースがほとんどのはず)ので、絞込みを効率化することも大事。
ジャンルによってはfloatがらみのコードが出てくる関数かどうかを判定するだけでも違う。普通はUIにはfloat演算は出てこないからだ(MacのQuartzは違うだろうが)。
ただ、GUIは普通、APIをCallするので、その周辺を捨てることはできる。逆にFile Formatはfileを読み書きするAPIから切り崩すことになる。
0 件のコメント:
コメントを投稿