![]() |
Absturz bei Zugriff auf PByte
Hallo, :hi:
ich habe hier ein kleines Problem mit einem Stück Quellcode. Der Code soll eine andere Funktion verändern, durch Zugriff auf einen Pointer der auf ein Byte zeigt. Das ganze sieht ungefähr so aus:
Delphi-Quellcode:
(Den unwichtigen Code habe ich entfernt :wink: )procedure DoSomething; procedure _load_decrypt; forward; procedure _load_code(lpLoadLibrary, lpGetProcAddress: Pointer; lpSectionBegin: DWORD); stdcall; forward; procedure _load_code_end; forward; procedure _loader; stdcall; asm call _load_decrypt; call _load_code end; procedure _load_decrypt; var p: PByte; i: Integer; l: Integer; begin l := Integer(@_load_code_end) - Integer(@_load_code); p := @_load_code; for I := 0 to L - 1 do begin p^ := p^ xor $DF; //Hier steigt das Programm aus! inc(p); end; end; procedure _load_code( lpLoadLibrary, lpGetProcAddress: Pointer; lpSectionBegin: DWORD); stdcall; begin { ... } end; procedure _load_code_end; begin end; procedure _loader_end; begin end; begin _load_decrypt; //Hier soll die Funktion _load_code "verschlüsselt" werden end; Das ganze ist ein Konsolenprogramm. Wenn ich das in der IDE durchlaufen lasse, steigt das programm an der angegebenen Stelle aus, man sieht in der Konsole noch ganz kurz irgendeinen Runtime Error auftauchen. Wenn ich das Programm alleine laufen lasse, bleibt es einfach hängen, mit voller CPU Auslastung. Ich hoffe ihr könnt mir weiterhelfen, sitze jetzt schon gut eine Stunde auf der Leitung. :wall: Gruß, Clemens |
Re: Absturz bei Zugriff auf PByte
Ich nehme an, du hast keine Rechte dort rumzuschreiben (oder du hast falsch gerechnet).
Suche mal nach "VirtualPRrotect"! |
Re: Absturz bei Zugriff auf PByte
Delphi-Quellcode:
So hat es funktioniert, vielen Dank! :cheers:
procedure _load_decrypt;
var p: PByte; i: Integer; l: Integer; old: Cardinal; begin l := Integer(@_load_code_end) - Integer(@_load_code); p := @_load_code; VirtualProtect(p, l, PAGE_EXECUTE_READWRITE, old); for I := 0 to L - 1 do begin p^ := p^ xor $DF; inc(p); end; VirtualProtect(p, l, old, old); end; MfG, Clemens |
Re: Absturz bei Zugriff auf PByte
es wäre nicht schlecht, wenn du danach die alten Rechte wiederherstellst.
|
Re: Absturz bei Zugriff auf PByte
Hab ich auch schon eingebaut, der Quelltext oben war nur der erste Versuch. Werd's trotzdem auch noch oben reinschreiben!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz