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

Program działający na inny program.

Ostatnio zmodyfikowano 2009-09-25 19:53
Autor Wiadomość
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ł.
P-10405
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 ) ;).
P-10406
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.
P-10407
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ę...
P-10408
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?
P-10410
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?.
P-10416
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.
P-10425
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ć.
P-10427
« 1 » 2
  Strona 1 z 2 Następna strona