Witam
Chciałbym napisać bota do gry, który mógłby kickować graczy za mnie.
I teraz chciałbym to zrobić poprzez dll injection, moje pytanie jest czy wstrzyknięty kod może wywołać funkcję gry, która kikuje(wyrzuca) gracza z serwera ? Czy sprowadza się to do assemblera(call <jakis adres="adres" funkcji="funkcji"> )? Jeśli tak to jak znaleźć adres tej funkcji ? skąd mam wiedzieć jakie argumenty podać ? Proszę o wyjaśnienie.
Chciałbym napisać bota do gry, który mógłby kickować graczy za mnie.
Gry online? A masz uprawnienia admina czy jak to się nazywa żeby kickować?
I teraz chciałbym to zrobić poprzez dll injection
Musi być koniecznie dll injection?
moje pytanie jest czy wstrzyknięty kod może wywołać funkcję gry
może.
Czy sprowadza się to do assemblera(call <jakis adres="adres" funkcji="funkcji"> )?
To zależy od gry
Jeśli tak to jak znaleźć adres tej funkcji ? skąd mam wiedzieć jakie argumenty podać ?
Tutaj powinna być odpowiedź na pytania http://re.coldwind.pl
konkretnie chodzi o grę warcraft 3. Przy postawieniu servera, host może kickować, tak więc mam uprawnienia.
2. Nie musi być przez dll injection, ale jeśli nie tak, to jak sprawić , by bot wyrzucił gracza z gry ?
poprzez symulowanie naciśnięć myszki/klawiatury w interfejsie gry ?
Zastanawiam się czy nie wymyślasz koła na nowo :]
Nie mam warcrafta żeby sprawdzić, ale google (http://www.google.pl/search?q=warcraft+3+kick&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pl:official&client=firefox-a) rzuca sporo odnośników do "Warcraft 3 custom kick" - proponuję żebyś najpierw to sprawdził.
Chyba że koniecznie chcesz to samemu zrobić?
nigdzie nie znalazłem wyjaśnienia, jak w C++ zaimplementować takie kickowanie.
tak, chcę to zrobić samemu. chciałbym wiedzieć chociaż w jaki sposób to zrobić, czy przez dll injection i wywoływanie funkcji warcrafta do kickowania, czy przez symulowanie naciśnieć klawiatury/myszki w interfejsie gry, czy może przez wysłanie odpowiedniego pakietu do gracza którego chcę kikować. Najbardziej jednak interesuje mnie 1 i 3 sposób : jak znaleźć adres funkcji w grze, która kickuje gracza ? skąd mam wiedzieć jakie tam argumenty podać ? czy sprowadza się to do assemblera ? Oraz 3 sposób(pakiety) : skąd mam wiedzieć co wysłać do gracza ?
czy sprowadza się to do analizowania pakietów snifferem ?
Chodzi ci o kickowanie graczy podczas gry czy jeszcze przed jej rozpoczęciem?
Jeżeli chodzi o tą pierwszą opcję, najskuteczniejszą metodą jest zmiana stanu połączenia TCP z danym klientem na CLOSED :). W Windows bardzo prosto robi się to poprzez SetTcpEntry. Potrzebujesz jedynie adresu IP. Jeżeli nie korzystasz z żadnego bota, ani listcheckera i nie możesz wyciągnąć go z logów, możesz wynisffować ten adres, gdy ktoś dołącza do gry. Prawdopodobnie w pamięci gry też będzie, ale nie udało mi się go w ten sposób znaleźć.
Wyrzucenie kogoś jeszcze przed rozpoczęciem gry wygląda identycznie albo bardzo podobnie - użyć sniffera, żeby zobaczyć jak wygląda pakiet wysłany na Battle.net, który zmienia status slota. Nie wiem jak to dokładnie wygląda, ale na pewno jest możliwe - WC3Banlist to umożliwia.
Generalnie próbujesz wymyślić koło, istnieje masa programów, które już to robią.
Tak, chodzi o kikowanie przed rozpoczęciem.Wiem, że istnieją programy, które już to robią, ja chciałbym jednak zrobić swój własny, a kikowanie graczy to tylko jeden z elementów mojego programu. Czyli sprawa wygląda tak:
Należy podłączyć dll pod warcrafta i kod ten ma nasłuchiwać na połączenia przychodzące i w razie pojawienia się nowego gracza, za pomocą SetTcpEntry, może zamykać połączenie z tym graczem tak ?
proszę o odpowiedź