Program pisany w delphi 7 nie działa na vista/7 :(

Program pisany w delphi 7 nie działa na vista/7 :(
  • Rejestracja: dni
  • Ostatnio: dni
0

Rozumiem ten kod może nie w 100% ale rozumiem co do czego służy base address prawdopodnie zmienia się co wyłączenie gry dlatego jest ta funkcja przeryłem całe google w poszukiwaniu coś na ten temat i znajdowałem tylko funkcje GetModuleBaseAddress ale nic o czytania strigu :(

szopenfx
  • Rejestracja: dni
  • Ostatnio: dni
0

Przeczytaj w dokumentacji jakie argumenty ma ReadProcessMemory popatrz na "skradzioną" funkcję ReadMemInteger i pomyśl co trzeba zrobić, żeby odczytać ciąg bajtów reprezentujący string.

  • Rejestracja: dni
  • Ostatnio: dni
0

Sprawdzałem modyfikowałem ale zawsze jakiś błąd robiłem to źle ponieważ niektórych rzeczy tam nie rozumiem dlatego zacząłem szperać po google i napisałem na tym forum. :( męczę się z tym już z tydzien :D

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Szczerze wątpie aby taka tibia zmieniała ImageBase co uruchomienie. Nie chcę wprowadzać w błąd. Ale imo większośc programów nie zmienia ImageBase. Może jest na to jakiś patent. Według mnie pewnie tylko edycja nagłowka pliku PE pod odpowiednimi edytorami lub ręcznie (o ile wiesz co robisz, bo masz na ten temat jakąś wiedzę) może go zmienić. Jeżeli już to zmienia się adres w pamięci procesu z jakimiś tam danymi gracza (na przykład posiadane itemy i takie tam). Dlatego należy szukać pod Cheat Engine adresów, które zapisują pod daną komórkę uzyskując w ten sposób pointery (wskaźniki). Na ten temat jest na google do znalezienia mnóstwo artykułów, w tym również po polsku. A i oczywiśćie szukanie pointerów należy stosować, jeżeli chcemy zrobić uniwersalny i porządny trainer. Lub możliwą do późniejszego stosowania przez innych cheat table w pliku *.ct, a nie wytwór "zwidów" kogoś bez pojęcia o podstawach.

  • Rejestracja: dni
  • Ostatnio: dni
0

olesio jak widziałeś podałem ci linka do tego czytania adresów i tam pisze że w głównym var należy dać coś takiego :

Kopiuj
var
ADDR_BASE: Pointer;
ADDR_HP: Integer = $941000;
ADDR_XOR: Integer = $7ABF8C;

czyli wkazuje na to że automatycznie szuka pointerów
dobra zaraz znów popróbuję może coś się uda.. :x

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
1

Zaden z kodów podanym w wątku na tamtym forum nic nie "szuka automatycznie". Ta wartośc xor jest używana za pewne po to aby przekształcić odczytaną liczbę z pamięci na jakąś konkretniejszą, w której podane jest to HP. Po raz kolejny Ci powtarzam, najpierw ustal co jest widoczne pod Cheat Engine i czy idzie to zmienić. Jeżeli adresy się będą pokrywać, to będziesz wiedział, że zapisujesz lub odczytujesz wartości z prawidlowego miejsca.

  • Rejestracja: dni
  • Ostatnio: dni
0

zrobiłem tak :

Kopiuj
function MemReadString(PHandle: THandle; Address: Integer): Integer;
var
X, Buffer: Cardinal;
NB : LongWord;
Temp : ARRAY [1..255] OF Byte;
I : Byte;
IDProcess, proc_ID : Cardinal;
begin
GetWindowThreadProcessID(FindWindow('TibiaClient', nil), @proc_ID);
IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
ReadProcessMemory(PHandle, Pointer(Integer(ADDR_BASE) - $400000 + Integer(Address)), Addr(Buffer), 4, X);
for I := 1 to 255 do
begin
if ((Temp[i] = 0) or (Temp[i] = $0F)) then
Break;
Result := Buffer;
end;

funkcja base adresu bez zmian i czytanie zrobiłem tak :

Kopiuj
var
WHandle: HWND;
ProcessID : Cardinal;
PHandle: THandle;
exp: integer;
hp: integer;
begin

  WHandle := FindWindow('TibiaClient', nil);
  GetWindowThreadProcessId(WHandle, @ProcessID);
  ADDR_BASE := GetModuleBaseAddress(ProcessID, 'Tibia.exe');
  PHandle := OpenProcess(PROCESS_VM_READ, False, ProcessID);
    hp := MemReadString(PHandle, ADDR_HP);
  // Here we do the XOR stuff
  ShowMessage(inttostr(hp));

Czy to dobre rozwiązanie ?

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
1

To TY masz to wiedzieć nie ja/nie my. Cały czas coś piszesz o bazowym adresie. A tutaj tylko go odczytujesz do zmiennej - sam string pobierasz z pod adresu zawartego w zmiennej ADDR_HP. Ostatni raz powtarzam. Pomóż sobie Cheat Engine i zobacz co pod jakim adresem siedzi. Dalsze odpisywanie Tobie uważam za bezcelowe, bo myślisz, że programowanie nie wymaga myślenia i że chyba polega tylko na zgadywaniu. Tak oczywiśćie nie jest.

  • Rejestracja: dni
  • Ostatnio: dni
0

mam wszystkie potrzebne mi adresy sprawdzone wczesniej w cheat engine i takie są jakie być powinny :)

  • Rejestracja: dni
  • Ostatnio: dni
0

znalazłem funkcje która prawdopodobnie działa lecz jest problem kiedy wklejam ją pod implementation wyskakuje błąd przy tych liniach po begin

Kopiuj
function ReadInteger(Address: Integer): Integer;
var
  value: Integer;
  ler: DWORD;
  ADDR_BASE: Pointer;
begin
  HTibia := FindWindow(nil, 'tibia');
  ThID := GetWindowThreadProcessId(HTibia, @PID);
  PH := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler);
  ADDR_BASE := GetModuleBaseAddress(ThID, 'Tibia.exe');
  Result := (value - $400000) + integer(ADDR_BASE);
end; 

między innymi tutaj już jest error przy HTibia.

babubabu
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 648
2

Zamknie ktoś ten temat i wrzuci do kosza w końcu?

  • Rejestracja: dni
  • Ostatnio: dni
0

nie mógłby ktoś po prostu pokazać użycia base adresu na tekscie w delphi ? ... :(

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Idź lepiej nabijać expa zamiast marnować swój czas i nasz. Wróć jak będziesz mieć poważne podejście do nauki programowania.

  • Rejestracja: dni
  • Ostatnio: dni
0

cały czas się próbuję uczyć programowania ale znając podstawy i tak nie ogarnę tego dlatego napisałem na tym forum o pomoc a nie z nudów.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Grałem kiedyś w gry online i długie godziny spędzałem nad tym żeby coś osiągnąć. Nie pomogę Ci w oszukiwaniu innych graczy. Chcesz mieć coś szybciej - kup premium.

  • Rejestracja: dni
  • Ostatnio: dni
0

czy ja chce kogoś oszukiwać ? chcę napisać trainer dla siebie do gry ... zresztą nie ważne zapytałem po prostu o pomoc a nie o pomoc w zakupie premium

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

No dobrze. Co to jest HTibia? Masz gdzieś to zadeklarowane?

  • Rejestracja: dni
  • Ostatnio: dni
0

ten kod wziąłem z tej strony http://tpforums.org/forum/thread-9448-page-2.html podał go "Kush" ten kod miał podobno działać ale jednak nie działa ... jedynie działa kod z pierwszej strony tego tematu do którego podałem link i jak mówię od początku tematu jedyne czego chciałem się tutaj dowiedzieć to jak odczytać string (tekst) funkcją do tego przeznaczą ale żeby używała ona także funkcję base adress.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.