Traner - czytanie adresu (stringu).

0

Cześć mam problem niżej podam przyczynę... A więc mam funkcję czytania adresu bazowego (normalnego adresu nie odczytam) funkcja wygląda następująco

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, PsAPI, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 function GetModuleBaseAddress(ProcessID: Cardinal; MName: String): Pointer;
 var
   Modules         : Array of HMODULE;
   cbNeeded, i     : Cardinal;
   ModuleInfo      : TModuleInfo;
   ModuleName      : Array[0..MAX_PATH] of Char;
   PHandle         : THandle;
 begin
   Result := nil;
   SetLength(Modules, 1024);
   PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, False, ProcessID);
   if (PHandle <> 0) then
   begin
     EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE), cbNeeded); //Getting the enumeration of modules
     SetLength(Modules, cbNeeded div SizeOf(HMODULE)); //Setting the number of modules
     for i := 0 to Length(Modules) - 1 do //Start the loop
     begin
       GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)); //Getting the name of module
       if AnsiCompareText(MName, ModuleName) = 0 then //If the module name match with the name of module we are looking for...
       begin
         GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf(ModuleInfo)); //Get the information of module
         Result := ModuleInfo.lpBaseOfDll; //Return the information we want (The image base address)
         CloseHandle(PHandle);
         Exit;
       end;
     end;
   end;
 end;

procedure TForm1.Button1Click(Sender: TObject);
var
   WHandle : HWND;
   Address: DWORD;
   ProcessID : Cardinal;
 begin
   ProcessID := 0;
   WHandle := FindWindow('TibiaClient', nil); //Maybe should change 'Softnyx' for nil.
   GetWindowThreadProcessId(WHandle, @ProcessID);
   Address := Integer(GetModuleBaseAddress(ProcessID, 'Tibia.exe')) + Integer($00949CFC);
  ShowMessage(inttostr(Address));
end;

end.

Problem wygląda tak że podałem tutaj :

 Address := Integer(GetModuleBaseAddress(ProcessID, 'Tibia.exe')) + Integer($00949CFC);

odpowiedni adres ale go nie wyświetla :( dodam że program nie wywala errorów

0

odpowiedni adres ale go nie wyświetla

Myślę nad tym zdaniem od 7 minut i nie mam pojęcia co miałeś na myśli.

0

Może lepiej najpierw poucz się programowania, a później weź się za trudne rzeczy? Nie rozumiesz w ogóle tego kodu, więc nie ma sensu żebyś zakładał kolejne wątki i prosił nas o tłumaczenie "Twoich" kodów;

Bez nauki kodu nie zrozumiesz, a tym bardziej nie będziesz umiał naprawić błędów;

0

Tibia.exe i wszystko jasne.

Nic nie daje tyle radości jak czytanie wypocin gimbusa myślącego nad pr0h4X4mi do tibii :D

0

Ech, ta tibia to ludziom chyba blokuje TBrain i dostep do TGoogle. Co to za problem wpisać w google (jak już wyłączysz te "grę" aby Ci google nie blokowała frazę: delphi base address? I prosze trzeci wynik: http://forum.cheatengine.org/viewtopic.php?p=5236488&sid=56fd3ea45dae87ba504ef0a6b9d1806c - kod podany przez Krähne na pewno działa, tylko trzeba dodać moduł PSApi do sekcji uses. PS to skrót od "pokombinuj sam". Wywołanie to na przykład ShowMessage(IntToHex(DWORD(GetModuleBaseAddress(GetCurrentProcessId, ExtractFileName(ParamStr(0)))), 8));, ale w ogóle po co tak kombinować? Zamiast dziecięcych gier ściąga się LordPE czy jakiś plugin dla Total Commandera z informacjami o procesach czy plikach PE. Dla większości za pewne będzie to i tak adres $400000. Ale nawet jeżeli jest podawany przez Cheat Engine jako na przykład zajebista_gra_dla_gimbusow.exe+31337 to co za problem sprawdzić mnóstwem dostepnych narzędzi, jaki jest ImageBase dla danego procesu i w kalkulatorze dodać dla hexów do ImageBase to co mamy po plusie w Cheat Engine i jesteśmy w domu. Na pewno to działa, bo trainer dla Amigowej gry "Benefactor" pod tcUAE dostępny na stronie w mojej sygnaturce zarówno dla wersji CD32 jak i ECS (wersja exeka z grami będzie wkrótce zaktializowana do nowej, o czym będzie info na stronie) tak przygotowałem i bez problemów działa nie tylko mi, dla ustalonych pod Cheat Engine: bazowego pointera i offsetu. Najpierw jednak radził bym Tobie szczerze, ogarnąć naukę podstaw języka oraz korzystania z google, a później brać się za robienie jakichś trainerów czy cheatów i tym podobnych rzeczy. I na koniec: nazwę języka środowiska podjaesz w tagu, a nie w temacie!!! Tym razem poprawiłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1