Error 998 - ERROR_NOACCESS nach editieren von dll / String in DLL Editieren

12/24/2011 02:29 Nerran#1
Moin,

aktuell versuche ich einen String in einer dll-Datei zu verändern. Die Stringposition ließ sich mit IDA relativ leicht ermitteln.

Wenn ich diesen String jetzt jedoch via Texteditor ändere, dann bekomm ich beim Laden der DLL einen Fehler 998. Dieser ist laut MSDN ERROR_NOACCESS Invalid access to memory location.

Nun. Woran hängts in diesem Fall? Muss ich da mit einem Hexeditor den String editieren? Oder muss die Länge des Strings konstant bleiben?

Edit:
Ausprobieren hilft bei Vermutungen:
Sofern ich die Länge des Strings beibehalte, funktioniert alles. Kann ich diese Länge auch irgendwie erweitern?
12/24/2011 12:39 jacky919#2
Mit [Only registered and activated users can see links. Click Here To Register...] kannst du sie vielleicht verändern, falls die die strings als Resource kompiliert wurden.
12/24/2011 13:46 MrSm!th#3
Selbstverständlich muss die Länge gleich bleiben, der String ist in der .data Section der exe und wenn du ihn verlängerst, stimmt die Größe der Section im Header nicht mehr mit der realen Größe überein.

Weiß jetzt nicht, ob Resource Hacker sowas anpasst.
12/25/2011 08:51 jacky919#4
Resource Hacker kompiliert die Datei nach Änderungen neu. Bei mir gab es diesbezüglich noch nie Fehler.
12/25/2011 15:07 MrSm!th#5
Kompilieren? o.ô Du meinst wohl eher Neuerstellen, dann für Kompilation bräuchte man den Sourcecode.
12/26/2011 23:08 jacky919#6
Das Programm nennt das, soweit ich mich erinnern kann, kompilieren. Aber die Resourcescripts werden doch kompiliert oder etwa nicht?
12/27/2011 03:19 MrSm!th#7
Achso, jo, die schon.
Allerdings kompiliert man ja nicht das ganze Programm neu, sondern erstellt nur zusätzliche Resourcen und kompiliert sie.

Naja ist Haarspalterei ;O
12/27/2011 03:55 Nerran#8
Resource Hacker findet den String erst gar nicht. Nunja das Hauptproblem hat sich gelöst. Ich hab einfach den String auf eine Anweisung zum Nachladen von weiterem Code geändert. (String enthielt eine Anweisung an einen Interpreter), dort befindet sich dann wiederum der originale Code und ein bisschen von mir. Danke für eure Hilfe.