![]() |
AV beim schreiben in DLL-Adressraum
Hallo,
ich lade mit LoadLibrary eine DLL, hole mir mit GetProcAddr die Adresse einer Funktion und will dort was hinschreiben. Leider kommt dabei eine AV. Ich dachte innerhalb meines Prozesses darf ich den Speicher umschreiben wie ich will, oder lieg ich da falsch? Hier mein TestQuelltext
Delphi-Quellcode:
Das die '5' unsinnig ist weiß ich, mir ging es erstmal darum überhaupt dort hin schreiben zu können.
var lLib: Cardinal;
lAddr: PChar; begin lLib := LoadLibrary('user32.dll'); if lLib <> 0 then begin lAddr := GetProcAddress(lLib, 'MessageBoxA'); lAddr[0] := '5'; Warum geht das nicht? :cry: |
Re: AV beim schreiben in DLL-Adressraum
Die Prozessadresse ist in einem als Ausführbar gekennzeichneten Bereich auf den standardmäßig keine Schreibrechge vorhanden sind. Um dorthin zuschreiben (z.B. Hooking) mußt du die Rechte der Speicherpage ändern. In der Jedi gibt es Klassen (TJclPeMapImgHooks) die sowas können. Diesen Code kannst Du dir mal anschauen.
|
Re: AV beim schreiben in DLL-Adressraum
thx, bin bisher davon ausgegangen das ich dort schreibrechte hab weil innerhalb des eigenen Exe-Codes das auch ging (aber da wird ja auch nix mit LoadLibrary geladen)
|
Re: AV beim schreiben in DLL-Adressraum
Und falls du was gegen die Jedis hast (es soll solche Menschen geben), kannst du auch
![]() |
Re: AV beim schreiben in DLL-Adressraum
Die Klasse TJclPeMapImgHooks nutzt intern diese WinAPI-Funktion. Was will sie auch anders machen?
|
Re: AV beim schreiben in DLL-Adressraum
Zitat:
|
Re: AV beim schreiben in DLL-Adressraum
Zitat:
|
Re: AV beim schreiben in DLL-Adressraum
@chaosben: Deine Bedenken waren richtig. Ich halte es für übertrieben für eine solch kleine Sache eine ganze Unit einzubinden bzw. ein so riesiges Package zu installieren (zumal es nur spielerei ist und ich es nicht für was wichtiges benötige).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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