AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi (Zugriffs-)Probleme mit "Trainer"
Thema durchsuchen
Ansicht
Themen-Optionen

(Zugriffs-)Probleme mit "Trainer"

Ein Thema von SnuffMaster23 · begonnen am 25. Mai 2007 · letzter Beitrag vom 13. Jun 2007
 
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#1

(Zugriffs-)Probleme mit "Trainer"

  Alt 25. Mai 2007, 23:12
Moin!
Ich versuch grad ein Tool zu schreiben um mit einem Addon für WoW zu kommunizieren.
Hab mir gedacht, ich kann da munter im Speicher von WoW lesen und schreiben, aber ich kann scheinbar garnicht darauf zugreifen. ReadProcessMemory liefert schon beim ersten Zugriff false

Dann hab ich versucht, WoW damit erst zu starten und mich als Debugger einzuschleusen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  SecAttr: SECURITY_ATTRIBUTES;
  SecDesc: SECURITY_DESCRIPTOR;
  StartInf: STARTUPINFO;
begin
  InitializeSecurityDescriptor(@SecDesc, SECURITY_DESCRIPTOR_REVISION);
  with SecAttr do
  begin
    nLength := SizeOf(SECURITY_ATTRIBUTES);
    lpSecurityDescriptor := @SecDesc;
    bInheritHandle := false;
  end;

  FillChar(StartInf, SizeOf(StartInf), 0);
  StartInf.cb := SizeOf(StartInf);
  StartInf.wShowWindow := SW_SHOW;
  StartInf.dwFlags := STARTF_USESHOWWINDOW;

  if CreateProcess(PChar(Pfad), '', @SecAttr, nil, false, DEBUG_PROCESS, nil, PChar(ExtractFilePath(Pfad)), StartInf, ProcInfo) then
  begin
    Button1.Enabled := true;
  end;
end;
Es geht jedoch nichtmal auf bzw. ist nicht zu sehen und belegt nur ca. 80k Speicher.

Damit wollte ich erstmal versuchen, die Variable vom Addon-Script zu finden, das ist natürlich noch nicht endgültig
Zu erkennen sollte die Variable daran sein dass 255 Bytes voll mit 'edgar' drin stehen.
Da sin jetzt noch einige Debug-Features drin wie z.B. das mit dem Richedit.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  c, num: Cardinal;
  buf1,
  buf2: PChar;
  i, Flag: Integer;
  Reslt: Boolean;
begin
  c := FindWindow(nil, 'World of Warcraft');
  if c > 0 then
  begin
    GetWindowThreadProcessId(c, @c);
    c := OpenProcess(PROCESS_ALL_ACCESS, False, ProcInfo.dwProcessId);

    for i := 0 to 51 do
    begin
      buf2 := PChar(buf2 + 'edgar');
    end;

    i := 0;
    Reslt := true;
    while Reslt do
    begin
      while ReadProcessMemory(c, Ptr(i), buf1, 5, num) do
      begin
        RichEdit1.Lines.Add(IntToStr(i));
        inc(i);
        if buf1 = 'edgarthen break;
      end;
      Reslt := ReadProcessMemory(c, Ptr(i), buf1, 255, num);
      if buf1 = buf2 then
      begin
        Flag := -1;
        break;
      end;
    end;

    RichEdit1.Lines.Add(IntToStr(Flag));

    CloseHandle(c);

    Timer1.Enabled := false;
  end;
end;
Was mach ich falsch, wie mach ichs richtig - und - hab ich überhaupt ne Chance die Daten von dem Script zu finden und zu manipulieren?
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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 by Thomas Breitkreuz