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.
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.
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
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.
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.
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.
WENN es in .NET gemacht wurde, dann warum nicht den dotNet Reflektor verwenden.
Tags und Links c++ dll winapi reverse-engineering