Skanowanie pamieci procesu

0

Witam, pisze bota do pewnej gry.
Otoz potrzebuje wyciagnac z pamieci gry nick postaci aktualnie zalogowanej, ale ten nick po kazdym zalogowaniu jest w innym miejscu poprzedzony 4 bajtowym identyfikatorem ktory znajduje sie stale pod adresem 0x60EAD0, skanujac pamiec od adresu 0x60EB30 w dol mozna wyciagnac nick postaci ktory jest poprzedzony 4 bajtami iodentyfikatora. Prosze pomozcie mi jak moge wyciagnac ten nick skanujac pamiec! halp!

0

"po kazdym zalogowaniu jest w innym miejscu" - to znaczy że strukturka jest dynamicznie alokowana, a jej wskaźnik może być w stałym miejscu programu, w jakiejś klasie, lub na stosie...
Znajdź jeszcze raz adres tej strukturki i przeszukaj całą pamięć zajmowaną przez proces za 4-bajtową liczbą równą adresowi tej struktury. gdy już ją znajdziesz - VirtualQueryEx wskaże na typ strony pamięci gdzie jest owy wskaźnik - może to być stos, sekcja modułu lub inna, zwyczajna strona pamięci, jak na przykład heap.
Wynik z VirtualQueryEx możesz podstawić ewentualnie do GetModuleBaseName by sprawdzić czy jest to strona należąca do exe/dll. Jeśli to dll, to musisz uwzględnić relokację, czyli HMODULE+offset, zamiast bezpośredniego adresu.

51 :)

0

Taaa, i zapewne tak nie jeden raz, bo owy wskaźnik na dynamicznie tworzoną strukturę jest też pewnie w dynamicznie tworzonej strukturze, a wskaźnik na nią jest w jeszcze innej dynamicznie tworzonej strukturze i tak dalej i tak dalej. Dużo błądzenia, życzę powodzenia :)

0

chodzi o wykonanie takiego kodu

#include <windows.h> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    // Find tibia and get the process id. 
    HWND hWnd; 
    DWORD processId; 
    HANDLE hProcess; 
    hWnd = FindWindow("TibiaClient", 0); 
    GetWindowThreadProcessId(hWnd, &processId); 
    // Get access to the process so we can read and write to it. 
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, processId); 

    char idpostaci[4]; 
    ReadProcessMemory(hProcess, (LPVOID)0x60EAD0, &idpostaci, 4, 0); 
    
    skanuj pamiec od 0x60EB30 w dół i szukaj idpostaci 
    { 
        jesli znajdziesz id postaci w zakresie od 0x60EB30 w dol, 
        wyswietl dalsze 30 bajtow
            
        cout << dalszebajty po id postaci; 
    } 

    getchar(); 
    return 0; 
}

q: siedemnaste: uzywaj tagow < cpp > < / cpp > w okolo kodu c++

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