Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czytanie wartości zmiennych z pamięci zapisanych za pomocą innego programu

Ostatnio zmodyfikowano 2011-09-12 17:06
Autor Wiadomość
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?
P-40705
akwes
» 2011-09-09 22:00:44
Cheat Engine i tutorial na ich głównej stronie
P-40706
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).
P-40708
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:
C/C++
#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();
    }
}
P-40710
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 :)
P-40747
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
P-40750
yoogi
» 2011-09-10 21:21:08
Nie zawsze wystarcza jedna funkcja :)
P-40757
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.
P-40855
« 1 »
  Strona 1 z 1