![]() |
Verständnisproblem need help
Hallo DP,
ich kenne mich leider noch nicht sehr gut mir delphi aus. Ich habe ein Code hier im Forum gesehen und ihn übernommen, doch ich verstehe ihn nicht und kann ihn deshalb schlecht umschreiben.
Delphi-Quellcode:
Könntet Ihr mir vielleicht diesen Code ein wenig erläutern und mir bei meinem Problem helfen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; Label1: TLabel; BitBtn1: TBitBtn; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ProcessHandle,WindowHandle: THandle; StartMem: DWord; lpBuffer: TMemoryBasicInformation; myMem: Pointer; dwRead: DWord; dwOld: DWord; processID,pidi : Integer; begin WindowHandle :=FindWindow(nil,'Guild Wars'); ProcessID:= GetWindowThreadProcessId(WindowHandle ,@Pidi); ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, false, pidi); if (ProcessHandle <> 0) then begin StartMem := $00400000; while (StartMem <> $7FFFFFFF) do begin if VirtualQueryEx(ProcessHandle, Pointer(StartMem), lpBuffer, SizeOf(lpBuffer)) = SizeOf(lpBuffer) then begin if VirtualProtectEx(ProcessHandle, lpBuffer.AllocationBase, lpBuffer.RegionSize, PAGE_EXECUTE_READWRITE, dwOld) then begin myMem := VirtualAlloc(nil, lpBuffer.RegionSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (myMem <> nil) then begin if ReadProcessMemory(ProcessHandle, lpBuffer.AllocationBase, myMem, lpBuffer.RegionSize, dwRead) and (lpBuffer.RegionSize = dwRead) then begin Form1.ListBox1.Items.Add('Speicher gelesen: '+IntTohex(DWord(lpBuffer.AllocationBase),8)+', '+ 'Größe: '+IntToHex(lpBuffer.RegionSize,8)+', '+ 'gespeichert in: '+InttoHex(DWord(myMem),8)); end; VirtualFree(myMem, 0, MEM_RELEASE); end; VirtualProtectEx(ProcessHandle, lpBuffer.AllocationBase, lpBuffer.RegionSize, dwOld, dwOld); end; if (lpBuffer.RegionSize <> 0) then inc(startMem, lpBuffer.RegionSize) else startMem := startMem+$1000; end else inc(StartMem,$1000); end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin listbox1.Clear; end; end. Mein Problem ist, dass ich alle Speicheradressen($00400000-$7FFFFFFF) mit dem Wert '100' in einer .txt Datei, oder auf Arrays speicher möchte; Aber das nicht hinbekomme. Das jetztige Script versteh ich kaum, ich vermute, dass er all diese Adressen im Arbeitsspeicher speichert. MfG wadimwadim |
Re: Verständnisproblem need help
sehe ich das richtig das das ein Trainer oÄ für Guild Wars wird?
|
Re: Verständnisproblem need help
Zitat:
|
Re: Verständnisproblem need help
Nein, ich möchte kein Trainer oder ähnliches erstellen, Alle diese Werte sind bei Guild Wars serverside und können deshalb nicht geändert werden.
Nein, ich möchte auch kein BOT für Guild Wars schreiben. Ich möchte nur alle Adressen rausfinden und lediglich mit ihnen arbeiten, auslesen und nicht sie manipulieren. Ich will nur wissen, wie ich diese Daten in einer txt datei speicher kann. |
Re: Verständnisproblem need help
Versuche einmal den Code wenigstens grob zu verstehen. Es gibt da eine Stelle, an der ganz offensichtlich die Speicheradress-Daten in Variablen vorhanden sind.
|
Re: Verständnisproblem need help
ich schätze mal die werden in mymem gespeichert, aber ich verstehe nicht was dieses "VirtualAlloc" ist..
Und ich weiss auch nicht wie ich nach einem ganz bestimmten wert suchen kann, und nicht alle . |
Re: Verständnisproblem need help
Dir ist hoffentlich bekannt, dass man die Bedeutung von Funktionen in der Delphi-Hilfe oder der MSDN Library nachschlagen kann.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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