Open6

x86 逆コンパイラの調査メモ

okuokuokuoku

McSema

https://github.com/lifting-bits/mcsema

LLVMベース。Readme( https://github.com/lifting-bits/mcsema/blob/d538ca4acc0918894924ab28ce889d14157beb83/README.md#comparison-with-other-machine-code-to-llvm-bitcode-lifters )の他プロジェクト一覧が参考になる。

CFG解決フロントエンドがIDA Proに依存しているためIDA Proのライセンス必須。一応dyninstで書かれたフロントエンド( https://github.com/lifting-bits/mcsema/tree/master/tools/mcsema_disass/dyninst )もあるが未実装部分が多い。

CFGを別の逆コンパイラで解決してremill( https://github.com/lifting-bits/remill )に流す方が良いんだろうか。

okuokuokuoku

angr

http://angr.io/

Python製。LLVM-IRではなく、ValgrindのVEXを基盤としている。命令列のliftもVEXをパッチして利用。

okuokuokuoku

rev.ng

https://github.com/revng/revng

こちらはQEMUのTCGを基盤にしている。エミュレータに命令列のliftをやらせるのは微妙に賢い気はする。PEをサポートしていない。