Wenn ich vor der Veröffentlichung meines Programms versehentlich vergessen habe, in die Release-Konfiguration zu wechseln, spielt es eine Rolle, ob es einfacher ist, meinen Code zu dekompilieren oder zurückzuentwickeln?
Zum Beispiel, wenn ich versehentlich die folgenden Debug-Compiler-Optionen verwende:
%Vor%Ich habe Hilfe gelesen und von dem, was ich sagen kann, macht es keinen großen Unterschied, außer die Kartendatei wird irgendwie mit der Binärdatei veröffentlicht, also frage ich mich, wie viel Unterschied es macht, wenn jemand die Kartendatei hat?
Lassen Sie uns nacheinander die Optionen erläutern, die Sie erwähnt haben:
.map
-Datei, die alle Informationen (Typ, Name, Adresse, Größe usw.) über Programmsymbole enthält, also natürlich wäre hilfreich für Reverse Engineering IF Sie diese Datei zusammen mit Ihrer exe verteilen (wie von @RemyLebeau in den Kommentaren angegeben). Es gibt auch die Möglichkeit, entfernte Debug-Symbole zu erzeugen, wie von @dummzeuch gezeigt:
.rsm
-Datei zu generieren. Dies ist das Delphi-Äquivalent von Microsofts .pdb
Programmdatenbankdateien . Wenn Sie diese Datei verteilen, könnten Sie echte Probleme haben, weil Sie Ihre Anwendung leicht debuggen, Symbole, Funktionen und Prozeduren visualisieren, Ihren Code in einem Schritt bearbeiten und so weiter. Außerdem ist es wichtig zu sagen, dass .map
Dateien nicht gleich .pdb
Dateien sind. Für Delphi Win32 ist .rsm
das Äquivalent. Ich habe seit Jahren nicht mehr mit Delphi gearbeitet, aber soweit ich mich erinnern kann, kann keine Delphi Win32 Version .pdb
Dateien erzeugen. Nur Delphi für .NET kann.
Lassen Sie uns noch einmal auf Ihre Fragen zurückkommen:
Ich frage mich, wie viel Unterschied es macht, wenn jemand die Map-Datei hat?
Reverse Engineering wäre viel einfacher mit einer .map
-Datei. Ich habe einige Tools in der Vergangenheit gesehen, die sogar eine .map
-Datei in eine .dbg
-Datei zur Verwendung mit einem Debugger konvertieren können.
Ist es einfacher, ein Delphi-Programm zurückzuentwickeln oder zu brechen, wenn die EXE-Datei mit Debug-Compiler-Einstellungen kompiliert wurde?
Nun, eine wichtige (und vielleicht auffälligste) Eigenschaft von Debug-Builds ist die größere exe-Größe. Das liegt hauptsächlich daran, dass der Compiler in der Debug-Konfiguration eine Reihe von Code-Optimierungen deaktiviert, um das Debuggen von Code zu erleichtern. Es gibt auch viele debug-bedingte -Codes (zB: in {$IFDEF DEBUG}
directions), die in die exe verlinkt werden.
Als Nebeneffekt ist der von einem Debug-Build generierte Code wesentlich einfacher zu reverse-engineeren, da er einfacher zu verstehen ist.