2 ポイント 投稿者 GN⁺ 2023-12-05 | 1件のコメント | WhatsAppで共有
  • Dogboltは、バイナリをアップロードして複数のデコンパイラ結果を1か所で比較できる Decompiler Explorer
  • アップロードできるファイルは2MB未満に制限されており、アップロードされたバイナリは保存されるとの案内がある
  • 直接ファイルをアップロードしなくても動作を確認できるようにサンプルが提供されている
  • 連携されたツールには angr、BinaryNinja、Boomerang、dewolf、Ghidra、Hex-Rays、RetDec、Snowman などが含まれる
  • 各ツール名はWebサイトやリポジトリにリンクされており、比較結果を見ながらツール情報をすぐ確認できる

バイナリアップロード条件

  • Dogboltは、ユーザーがバイナリファイルをアップロードしてデコンパイル結果を確認する流れを提供している
  • ファイルサイズは2MB未満である必要がある
  • アップロードされたバイナリは保存されるという案内と FAQ リンクがあわせて表示される

サンプルで先に確認可能

  • ファイルを直接アップロードしなくても確認できるサンプル一覧がある
  • サンプルは、複数のデコンパイラ結果を並べて確認する用途向けに構成されている

連携されたデコンパイラツール

1件のコメント

 
GN⁺ 2023-12-05
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やデモで公開されている形を見ることができる
    • Qemuはバイナリを中間表現に変換してからその上で処理する方式だ。Valgrindも同様で、Facebook関連のboltという最適化ツールも同じ発想を使っている
  • デコンパイラの話が出たついでに、Binary Ninjaを選んでも無難な選択なのか気になる。IDAが標準だと聞くが、趣味でリバースエンジニアリングをやる人には高価でもある

    • Binjaのデコンパイラは概ね良い。IDAやGhidraほど成熟してはいないが、悪いデコンパイラではない
      個人的にはBinja最大の利点は中間言語(IL) だと思う。高水準ILがデコンパイラの役割を果たす一方で、アセンブリとソースの中間段階として低水準・中水準ILも提供される。デコンパイラの結果が少し変なら、ILを見ることで何が起きているのかをよりよく把握できるし、IL自体も生のアセンブリよりずっと読みやすいのでよく使うようになる。他のプラットフォームにはこれにきちんと対応する機能がほとんどない。GhidraとIDAにもそれぞれILは1つあるが、Binjaの人間に読みやすいILに比べると機械向きに近い
    • 最近のIDA Freeは、Windows/Linuxのx86_64だけを扱うならProの機能をほぼすべて備えている: https://hex-rays.com/ida-free/
      欠けているのはPythonスクリプティングで、これはかなり大きな違いではある。それでも無料ツールとしては文句を言いにくい。IDAとGhidraは強み・弱みやコミュニティプラグインが異なるので、両方使うのがよい可能性が高い
    • 正直、Ghidraを使えばいい。独特のquirksはあるがかなり良く、しかもオープンソースだ。NSAが使うのに十分なら、趣味用途にも十分である可能性が高い
  • とても良い。最近エミュレータのプロジェクトをやっていて、自分でディスアセンブラを実装しているのだが、機械語パターンを一般化した形に変換し、それをCに近い擬似コードへ落とし込むにはどうすればよいかをずっと考えてしまう
    だから最近は、おもちゃのデコンパイラを自分で作ってみたい気持ちがかなり強い

  • 非専門家向けの、良くて詳しいデコンパイラのチュートリアルはあるだろうか?

    • 需要はありそうだ。誰か参考になる方向性を教えてくれないだろうか?
  • dogboltの出力をgodboltに入れてみればよさそうだ

    • 機械語コードのための機械翻訳だ。理論上は不動点に到達するはず
    • LLMを強化学習して元のコードを復元させることもできそうだ
  • これを見ると、他社を説得する必要もほとんどなかったように思える。小さなバイナリサイズと競合比較が、より多くのビジネスにつながると気づいたはずだからだ
    サービス間の問題を分類し、解決策を比較するのにちょうどいい小さなソリューションに見える

    • 実際その理屈だった。含まれている2つの主要な商用ソリューションであるBinary NinjaHex-Raysが、ホスティング費用をすべて負担している。ちなみに私はBinary Ninjaを作ったVector 35の共同創業者の1人だ
      費用が特別安いわけではない。デコンパイラを動かすにはかなりの計算資源が必要で、とくに一部のデコンパイラは効率が良いとは言いがたい
  • 昨年投稿されたときに見ておきたかった。本当にクールで、とても便利だ