![]() |
Constante als Paramter übergabe
Hi Leute,
bin mal total verpeilt, aber ich bin mir sicher das ich das so nicht machen darf. Habt ihr ein Vorschlag folgendes zu Lösen (Nicht Dynmaisches Array Lösung :P).
Delphi-Quellcode:
function sr_wchar_z(pid: Integer; offset: DWord; const count: Integer): PChar; stdcall;
var HandleWindow, Buffer : Cardinal; cleak : Array [0..count] of Char; leak : String; i : Byte; begin {Start} leak:= ''; {RM ~} HandleWindow := OpenProcess(PROCESS_VM_READ,False,pid); ReadProcessMemory(HandleWindow, Pointer(offset),@cleak, Sizeof(cleak), Buffer); {CR ~} for i := 0 to count do leak:=leak+cleak[i]; result:= Pchar(leak); {End} end; |
Re: Constante als Paramter übergabe
du hast count nicht definiert?!
welche fehlermeldung bekommst du denn |
Re: Constante als Paramter übergabe
Das geht gar nicht. "const count" besagt nur, dass der Wert innerhalb der Prozedur nicht verändert werden darf - aber das ist keinesfalls eine Konstante. Wo wäre auch der Sinn darin, eine Konstante als Parameter zu benutzen?
|
Re: Constante als Paramter übergabe
Um die Länge meines Static-Arrays festzulegen.
|
Re: Constante als Paramter übergabe
Zitat:
Dieser ist aber keine Konstante, sondern ein konstanter ( nicht veränderbarer) Parameter Ein dynamischer Array wäre ein optimale Lösung, warum willst du das nicht? Sonst könntest du auch eine Liste verwenden |
Re: Constante als Paramter übergabe
Zitat:
Zitat:
PS: du leakst Handles, dein Zusammenbau ist unnötig langsam und kompliziert (string SetLength, und dann das als Puffer verwenden wäre viel schöner), und deine Schleife ist eine Katastrophe, die nur auf den richtigen Moment wartet.. Denke count = 257 ;) |
Re: Constante als Paramter übergabe
Zitat:
Weil ich mir nicht sicher war ob ReadProcessMemory das Variable genauso behandelt wie ein Dynamisches. Ich hab es jetzt so gemacht:
Delphi-Quellcode:
function sr_wchar_z(pid: Integer; offset: DWord; count: SmallInt): PChar; stdcall;
var HandleWindow, Buffer : Cardinal; cleak : Array of Char; leak : String; i : Byte; begin {Start} SetLength(cleak, count); leak:= ''; {RM ~} HandleWindow := OpenProcess(PROCESS_VM_READ,False,pid); ReadProcessMemory(HandleWindow, Pointer(offset),@cleak, Sizeof(cleak), Buffer); {CR ~} for i := 0 to count do leak:=leak+cleak[i]; result:= Pchar(leak); {End} end; |
Re: Constante als Paramter übergabe
Zitat:
[edit] Das müsste doch auch so funktionieren:
Delphi-Quellcode:
[/edit]
function sr_wchar_z(pid: Integer; offset: DWord; count: Cardinal): PChar; stdcall;
var HandleWindow, Buffer, deg : Cardinal; // cleak : Array of Char; leak : String; i : Byte; begin {Start} SetLength(leak, count); // leak:= ''; {RM ~} HandleWindow := OpenProcess(PROCESS_VM_READ,False,pid); ReadProcessMemory(HandleWindow, Pointer(offset),@leak[1], Length(leak), Buffer); {CR ~} { for i := 0 to count do leak:=leak+cleak[i];} result:= Pchar(leak); {End} end; |
Re: Constante als Paramter übergabe
Mit dem Dynamischen Array hauts mir ne Zugriffsverletzung um die Ohren :/
![]() //Ich lass das erstmal für heute :/ |
Re: Constante als Paramter übergabe
Hallo,
eine Funktion sollte niemals die Adresse einer lokalen Variablen (in diesem Fall leak) zurückgeben. Es wäre besser, den Puffer vom Aufrufer bereitstellen zu lassen. Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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