Wie kann ich angezeigte Texte eines programms in einer .exe datei bearbeiten/ändern?

5 Antworten

So ohne weiteres i.d.R. gar nicht.

Weil es in aller Regel eine Checksumme über die komplette .exe-Datei gibt. Ändert man einen Buchstaben, dann liefert das eine andere Checksumme und das Programm startet nicht mehr. Zum zweiten ist die Länge des Textes fest kodiert. Länger darf er nicht werden, sonst stimmt die Einsprungadresse der folgenden Texte /Funktionen nicht mehr. Das führt ziemlich sicher zu einem Crash des Programms.

Hexeditor funktioniert ausschließlich dann, wenn der Text unkomprimiert und UTF-8 (oder ähnlich) kodiert in der Datei gespeichert wird. In allen anderen Fällen kann man das vergessen.

TeeTier  05.03.2018, 17:50

Windows beachtet die Checksummen im EXE-Header nicht. Die kannst du in fast allen Situationen auch auf Fantasiewerte setzen! (Damit ist ausdrücklich NICHT die Signatur gemeint! Aber die manipulierte EXE-Datei kann man auch später mit z. B. einer eigenen Signatur versehen ... falls man lustig ist.)

Und Texte kann man (meistens) zwar nicht verlängern, aber (meistens) mithilfe eines Nullbytes beliebig verkürzen. Das reicht oft schon völlig aus. :)

0
AnReRa  05.03.2018, 18:09
@TeeTier
Windows beachtet die Checksummen im EXE-Header nicht.

Okay, ist schon 'n Weile her dass ich sowas gemacht habe.

mithilfe eines Nullbytes beliebig verkürzen

Bei Ausgaben mit einem Print-Kommando, das immer bis zum ersten Nullbyte liest, ja. Bei optimiertem Code kann sich der Compiler die Abfrage sparen, wenn er 'weiss', dass die Länge fest ist. Aber vielleicht macht man das heute nicht mehr, weil die Maschinen ja sowieso beliebig schnell sind.

0
Lutschinher 
Fragesteller
 05.03.2018, 18:45
@AnReRa

Ich dachte/hoffte es gäbe vielleicht ein Tool oder Programm das ähnlich wie für android, der Apk editor ist! :-/

Ich will eigentlich nur eine zahlenreihe ähnlich einer Telefonnr. austauschen!

0

Kann trivial sein - oder auch völlig unmöglich ohne Quelltext und Neukompilieren.

Als erstes würde ich es mit Notepad++ versuchen, bei Bedarf mit installiertem Hex-Editor-Plugin. Das hat sich bei mir bei diversen config-Dateien bewährt.

Oft finden sich aber entscheidende Einträge nicht in der .exe selbst, sondern in verschiedenen Dateien im Programmordner. Manche Programmierer sind so schlau, Texte zur leichteren Sprachadaptierung auszulagern.

Vor jeder Änderung sollten die Dateien gesichert werden.

Diese Texte sind meist nicht (wie früher es war) einfach als Array oder ähnlich im Code abgelegt, sondern häufiger verschlüsselt. Zudem ist alles mit CRC gesichert, wenn du es schaffst einen Buchstaben zu ändern musst du auch die CRC korrekt anpassen.

Dein Unterfangen könnte also recht aufwändig werden.

Woher ich das weiß:Berufserfahrung – Jahrzehnte IT Erfahrung, Experte für Kryptowährungen, 🐱
TeeTier  05.03.2018, 18:03

In dem Falle musst du nur ein Byte der .text-Sektion mit dem Wert 0x74 in 0x75 ändern. Genau genommen ist das sogar nur ein einziges Bit, wie du siehst! :)

Das Problem dabei ist nur, dass dieses Vorgehen ohne Debugger eine etwas langwierige Sucherei ist, wenn man nur einen Hexeditor zur Verfügung hat ... aber es geht! Ich hab damit schon oft Sprünge umgebogen, wenn ich keine mächtigere Debugger-Alternative zur Hand hatte.

0

Einige Entwickler legen Strings kodiert in ihren Programmen ab, aber - um Cracker zu verwirren - zusätzlich noch als Klartext an anderer Stelle.

Wenn man jetzt einen Text ändert, hat das logischerweise Null Auswirkungen, und ein weniger erfahrener Reverser verzweifelt da gerne mal dran. :)

Naja, aber das, was du beschreibst, kann viele Ursachen haben. Ohne weitere Infos kann ich da nix weiter zu sagen. ><

TeeTier  05.03.2018, 17:55

Nachtrag: Hast du schon mal versucht deine Texte nicht als ASCII, sondern als UCS-2 bzw. UCS-4 sowohl als LE als auch BE zu suchen? In den meisten modernen Programmen wird auf x86-Plattformen meist UCS-2-LE genutzt ... dass du einen fixen 1-Byte-Text dabei nicht findest ist klar ... :)

0

Mit einem Hex-Editor könnte das gehen.

Lutschinher 
Fragesteller
 05.03.2018, 16:47

Danke schön probiert bekomme dort keine Texte angezeigt!!! Resource Hacker hab ich auch probiert!!!

0
ohwehohach  05.03.2018, 16:49
@Lutschinher

Ja, weil's dann eben nicht so einfach ist, wie der Laie sich das so vorstellt ;-) Es kommt beispielsweise dann auch noch darauf an, welche Programmiersprache dahintersteckt. Bei in maschinencode compilierenden Sprachen (z.B. C++) dürftest Du irgendwo eine Resource-Section finden. Bei Sprachen, die beispielsweise in .NET IL-Code kompilieren, sieht es wieder anders aus.

Resource Hacker dürfte beispielsweise bei .NET-EXEs nicht funktionieren.

1