Kostenloser Quellenoffene Decompiler

Beitrag #5250850 wurde von einem Moderator gelöscht.
Gast #5251291
Lesenswert?

brauch bestimmt noch eine weile bis er auf IDA-Pro+Hex-Rays Niveau ist - 
damit lassen sich aus eigener Erfahrung auch komplizierte Funktionen aus 
EXEn extrahieren und funktionsfähig rekompilieren

die verwendung von LLVM-IR als Zwischensprache gefällt mir
Gast #5251295
Lesenswert?

Bert3 schrieb:
> aus eigener Erfahrung auch komplizierte Funktionen aus
> EXEn extrahieren und funktionsfähig rekompilieren

Das ist doch gar kein use-case für einen Decompiler.
Bzw. ist es kein Maß für die Qualität eines Dekompilers.

Die Qualität misst sich alleine an der Menschenlesbarkeit des 
produzierten Codes.

Assembly in funtional äquivalentes komplett unleserliches C umzuwandeln, 
ist ziemlich trivial.
Beitrag #5251325 wurde von einem Moderator gelöscht.
Gast #5252122
Lesenswert?

>Das ist doch gar kein use-case für einen Decompiler.
>Bzw. ist es kein Maß für die Qualität eines Dekompilers.

bei komplexeren Analysen ist die kompilierbarkeit einfach ein weiteres 
Hilfsmittel um weiter zu kommen - und es gibt nach meinem Wissen gar 
keinen anderen Dekompiler der es überhaupt so weit schafft

>Die Qualität misst sich alleine an der Menschenlesbarkeit des
>produzierten Codes.

da es kaum nutzbare Dekompiler gibt würde ich die Messlatte weniger hoch 
ansetzen - man bekommt ja trotzdem einfacheren(oder teilweise auch nur 
viel weniger) Code den man anschauen muss

>Assembly in funtional äquivalentes komplett unleserliches C umzuwandeln,
>ist ziemlich trivial.

die Hex-Rays Ergebnisse sehen schon etwas besser als aus "unleserliches" 
C - auf jeden Fall um Welten besser als Seitenweise Assembler zu 
analysieren um am Ende 20 Zeilen Code draus zu machen
#5252713
Lesenswert?

Ich habe es mir aus gegebenem Anlass mal angesehen, weil ich zwei 
Windows dlls (beide ca. 8 MByte groß) habe die ich bisher mit der 
letzten Free-IDA-Pro Version händisch analysiert habe, und mal mit dem 
Ergebnis des RetDec vergleichen wollte.

Ergebnis von RetDec bei beiden dlls nach der nach Installation auf einer 
Win7 32 Bit VM (triviale Testprogramme lassen sich hinreichend 
decompilieren):
LLVM ERROR: Could not acquire a cryptographic context: Unknown error 
(0x8)
Error: Decompilation to LLVM IR failed

Vermutung da schlägt eine Windows Funktion fehl.

Also Debian VM mit Jessie hergenommen. Lässt sich nicht kompilieren weil 
Cmake zu alt, also erstmal dist-upgrade auf Stretch durchgeführt. 
Kompiliert bis:
demangler.dir/stgrammars/borlanddll.cpp.o
cclplus: out of memory

Und das mit 4 GByte RAM.

Hat das schon mal jemand an einem reellem Projekt erfolgreich einsetzen 
können? Bzw. unter Linux compiliert?
#5252884
Lesenswert?

Yalu X. schrieb:

> Ja, kein Problem. Das Kompilieren des Demangler-Pakets braucht bei mir
> in Spitze etwa 380 MB. Baust du vielleicht mutlithreaded (mit make
> -j<n>) und hast viele Cores in deinem Prozessor? Dann steigt der RAM-
> Verbrauch natürlich auf ein Vielfaches an.

Nichts dergleichen, keine besonderen Einstellungen. Linux läuft bei mir 
in einer VMware VM mit einem Prozessor / einem Core. Speicherbedarf von 
cc1plus steigt beim Übersetzen bis auf knapp 3 GByte an bis es dann 
abbricht.
Gast #5253016
Lesenswert?

Bert3 schrieb:
> einer hat sich die Mühe gemacht - trivial Beispiele da durch zu
> jagen:
>
> https://www.heise.de/forum/heise-online/News-Komme...
Das ist noch verbesserungsfähig, sieht aber schon deutlich besser aus, 
als ich erwartet hätte.
Allerdings ist nicht angegeben, wie es kompiliert wurde. Ohne 
Optimierung ist das Dekompilieren wahrscheinlich sehr viel einfacher, 
als mit Optimierung.
#5253393
Lesenswert?

Ma W. schrieb:
> Thomas W. schrieb:
>> cc1plus steigt beim Übersetzen bis auf knapp 3 GByte an bis es dann
>> abbricht.
>
> Du hast halt zu wenig RAM.
> Ist doch offensichtlich.

Nö, neue VM mit Ubuntu 17.10 erzeugt mit ebenfalls gleichen 
Hardwareeinstellungen (4 GB Ram), und zumindest wird der Teil bei dem 
der Übersetzungslauf bisher abgebrochen hat problemlos durchlaufen.
Jetzt erhalte ich aber einen weiteren Übersetzungsfehler in filemap.c 
aus yaracpp. Quellen sind mit git geholt und alles nach Anleitung auf 
der github-Seite übersetzt.
#5253432
Lesenswert?

Ma W. schrieb:

> Besorge dir ein vernünftiges und aktuelles System.
> Auf Debian Sid funktioniert die Übersetzung einwandfrei.

Unter einem 32 oder 64 Bit Betriebssystem?
Das Problem scheint mit meinem 32 Bit Betriebssystem zusammenzuhängen, 
mal sehen ob ich das auf die Schnelle gefixt bekomme (libelf).

Die Systemvoraussetzungen sagen zumindest nichts von "nur 64 Bit".
Gast #5253434
Lesenswert?

Thomas W. schrieb:
> Unter einem 32 oder 64 Bit Betriebssystem?

64 Bit

> Das Problem scheint mit meinem 32 Bit Betriebssystem zusammenzuhängen,
> mal sehen ob ich das auf die Schnelle gefixt bekomme (libelf).

Wenn ein Compilerprozess mehr als 3GB braucht, dann kann das auch zu 
einem Problem führen.
#5254555
Lesenswert?

Markus K. schrieb:

> https://github.com/avast-tl/retdec/issues/13
>
> Bei mir unter Windows hat er sich für eine DLL mit 3,7MB (mit
> Debug-Daten) 38GB Speicher genommen.
>
> Endlich mal wieder eine Rechtfertigung dafür, dass ich meinem PC 64GB
> RAM gegönnt habe. :)

Ich merke es auch gerade. Ich habe jetzt eine 64 Bit VM mit 12 GB RAM 
erstellt, was aber zum Dekompilieren noch nicht reicht. Mein Host hat 
aber nur 16 GB, müsste ich erst nachlegen.

Wie lange hat das Dekompilieren deiner DLL denn gedauert? Bei meiner DLL 
benötigt es ca. 7 Stunden zur Analyse. Beim Generieren des Codes aus der 
LLVM IR bricht es bei mir dann wegen Speichermangel ab, wobei der 
Schritt ja eigentlich der einfachste von allen sein dürfte.
#5254581
Lesenswert?

Thomas W. schrieb:

> Wie lange hat das Dekompilieren deiner DLL denn gedauert? Bei meiner DLL
> benötigt es ca. 7 Stunden zur Analyse.

Ich bin nicht dabei geblieben und er schließt ja das 
decompile.sh-Fenster mit der Dauer hinterher wieder. Von den 
Zeitstempeln her würde ich sagen, dass es 2h gedauert hat (die .c-Datei 
ist 2h jünger als die .dsm)


Momentan bin ich aber noch nicht so zufrieden. Insbesondere kann ich 
keine vernünftig Dokumentation finden. Bin ich blind?
#5254915
Lesenswert?

Markus K. schrieb:

> Momentan bin ich aber noch nicht so zufrieden. Insbesondere kann ich
> keine vernünftig Dokumentation finden. Bin ich blind?

Ich hätte auch gerne eine grobe Übersicht über die Funktionsweisen und 
Module. Eine Übersicht über die Funktionsweise bekommt man aber in den 
diversen Veröffentlichungen dir hier verlinkt sind(die Ph.D. Thesis von 
2015 passt imho noch recht gut):

https://retdec.com/publications/

Ich konnte meine dll mittlerweile durch die bei github vermerkte 
Änderung von ulimit dekompilieren. Das Ergebnis überzeugt mich jedoch 
überhaupt nicht, bzw. bei Funktionen mit kryptografischen Algorithmen 
ist das Ergebnis schlechter verständlich als z.B. die 
Assembler+grafische Darstellung in IDA Pro (Free).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren