Łączenie się ze serwerem gry z własnej aplikacji

0

Witam, nie którzy mogą uznać to za nieśmieszny żart inni za perełkę, ale chce napisać własnego klienta do gry mmo. Gram w pewną grę słynącą z ogromnych kolejek, gdzie czeka się po 4h+ czasami. Chce napisać aplikację na androida, która sztucznie połączy się jedynie z serwerem tejże gry. Ponieważ twórcy gry obmyślili, że w razie, gdyby połączenie zostało nagle zerwane, można wejść do kolejki, czyli wyglądałoby to tak:

  • Moja aplikacja na androida łączy się ze serwerem na moim koncie
  • Zrywa nagle połączenie
  • Wchodzę z komputera na serwer bez kolejki
  • Gdy kończę grać zrywam nagle połączenie z komputera
  • Wchodzę przez telefon (android) ponownie aby trzymało mi miejsce

Hmm i tu moje pytanie, bo nigdy nie pisałem botów, skąd mam wziąć to co jest wysyłane na serwer czyli na przykład akcja logowania (wysyłany pakiet)
Czy może muszę się zajmować reverse engineeringiem. Możecie polecić jakieś strony związane z tym ?

EDIT: Jeżeli podchodzi to pod bana to przepraszam, wydaje mi się, że to jest legalne :P
EDIT2: I jeszcze przepraszam za tagi powinienem dać zamiast C++, Java Android :P

1

Musisz przechwycić pakiety i je odczytać/rozszyfrować, będziesz wiedział co i kiedy jest wysyłane. Czyli musisz się wgryź wgryźć swoim botem w połączenie między klientem a serwerem.

Poczytaj np. o snifferach na początek.

0

O snifferach wiem, tylko myślałem, że istnieje prostszy sposób. O snifferach wiem tyle, że istnieją, a jak zrobić dekapsulację danych to już trochę gorzej, rozumiem, że to co mnie obchodzi jest w warstwie aplikacji ?

1
  1. Tak jak zostało wspomniane, sniffer, np WireShark i analizowanie pakietów
  2. Czeka Cię sporo RE, analiz itp
  3. Musisz sam dojść, jak hasło jest szyfrowane, jak przesyłane, struktury informacji,
  4. Musisz rozgryźć w jaki sposób klient komunikuje się z serwerem, np serwer wysłał do Ciebie: 01100101100101010011011010110, co to znaczy?

PS. Android trzymający połączenie: Zdajesz sobie sprawy, ze serwer parwdopodobnie ma jakiś timeout i jak sie odpowiednio nie odezwiesz (np nie rozpoczniesz rozgrywki czy cokolwiek ustalonego) to moze po prostu zamknąć połączenie?

0

Martwi mnie ten RE bo tutaj trzeba pewnie umieć go na poziomie zaawansowany-prawie mistrz.
Wiem, że może mieć timeout, ale nie koniecznie ponieważ bywam czasami AFK i działa, ale na wszelki wypadek mogę wysyłać pakiet "skacz"

3

AFK oznacza że Ty jesteś Away, a klient moze co minutę wysyłać specjalny pakiet. Musisz po prostu poobserwować jak wygląda to w oryginalnym kliencie. Odpalasz WireSharka, logujesz się z klienta, wracasz do wiresharka, zatrzymujesz przechwytywanie, zapisujesz sesje do pliku.. i jeszcze raz, to samo... potem analizujesz kilka takich logowań pakiet po pakiecie, szukasz co się powtarza, co sie zmienia, czym może byc to, co się zmienia. Bardzo proste zabezpieczenie: serwer wysyła jakis token, string. Klient go obrabia wg zadanego algorytmu i odsyła łacznie z danymi do logowania. Teraz musisz ustalić co to za algorytm, w jaki sposób ten token jest modyfikowany itp. Do tego trzeba odpowiednio dużej ilości prób, a tu jest niebezpieczeństwo, że moze to zostac wykryte po stronie serwera... I że by było jasne, ja piszę co MOŻE byc, a nie co na pewno bedzie, musisz sam sprawdzić metodą prób i błedów.

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