Dogboltデコンパイラ・エクスプローラー
(dogbolt.org)- Dogboltは、バイナリをアップロードして複数のデコンパイラ結果を1か所で比較できる Decompiler Explorer
- アップロードできるファイルは2MB未満に制限されており、アップロードされたバイナリは保存されるとの案内がある
- 直接ファイルをアップロードしなくても動作を確認できるようにサンプルが提供されている
- 連携されたツールには angr、BinaryNinja、Boomerang、dewolf、Ghidra、Hex-Rays、RetDec、Snowman などが含まれる
- 各ツール名はWebサイトやリポジトリにリンクされており、比較結果を見ながらツール情報をすぐ確認できる
バイナリアップロード条件
- Dogboltは、ユーザーがバイナリファイルをアップロードしてデコンパイル結果を確認する流れを提供している
- ファイルサイズは2MB未満である必要がある
- アップロードされたバイナリは保存されるという案内と FAQ リンクがあわせて表示される
サンプルで先に確認可能
- ファイルを直接アップロードしなくても確認できるサンプル一覧がある
- サンプルは、複数のデコンパイラ結果を並べて確認する用途向けに構成されている
1件のコメント
Hacker Newsのコメント
今週まで待ってから投稿してくれたことに感謝したい。おそらく最近のC++ Weeklyで取り上げられた影響だと思うし、良い資料でもある: https://www.youtube.com/watch?v=h3F0Fw0R7ME
先週までは性能問題が深刻だったが、今は待ち行列(https://dogbolt.org/queue)が概ね大丈夫そうに見える。一部のデコンパイラで滞留している長いボトルネックを除けばかなりスムーズに動いていて、JoshとGlennが見事に改善してきた: https://github.com/decompiler-explorer/decompiler-explorer/c...
関連記事: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - 2022年7月、コメント82件
博士課程の研究、とくに難読化コード向けディープラーニングを扱っていたときには、これが本当に必要だったと思う
実験初期にはGhidraがマルチプロセシングと相性が悪く、処理すべきデータも多かったのでangrに乗り換えた。Ghidraでもできたのかもしれないが、同じことをangrでやるほうがずっと簡単だった。名前も気に入っている。ただ、Compiler Explorerがプロジェクト名でGodboltは作者の姓だという点は指摘しておきたいが、すでにGodboltを動詞のように使う段階ならもう手遅れかもしれない
さまざまな中間表現(IR) へのバイナリリフティングを探れる似たツールがあるといいと思う。たとえばGhidra p-codeやsleigh、LLVM Machine IR、Qemu TCGなど
Binary Ninjaの基盤となっている複数段階の中間言語群であるBNILも興味深いかもしれない。cloud.binary.ninjaのUIやデモで公開されている形を見ることができる
デコンパイラの話が出たついでに、Binary Ninjaを選んでも無難な選択なのか気になる。IDAが標準だと聞くが、趣味でリバースエンジニアリングをやる人には高価でもある
個人的にはBinja最大の利点は中間言語(IL) だと思う。高水準ILがデコンパイラの役割を果たす一方で、アセンブリとソースの中間段階として低水準・中水準ILも提供される。デコンパイラの結果が少し変なら、ILを見ることで何が起きているのかをよりよく把握できるし、IL自体も生のアセンブリよりずっと読みやすいのでよく使うようになる。他のプラットフォームにはこれにきちんと対応する機能がほとんどない。GhidraとIDAにもそれぞれILは1つあるが、Binjaの人間に読みやすいILに比べると機械向きに近い
欠けているのはPythonスクリプティングで、これはかなり大きな違いではある。それでも無料ツールとしては文句を言いにくい。IDAとGhidraは強み・弱みやコミュニティプラグインが異なるので、両方使うのがよい可能性が高い
とても良い。最近エミュレータのプロジェクトをやっていて、自分でディスアセンブラを実装しているのだが、機械語パターンを一般化した形に変換し、それをCに近い擬似コードへ落とし込むにはどうすればよいかをずっと考えてしまう
だから最近は、おもちゃのデコンパイラを自分で作ってみたい気持ちがかなり強い
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ 例
非専門家向けの、良くて詳しいデコンパイラのチュートリアルはあるだろうか?
dogboltの出力をgodboltに入れてみればよさそうだ
これを見ると、他社を説得する必要もほとんどなかったように思える。小さなバイナリサイズと競合比較が、より多くのビジネスにつながると気づいたはずだからだ
サービス間の問題を分類し、解決策を比較するのにちょうどいい小さなソリューションに見える
費用が特別安いわけではない。デコンパイラを動かすにはかなりの計算資源が必要で、とくに一部のデコンパイラは効率が良いとは言いがたい
昨年投稿されたときに見ておきたかった。本当にクールで、とても便利だ