Reverse Engineering C ++ DLL

8

Ich habe ein kleines Dienstprogramm, das ursprünglich in VS2005 geschrieben wurde.

Ich muss eine kleine Änderung vornehmen, aber der Quellcode für eine der DLLs ist irgendwo verloren gegangen.

Gibt es ein kostenloses oder kostengünstiges Tool, um die DLL zurück in C ++ - Code umzuwandeln.

    
Bender 08.03.2009, 12:11
quelle

8 Antworten

12

Hex-Rays Decompiler ist ein großartiges Werkzeug, aber der Code wird ziemlich schwer zu lesen sein und Sie werden Ich muss viel Zeit aufwenden, um die gesamte DLL zurückzuentwickeln.

    
Jonas Gulle 08.03.2009, 12:19
quelle
6

Sie können auch einen Blick auf OllyDbg werfen, bei dem es sich um einen 32-Bit-Assembler-Level handelt, der den Debugger analysiert. Es wird verwendet, um Binärcode in Szenarien zu analysieren, in denen Sie keinen Quellcode haben. Es ist ein leichter Debugger. OllyDbg ist eine Shareware, so dass Sie & amp; benutze es kostenlos .. !!

Besuchen Sie OllyDbg hier

PS: Zurück in den Tag Cracker verwendet SoftICE von NuMega zum Debuggen in eine ausführbare Datei &Ampere; Schnapp dir einen Schnappschuss bei den Werten von Registern. SoftICE war ein fortgeschrittener Debugger. Es war definitiv das Lieblingswerkzeug für die Cracker. Ich weiß nicht über den gegenwärtigen Status des Produkts. NuMegas Website hatte keine Informationen darüber. Ich habe es vielleicht übersehen, aber ich konnte es nicht finden. Ich empfehle Ihnen, eine ältere Version (4.0x) von SoftICE & amp; Wenden Sie den WindowsXP-Patch für SoftICE an. Die Arbeit mit SoftICE ist eine Art "Erfahrung".

Lesen Sie weiter: Umkehrung: Geheimnisse des Reverse Engineering von Eldad Eilam

    
abhilash 08.03.2009 14:02
quelle
3

Ich kenne nicht die genaue Situation, die Sie haben, und wie viel Funktionalität die DLL für Ihre Anwendung implementiert. Aber ich würde argumentieren, dass es in den meisten Fällen besser wäre, die fehlende DLL basierend auf der bekannten Funktionalität neu zu schreiben.

Dies gilt insbesondere, wenn Sie eine Dokumentation dafür haben.

Der Versuch, den binären Code zu Assembler umzukehren, dann zu C ++ und dann zu versuchen, ihn zu modifizieren, um die existierende Funktionalität zur Verfügung zu stellen, wird in den meisten Fällen zeitaufwendig und vielleicht sogar unmöglich sein.

    
Dani van der Meer 08.03.2009 13:03
quelle
1

Ein wenig abhängig von Ihrer Situation Ich würde die Legacy / Binär-DLL beibehalten und eine Wrapper-DLL schreiben, die sich ändert und / oder zusätzliches Verhalten hinzufügt.

Die Idee besteht darin, die alte Funktionalität in einer neuen DLL zu aggregieren, die die alte importiert.

    
Anders Hansson 08.03.2009 14:13
quelle
0

Wenn Ihre kleine Änderung darin besteht, einen Text zu bearbeiten oder einige Routinen zu überspringen, könnten Sie einen Hex-Editor oder einen Disassembler verwenden, aber Sie werden den ursprünglichen C ++ - Code nicht sehen können, selbst wenn Sie ein Tool finden wandelt die DLL zurück in Code, alle Variablennamen wären weg und es wäre ein großes Durcheinander.

    
schnaader 08.03.2009 12:18
quelle
0

Sie müssen es wie Spiel- und App-Cracker tun: Verwenden Sie einen Disassembler und hacken Sie den Assembler-Code.

    
Frank 08.03.2009 13:26
quelle
-2

WENN es in .NET gemacht wurde, dann warum nicht den dotNet Reflektor verwenden.

    
Linoxxis 05.10.2009 12:51
quelle
-3

Sie können Fleisch nicht zurück zu einem Tier machen und selbst wenn Sie könnten, hätten Sie ein totes Tier: P

    
Peter 08.03.2009 12:15
quelle