Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Struktura plików .EXE


Rekomendowane odpowiedzi

Opublikowano

Cześć , mam problem ze stworzeniem Trainera którego robię w VB. Słuchajcie nie rozumiem jednej rzeczy a mianowicie:

 

Adres:Gothic2.exe+4CECBC
Domyślny Pointer EXE:40000 - SKĄD MAM TO WZIĄĆ?
Offset:1C8
SUma:8CECBC
czyli 4CECBC + 40000

 

Te 'kody' u góry to są jakiegoś typa i nie wiem jakim progrem moge zobaczyć strukturę tego Gothic2.exe, bo nie wiem czy to jest 40000 czy moze bedzie 50000.

 

 

CZEKAM NA ODPOWIEDZ

65135238787935115850.gif

Opublikowano
Opublikowano

Process.GetProcessesByName("Gothic2.exe")(0).Modules(0).BaseAddress zwóci ci właśnie ten adres (najczęściej 00400000), który ten ktoś nazwał domyślnym pointerem exe. Oczywiście zrobi to tylko kiedy Ghotic jest uruchomiony

Twoja stara robi catch the clowny w Game Makerze.

Opublikowano

To może po kolei.

Każdy plik .exe po uruchomieniu dostaje pamięć którą może wykorzystać, zaczynając od 00000000 do 7FFFFFFF (żeby nie kompilkować sprawy). Następnie kopiuje cały swój kod do owej pamięci, zaczynając od określonego miejsca, najczęściej 00400000 (każdy adres "zawiera" tylko jeden bajt pamięci, więc kolejne bajty programu są w 00400001, 00400002 itd nieraz aż do powiedzmy 00FFFFFF). Ten początkowy adres, do którego program ma się wypakować (w tym przypadku 00400000) jest określony w jego pliku .exe, możesz go odczytać np. tym programem http://www.pazera-software.pl/products/peinfo/. Nazywa się go BaseAddress, jako że jest adresem bazowym (głównym, początkowym).

Lecz nie musisz szukać w pliku exe gdzie program się wypakuje, gdyż możesz użyć podanego przezemnie kodu by dostać ten adres prosto z uruchomionej aplikacji.

Tak więc jeśli program wypakowuje się do adresu np. 00500000 to funkcja zwróci właśnie 00500000.

 

Druga sprawa to to jak cheat engine (którego używał ten kto napisał "te kody") nazywa wyszukane w aplikacji adresy. Dajmy na to że aplikacja Gothic.exe startuje w adresie 00400000. Jeśli cheat engine znajdzie jakąś szukaną wartość w adresie 00400010, to po dodaniu na listę zmieni jej adres na Gothic.exe+00000010. Robi to ponieważ adres 004000010 znajduje się w części pamięci która została przydzielona głownemu kodowi aplikacji. Jeśli program startowałby w 00600000 adres będzie automatycznie odwoływał do 00600010, przez co będzie dalej zdatny do użytku. Tak naprawdę chodzi konkretnie o biblioteki dll (np. bass.dll+1A3B) które nie są ładowane do konkretnych adresów pamięci, i za każdy uruchomieniem są wypakowywane w innym miejscu. Pliki exe zawsze wypakowują się do stałych części pamięci (niektóre aplikacje, w których zostały użyte specjalne packery mogą co prawda wypakowywać kod do losowego miejsca, ale póki co to nie istotne).

 

Podsumowując jeśli masz adres z cheat engine: Gothic2.exe+4CECBC, to aby go otrzymać w Visual Basic używasz kodu:

Dim GothicBase As Integer
Dim Adres As Integer
GothicBase = Process.GetProcessesByName("Gothic2.exe")(0).Modules(0).BaseAddress
Adres = GothicBase + &H4CECBC
Jeśli BaseAdress Gothica to 00400000, zmienna Adres będzie wynosiła 8CECBC

Twoja stara robi catch the clowny w Game Makerze.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...