Raptiler Temat założony przez niniejszego użytkownika |
Program działający na inny program. » 2009-09-23 23:14:53 Witam! Chcę napisać program dzięki któremu podepnę się pod jakiś proces, następnie znajdę w nim po adresie jakąś zmienną a następnie zmienić ją. Obrazując sytuację chciałbym napisać program podpinający się pod jakąś grę i zmienie np ilość kasy na 30 razy większą.
Moje pytanie brzmi : Jak podpiąć się pod proces?. Jak znaleźć w nim po adresie tą zmienną?
Z góry dzięki dla mózgu który by to wiedział. |
|
malan |
» 2009-09-23 23:41:55 Ho ho ho, no to sobie wymagania postawiłeś ;d. Moim zdanie napisanie takiego programu jest nie możliwe, bo chociażby mówisz: "znajdę w nim po adresie jakąś zmienną ". Przecież żeby uzyskać adres do zmiennej musiałbyś znać jej nazwę (przynajmniej tak mi się wydaje), a wątpię żeby we wszystkich grach zmienna odpowiadająca za np. ilość kasy miała nazwę 'gotówka' ;p. Poza tym w pamięci komputera chyba nie ma nazw zmiennych (?). Jeśli chcesz już zająć się czymś takim to zacznij może od plików z 'sejwami', bo tam są przechowywane info o danym profilu (np. w grze 'Hart Truck (...)' dane nie są w żaden sposób kodowane itd.- wystarczyło otworzyć plik, wpisać w wyszukiwarce ilość kasy, którą miałeś w grze, kliknąć enter, podmienić liczby (kwoty) i cieszyć się grą ;d ) ;). |
|
DejaVu |
» 2009-09-24 01:06:44 Łał :P zaczynasz programowanie od hakowania? :) Poczytaj najpierw trochę o assemblerze jeśli chcesz poznać budowę aplikacji lepiej. W plikach exe nie istnieje coś takiego jak zmienna. Jest jeden wielki obszar pamięci, w którym znajdują się zarówno instrukcje jak i miejsce na dane. Dane zapisywane są pod określonym adresem, a dojście do tego jaki to adres wymaga podstawowej znajomości assemblera, umiejętności posługiwania się disassemblerem, wykonywania aplikacji krokowo i jeszcze myślenia. |
|
pompom |
» 2009-09-24 03:46:27 A co ma do tego assembler? Przynajmniej co do koncepcji
Trzeba użyć winapi, dokładnie funkcji OpenProcess i WriteProcessMemory (albo Read..). Dokładniej: FindWindow (znajdujesz uchwyt okna z aplikacją) -> GetWindowThreadProcessId (id procesu do którego należy okno) -> OpenProcess -> Read/WriteProcessMemory. Inną metodą jest użycie CreateRemoteThread. Jeśli aplikacja nie ma okna można ją znaleźć w liście procesów (funkcja EnumProcesses).
Użyj msdn np. http://msdn.microsoft.com/en-us/library/ms684320(VS.85).aspx
(i po co ja to wszystko pamiętam? winapi i tak umiera...)
A drugie pytanie: musisz po prostu szukać jej po całej pamięci procesu. Tak jak to robią trainery: 1. szukasz specyficznej wartości (liczby) 2. szukasz wartości która się zmieniła, później wydajesz kasę w grze, szukasz znowu (wsród tych wcześniejszych), aż zostanie ci jedna 3. tak samo jak 2 tylko z inną regułą 'jest mniejsza niż poprzednio' itd.
W bardziej skomplikowanych przypadkach niestety nie da się tak i trzeba reversować aplikację... |
|
WunM |
» 2009-09-24 15:53:05 Jak znaleźć w nim po adresie tą zmienną? Najłatwiej CheatEnginem lub podobnym softwarem. Moim zdanie napisanie takiego programu jest nie możliwe, bo chociażby mówisz: "znajdę w nim po adresie jakąś zmienną ". Przecież żeby uzyskać adres do zmiennej musiałbyś znać jej nazwę (przynajmniej tak mi się wydaje), a wątpię żeby we wszystkich grach zmienna odpowiadająca za np. ilość kasy miała nazwę 'gotówka' język. Poza tym w pamięci komputera chyba nie ma nazw zmiennych (?). A adres? To tak jak ze wskaźnikami i referencjami - nie przechowują nazwy zmiennej (robi to tylko kompilator) ale adres. Jakbym powiedział "Idź do Janka zanieś mu list" to znalazłbyś go? |
|
Raptiler Temat założony przez niniejszego użytkownika |
Dzieki » 2009-09-25 08:27:02 Dzięki wszystkim za wypowiedzi a przede wszystkim pompom'owi. Ten sposób szukaj wartosci/ zmien i szukaj ponownie znam z cheat enginów. O ile się nie mylę szukać można za pomocą funkcji ReadProcessMemory(hProcess,lpBaseAddress,lpBuffer,nSize,lpNumberOfBytesRead); W najbliższym czasie postaram się napisać jakiś program zobaczę czy się uda.
P.S. pompom czemu uważasz , że WinApi umiera? jak umiera to czego się teraz używa?.
|
|
pompom |
» 2009-09-25 16:01:54 Teraz ciągle winapi (pośrednio albo bezpośrednio) albo .net. Microsoft ma zamiar całkowicie zastąpić winapi .net. Nie będzie już dalej rozwijany (możliwe, że już w windowsie 8 czy jak to się nazywać będzie), będzie tylko wspierać istniejące wywołania. A .NET to nie jest nakładka na winapi, tylko na nativeapi, tak samo jak winapi.
Za jakieś 10 lat winapi będzie używane tylko w starych aplikacjach. |
|
Raptiler Temat założony przez niniejszego użytkownika |
» 2009-09-25 17:20:15 Poczytam troche o tym nativeapi ( bo nawet niewiem co to jest ) ale najpierw trzeba tym winapi się perfecto nauczyc operować. |
|
« 1 » 2 |