Reverse Engineering von C ++ DLL
-
05-07-2019 - |
Frage
Ich habe ein kleines Programm, das in VS2005 ursprünglich geschrieben wurde.
Ich brauche eine kleine Änderung zu machen, aber der Quellcode für eine der DLLs irgendwo verloren gegangen ist.
Gibt es ein kostenloses oder preiswertes Werkzeug umkehren die DLL zurück in C ++ Code Ingenieur.
Lösung
Hex-Rays Decompiler ist ein großes Werkzeug, aber der Code wird sehr schwierig sein, zu lesen und Sie werden viel Zeit damit verbringen müssen umkehren die ganze DLL-Ingenieur.
Andere Tipps
Sie möchten vielleicht auch auf einen Blick haben OllyDbg , die ein Assembler-Ebene analysieren Debugger 32-Bit ist. Es wird verwendet, Binärcode in Szenarien zu analysieren, wo Sie keinen Quellcode haben. Es ist leicht Debugger. OllyDbg ist ein Shareware, so können Sie & es kostenlos nutzen herunterladen .. !!
Besuchen Sie OllyDbg ist Startseite hier
PS: Zurück in den Tag-Cracker verwendet SoftICE aus NuMega zum Debuggen in ein ausführbares & einen Schnappschuß zu den Werten der Register greifen. SoftICE war eine erweiterte Debugger. Es war auf jeden Fall das Lieblingswerkzeug für die Cracker. Ich weiß nicht, über den aktuellen Zustand des Produkts. NuMega Website hatte keine Informationen über sie. Vielleicht habe ich es übersehen, aber ich konnte es nicht finden. Ich empfehle, dass Sie Ihre Hände auf einer Legacy-Version (4.0x) von SoftICE zu bekommen und WindowsXP-Patch für SoftICE anzuwenden. Arbeiten mit SoftICE ist so etwas wie eine „Erfahrung“.
Weiter lesen: Umkehren: Secrets of Reverse Engineering von Eldad Eilam
Ich weiß nicht, die genaue Situation, die Sie haben und wie viel die Funktionalität der DLL implementiert für Ihre Anwendung. Aber ich würde behaupten, dass in den meisten Fällen wäre es besser, die fehlende DLL auf der bekannte Funktionalität auf Basis neu zu schreiben.
Dies gilt insbesondere, wenn Sie dafür eine Dokumentation haben.
Der Versuch, den Binärcode zu Assembler Reverse Engineering, dann auf C ++ und dann versuchen, es zu ändern, die vorhandene Funktionalität zu schaffen, in den meisten Fällen zu der Zeit sein wird, aufwendig und vielleicht sogar unmöglich.
Wenn Ihre kleine Änderung ist etwas Text zu bearbeiten oder einige Routinen zu überspringen, können Sie einen Hex-Editor oder einen Disassembler verwenden könnten, aber Sie werden nicht in der Lage sein, den ursprünglichen C ++ Code zu sehen, und selbst wenn Sie ein Werkzeug finden, dass die DLL zurück in Code verwandelt, alle Variablennamen verschwunden sein würde, und es wäre ein großes Durcheinander sein.
Ein wenig abhängig von Ihrer Situation würde ich das Erbe / binary DLL halten, wie sie ist und eine Wrapper-DLL schreiben, ändern und / oder zusätzliche Verhalten hinzuzufügen.
Die Idee ist, die alte Funktionalität in einem neuen DLL zu aggregieren, die die alten importiert.
Sie haben es wie Spiel und App-Cracker zu tun: a. Disassembler verwenden und den Assembler-Code hacken
Sie können nicht Fleisch umdrehen, an ein Tier und selbst wenn Sie könnten Sie ein totes Tier würde: P
Wenn es in .NET getan wurde, warum dann nicht den dotNet Reflektor verwenden.