Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memory Edit - Nop funktioniert nicht (https://www.delphipraxis.net/109082-memory-edit-nop-funktioniert-nicht.html)

napsterxx 24. Feb 2008 10:30


Memory Edit - Nop funktioniert nicht
 
Delphi-Quellcode:
var
  Form1: TForm1;
  ProzessName : String = 'war3.exe';

implementation

{$R *.dfm}

//Funcktion
function SchreibeInAdresse( Adresse : Integer; Value: PChar; LengthValu : Byte) : Boolean;
var
  ProcessId, Write : Cardinal;
  hProcSnap: THandle;
  PE32: TProcessEntry32;
  ProzessListe : TStringList;
  Snap: THandle;
  ProcessE: TProcessEntry32;
begin
  ProzessListe := TStringList.Create;
//* Prozess bereits am laufen?
  ProzessListe.Clear;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
    ProcessE.dwSize := SizeOf(ProcessE);
    if Process32First(Snap, ProcessE) then
      Repeat
        ProzessListe.Add(ProcessE.szExeFile);
      Until not Process32Next(Snap, ProcessE)
    else
      RaiseLastOSError;
  finally
    CloseHandle(Snap);
  end;
  if ProzessListe.IndexOf(ProzessName) < 0 then
  begin
    MessageDlg('Programm nicht gestartet.', mtWarning, [mbOK], 0);
    Exit;
  end;

//* ProzessID auslesen
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then
    Exit;
  PE32.dwSize := SizeOf(ProcessEntry32);
  if Process32First(hProcSnap, PE32) = true then
    while Process32Next(hProcSnap, PE32) = true do
    begin
      if pos(ProzessName, pe32.szExeFile) <> 0then
        ProcessId := PE32.th32ProcessID;
    end;
  CloseHandle(hProcSnap);

//* In Adresse schreiben
  ProcessId := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
  WriteProcessMemory(ProcessId,Ptr( Adresse ), Value , LengthValu ,Write);
  CloseHandle(ProcessId);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  SchreibeInAdresse( $6f4d9176, #144#144#144#144#144#144, 6);
end;
Das ist mein Code, um in Warcraft III eine Adresse zu patchen. Rausgefunden habe ich diese mit CheatEnginge. Wenn ich dort im Disambler das ding Nope funktioniert alles so wie ich will, aber wenn ich das mit dem Buttonklick nopen will tut nichts

sirius 24. Feb 2008 11:26

Re: Memory Edit - Nop funktioniert nicht
 
Es ist immer recht praktisch in solchen Situationen Rückgabewerte und ErrorCodes zu überprüfen.

napsterxx 24. Feb 2008 11:38

Re: Memory Edit - Nop funktioniert nicht
 
Es passiert gar nichts ;)

inherited 24. Feb 2008 11:43

Re: Memory Edit - Nop funktioniert nicht
 
Du solltest eventuell mal durchsteppen und debuggen:
1. Wird der Prozess gefunden
2. Überprüf die Rückgabewerte der aufgerufenen API-Funktionen
etc.

Allerdings glaube ich nicht dass Blizzard erlaubt, dass du das tust!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 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