Dogbolt Decompiler Explorer
(dogbolt.org)- Dogbolt ist ein Decompiler Explorer, mit dem sich durch das Hochladen einer Binärdatei mehrere Decompiler-Ergebnisse an einem Ort vergleichen lassen
- Hochgeladene Dateien sind auf unter 2 MB begrenzt; außerdem wird darauf hingewiesen, dass hochgeladene Binärdateien gespeichert werden
- Es werden Beispiele bereitgestellt, damit sich die Funktionsweise auch ohne eigenes Hochladen von Dateien ansehen lässt
- Zu den angebundenen Tools gehören angr, BinaryNinja, Boomerang, dewolf, Ghidra, Hex-Rays, RetDec und Snowman
- Die Namen der einzelnen Tools sind mit der Website oder dem Repository verlinkt, sodass sich beim Vergleich der Ergebnisse die Tool-Informationen direkt ansehen lassen
Bedingungen für den Upload von Binärdateien
- Dogbolt bietet einen Ablauf, bei dem Nutzer Binärdateien hochladen und die Decompiler-Ergebnisse prüfen können
- Die Dateigröße muss unter 2 MB liegen
- Es wird zusammen mit einem FAQ-Link darauf hingewiesen, dass hochgeladene Binärdateien gespeichert werden
Zuerst mit Beispielen prüfen
- Es gibt eine Liste von Beispielen, die sich auch ohne direktes Hochladen einer Datei ansehen lassen
- Die Beispiele sind dafür gedacht, mehrere Decompiler-Ergebnisse nebeneinander zu betrachten
1 Kommentare
Meinungen auf Hacker News
Ich möchte der Person, die das gepostet hat, dafür danken, dass sie bis diese Woche gewartet hat. Vermutlich hängt das mit der jüngsten Folge von C++ Weekly zusammen, und es ist gutes Material: https://www.youtube.com/watch?v=h3F0Fw0R7ME
Noch letzte Woche gab es erhebliche Performance-Probleme, aber jetzt sieht die Queue (https://dogbolt.org/queue) größtenteils in Ordnung aus. Abgesehen von einigen längeren Engpässen bei manchen Decompilern läuft es ziemlich reibungslos, und Josh und Glenn haben hervorragende Verbesserungen vorgenommen: https://github.com/decompiler-explorer/decompiler-explorer/c...
Verwandter Beitrag: Decompiler Explorer - https://news.ycombinator.com/item?id=32079227 - Juli 2022, 82 Kommentare
Während meiner Promotion hätte ich das wirklich gut gebrauchen können, besonders als es um Deep Learning für obfuskierten Code ging.
Zu Beginn der Experimente harmonierte Ghidra nicht gut mit Multiprocessing, und wegen der großen Datenmengen bin ich auf angr umgestiegen. Vielleicht wäre es auch mit Ghidra möglich gewesen, aber dieselbe Aufgabe mit angr zu erledigen war deutlich einfacher. Der Name gefällt mir auch. Allerdings möchte ich anmerken, dass Compiler Explorer der Projektname ist und Godbolt der Nachname des Autors; aber wenn man Godbolt schon wie ein Verb verwendet, ist der Zug wohl abgefahren.
Es wäre schön, ein ähnliches Tool zu haben, mit dem man Binary Lifting in verschiedene Intermediate Representations (IR) erkunden kann. Zum Beispiel Ghidra p-code und sleigh, LLVM Machine IR oder Qemu TCG.
Auch BNIL, das Bündel mehrerer Intermediate-Language-Stufen, auf dem Binary Ninja basiert, könnte interessant sein. In der UI von cloud.binary.ninja oder in der Demo kann man sehen, wie es offengelegt wird.
Wo wir gerade bei Decompilern sind: Ich frage mich, ob Binary Ninja eine sichere Wahl wäre. Ich habe gehört, dass IDA der Standard ist, aber für jemanden, der Reverse Engineering als Hobby betreiben will, ist es auch teuer.
Persönlich sehe ich den größten Vorteil von Binja in seiner Intermediate Language (IL). Die High-Level-IL übernimmt die Rolle des Decompilers, aber zwischen Assembly und Source gibt es auch Low-Level- und Mid-Level-IL. Wenn das Decompiler-Ergebnis etwas merkwürdig ist, kann man anhand der IL besser nachvollziehen, was passiert, und die IL selbst ist deutlich lesbarer als reines Assembly, sodass man sie häufig nutzt. Auf anderen Plattformen gibt es kaum eine wirklich entsprechende Funktion. Ghidra und IDA haben zwar jeweils auch eine IL, aber sie sind im Vergleich zu Binjas menschenlesbarer IL eher maschinenlesbar.
Was fehlt, ist Python-Scripting, und das ist schon ein ziemlich großer Unterschied. Trotzdem ist es schwer, sich über ein kostenloses Tool zu beschweren. IDA und Ghidra haben unterschiedliche Stärken und Schwächen sowie unterschiedliche Community-Plugins, daher ist es wahrscheinlich am besten, beide zu verwenden.
Sehr schön. Ich arbeite gerade an einem Emulator-Projekt und implementiere selbst einen Disassembler; dabei frage ich mich ständig, wie man Maschinencode-Muster in eine verallgemeinerte Form überführt und dann in C-ähnlichen Pseudocode umwandelt.
Deshalb habe ich im Moment große Lust, selbst einen Spielzeug-Decompiler zu bauen.
[1] https://docs.binary.ninja/dev/bnil-overview.html
[2] https://riverloopsecurity.com/blog/2019/05/pcode/ Beispiel
Gibt es ein gutes, ausführliches Decompiler-Tutorial, das auch für Nicht-Experten geeignet ist?
Man könnte die Ausgabe von dogbolt einfach in godbolt einspeisen.
Wenn ich das sehe, musste man andere Firmen vermutlich kaum noch überzeugen. Sie dürften erkannt haben, dass kleine Binary-Größen und Vergleiche mit der Konkurrenz zu mehr Geschäft führen.
Es wirkt wie eine kleine Lösung, die ideal ist, um Probleme zwischen Services einzuordnen und Lösungsansätze zu vergleichen.
Die Kosten sind nicht gerade niedrig. Decompiler auszuführen benötigt ziemlich viel Rechenleistung, und insbesondere einige Decompiler kann man kaum als effizient bezeichnen.
Schade, dass ich es nicht gesehen habe, als es letztes Jahr gepostet wurde. Wirklich cool und sehr praktisch.