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

Jak znalesc stały adress ?


Rekomendowane odpowiedzi

Opublikowano

Chcialbym zrobic hacka do gry

S4 league season 5 (WonderLand)

ale niewiem jak wyciągnac stale adressy

do tej gry

 

wiem ortografia

Opublikowano

Adresy wyciąga się poprzez debugger'a (IDA na przykład). Google powinno dostarczyć odpowiednich tutoriali, zazwyczaj wygląda to tak:

-uruchamiasz plik gry w którym są te adresy zapisane (jakiś engine, jakiś launcher, różnie),

-zakładka exports i jak masz szczęście (czyt. gra nie jest zabezpieczona jakoś strasznie) wszelkie adresy znajdziesz tutaj, jeżeli nie to zakładka IDA View-A i ręcznie...

 

A jeżeli chcesz korzystać z cheat engine najprościej będzie szukać tych adresów po nazwach (powinny być na forum).

Opublikowano

Adresy wyciąga się poprzez debugger'a (IDA na przykład). Google powinno dostarczyć odpowiednich tutoriali, zazwyczaj wygląda to tak:

-uruchamiasz plik gry w którym są te adresy zapisane (jakiś engine, jakiś launcher, różnie),

-zakładka exports i jak masz szczęście (czyt. gra nie jest zabezpieczona jakoś strasznie) wszelkie adresy znajdziesz tutaj, jeżeli nie to zakładka IDA View-A i ręcznie...

 

A jeżeli chcesz korzystać z cheat engine najprościej będzie szukać tych adresów po nazwach (powinny być na forum).

możesz podac link do jakiegos debuger'a

Opublikowano

Można też kombinować z wyciąganiem BaseAddressu, obliczeniem adresu bezpośredniego a potem dodaniu go do pobranego baseaddresu procesu... Trochę kombinowania jest i sprawdza się tylko jak baseaddres się zmienia oraz potrzebujemy do tego injekcji DLL ale jest do zrobienia :D

846331404756772371599.jpeg
Opublikowano

W sumie nie ma sensu, IBBT ma lepszy pomysł.

Ale masz wygrzebany kod C++ który wyciąga 'stały' adres, ale jest to zła metoda bo często nie działa.

#include <windows.h>
#include <iostream>
#include <Psapi.h>
#include <TlHelp32.h>
#pragma comment( lib, "psapi" )

DWORD GetProcessIdByName(CHAR* Name) //pobieranie ID procesów po ich nazwach
{

	//DZIAŁANIE
	//Tworzy się strukturę PROCESSENTRY32 w której będą zapisywane dane z Process32First/Next
	//Następnie funkcja szuka procesu po nazwie i zwraca jego PID
	
    PROCESSENTRY32 pe;
    HANDLE Snapshot;
    DWORD ret = 0;

    Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //snapshot systemu
    pe.dwSize = sizeof(PROCESSENTRY32);

    if(Snapshot != INVALID_HANDLE_VALUE) //jeśli snapshot jest prawidłowy
    {
        if(Process32First(Snapshot, &pe)) //oraz jeśli pierwszy proces został zbuforowany
        {
            do //szukaj procesu...
            {
                if(!lstrcmpi(Name, pe.szExeFile))
                {
                    ret = pe.th32ProcessID;
                    break;
                }
            }
            while(Process32Next(Snapshot, &pe)); //...dopóki nie skończą się procesy
        }

        CloseHandle(Snapshot);
    }

    return ret;
}

UINT_PTR GetModuleBase(LPSTR lpModuleName) 
{ 
   MODULEENTRY32 lpModuleEntry = {0}; 
   DWORD dwProcessId = GetProcessIdByName(lpModuleName);
   HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId ); 

   if(!hSnapShot) 
      return NULL; 
   lpModuleEntry.dwSize = sizeof(lpModuleEntry); 
   BOOL bModule = Module32First( hSnapShot, &lpModuleEntry ); 
   while(bModule) 
   { 
           if(!strcmp( lpModuleEntry.szModule, lpModuleName ) ) 
      { 
         CloseHandle( hSnapShot ); 
         return (DWORD)lpModuleEntry.modBaseAddr; 
      } 
      bModule = Module32Next( hSnapShot, &lpModuleEntry ); 
   } 
   CloseHandle( hSnapShot ); 
   return NULL; 
}

//DLL MAIN
BOOL _stdcall DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
{
  if(fdwReason == DLL_PROCESS_ATTACH)
  {
	  DWORD BaseAddress = GetModuleBase("nazwa_procesu"); //ZMIEŃ NAZWĘ PROCESU NA SWÓJ
	  char buf[10] = {0};
	  sprintf_s(buf, "0x%x", BaseAddress);
	  MessageBox(NULL, buf, "BaseAddress", MB_OK); //wyświetlenie baseaddresu

	  //żeby obliczyć bezpośredni adres musisz odpalić kalkulator, przełączyć w tryb naukowy,
	  //przełączyć na liczby szesnastkowe (Hex), wprowadzić adres wyciągnięty przez CE i odjąć go
	  //od BaseAddresu który wyświetlił się w MsgBoxie.
	  
	  //Ważne jest żeby wszystko adres z CE i baseaddres był wyciągnięty z tej samej instancji programu,
	  //czyli przy jednym uruchomieniu. Nie możesz zrobić w ten sposób, że uruchomisz program raz,
	  //wyciągniesz adres, uruchomisz go ponownie i wyciągniesz baseaddres.
	  DWORD AdresTEMP = 0xTWOJ_ADRES
	  DWORD Adres = BaseAddress + AdresTEMP;
	  int *Adres = (int *) Adres; //zmień typ danych na swój

	  //w tym momencie masz pointer na wartość w zmiennej Adres. Używasz go teraz jak normalnej zmiennej.
  }
  return TRUE;
}
Kod z Visual C++ 2010
846331404756772371599.jpeg

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...