Trix Temat założony przez niniejszego użytkownika |
Czytanie wartości zmiennych z pamięci zapisanych za pomocą innego programu » 2011-09-09 21:54:01 Mam pewną grę (Multiplayer) i chcę pobrać niektóre dane z pamięci (położenie NPC itp.), lecz nie wiem co dalej się uczyć w tym kierunku, oczywiście pytanie ma na celu edukacyjnym :)
Chciałbym się dowiedzieć jak wyszukać takie dane oraz jak je pobrać, mam nadzieję, że moje pytanie jest zrozumiałe dla wszystkich :)
P.S. A tak poza tematem, jest możliwość manipulacji takimi danymi? |
|
akwes |
» 2011-09-09 22:00:44 Cheat Engine i tutorial na ich głównej stronie |
|
Drraven |
» 2011-09-09 22:06:50 Na windowsie powinno przejść, gorzej na Linuksie. Ale teoretycznie da się 'ręcznie' manipulować pamięcią ram :D (Mam na myśli ASM). |
|
yoogi |
» 2011-09-10 08:58:35 Użyj funkcji WriteProcessMemory, tylko musisz znać adres zmiennej :) Nigdy nie lubię kompletować kodu, jak ktoś mi poda tylko nazwę funkcji, dlatego dam ci kod: #include <Windows.h> #include <iostream> using namespace std; int main() { HWND hwnd; DWORD ID; DWORD rw = 0; HANDLE handle; int a; int b = 100; unsigned adres = 0x39FE04; for(;; ) { hwnd = FindWindow( NULL, "KeyMemory" ); GetWindowThreadProcessId( hwnd, & ID ); handle = OpenProcess( PROCESS_ALL_ACCESS, false, ID ); ReadProcessMemory( handle, LPCVOID( adres ), & a, sizeof( a ), & rw ); cout << "Zmienna A to: " << a << endl; cout << "Podaj wartosc do zmienienia: "; cin >> b; WriteProcessMemory( handle, LPVOID( adres ), & b, sizeof( int ), & rw ); CloseHandle( handle ); getchar(); } }
|
|
Trix Temat założony przez niniejszego użytkownika |
» 2011-09-10 19:47:37 Z tym adresem właśnie jest problem :) Dlatego zapytałem również o to jak spr. jakie zmienne dany program przechowuje w pamięci komputera :) |
|
Drraven |
» 2011-09-10 20:36:32 Nigdy nie lubię kompletować kodu, jak ktoś mi poda tylko nazwę funkcji |
Co za problem sprawdzić w dokumentacji jakie ma parametry :D Ja bym to zrobił tak: Jeśli wiesz co w danej chwili w tej zmiennej jest (powiedzmy ze string: "WTF o czym on to do mnie"). Szukamy w pamięci ten string i sprawdzamy jaki jest adres :D |
|
yoogi |
» 2011-09-10 21:21:08 Nie zawsze wystarcza jedna funkcja :) |
|
Trix Temat założony przez niniejszego użytkownika |
» 2011-09-12 17:06:03 @Szukamy w pamięci ten string i sprawdzamy jaki jest adres :D
Dobra a jak zrobić taką prostą wyszukiwarkę? Przez pętle, nie spowolni to zbyt programu?
2. A załóżmy, że będę potrzebował wszystkich kordów pojawiających się graczy, jak to wtedy rozwiązać? (liczba graczy może być różna, w zależności ile ich widzimy) I po 3 primo, program musiałbym sam wyszukiwać te dane, w jaki sposób wykrywałby adresy pochodzące z pamięci, bo jak na arzie powyższy kod to nic innego jak cheat engine :)
EDIT: Być możliwe musiałbym wstrzykiwać swój kod do gry? Poskładałem pewien skrypt i udało mi się złożyć takiego Incjectora :) Lecz wolałbym tak tego nie robić, jeśli jest inna możliwość to będzie ona lepsza.
|
|
« 1 » |