Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Podejscie do pisania botow/cheatow


Rekomendowane odpowiedzi

Opublikowano

Cześć!

 

Chciałbym was zapytać o parę rzeczy związanych z pisaniem botów/cheatów.

Ogólnie rzecz ujmując: jestem dość zaawansowanym programistą, wiem co i jak. Chciałbym troszkę nakierowania :)

 

Do tej pory pisałem sobie małe gry/projekty w ramach wolnego czasu. Obecnie żeby się nie zanudzić na śmierć chciałem spróbować naklepać coś co schackuje inna gre. Jakiś czas temu grałem w tere i metina2. Wziąłem na celownik metina2 bo wydaje się być prostszy.

 

Jakie podejście powinienem zastosować żeby móc zrobić coś automatycznie w takiej grze? Do tej pory próbowałem symulować klikanie myszą - odbijam się od gameGuard'a. Czy sendInput czy wysyłanie eventu do okna, czy uzywanie AutoIt - wszystko zawodzi, a okno jest niewzruszone na wszelkie moje próby.

 

Powinienem próbować symulować klikanie myszą klawiaturą? Próbować przechwycić pakiety i wysłać zmodyfikowane? Czy może jakoś grzebać w kliencie?

 

Żeby nie było - nie chcę gotowych rozwiązań - chcę się pobawić jak w łamigłówkę ale potrzebuję nakierowania.

 

1) Przy próbach symulowania inputu od usera: musiałbym to robić na poziomie sterownika bo wszystkie poprzednie metody gra sobie po prostu odbija. Jest sens czy nie ma co się babrać?

2) Nie wiem jeszcze jak miałbym przechwycić pakiety i je odesłać. Podejrzewam też, że są jakoś zakodowane. Ale to okaże się dopiero jak je sobie zbadam. J.w. - jest sens w ten sposób? W wiresharku widziałem, że coś tam leci ale nie do końca wiem jak to odczytać - jakieś wskazówki jak odkodowac sobie takie pakiety?

3) Do grzebania w kliencie pewnie potrzebne byłoby mi jego źródło. Napisane w Pythonie (nie mam problemu z tym językiem). Jest jakiś sposób na dobranie się bez źródeł? Jakie podejście obrać: szukać jakichś hooków/eventów i wpinać się do nich podczas działania gry? Jest w ogóle taka opcja?

4) Widziałem też, że gra się dość dobrze izoluje - nie jestem w stanie wykryć sobie koloru w oknie (zawsze #ffffff) ani pozycji myszy (zawsze tam gdzie kliknąłem żeby uaktywnić okno).

 

Troszkę się rozpisałem i dużo tu wątków ale mam nadzieję, że mniej więcej wiadomo o co chodzi :)

Opublikowano

Akurat do metina możesz próbować podpinać się do niego Pythonem, w którym jest napisany

A tak to każdy cheat jaki widziałem do niego to dll który injectuje się do procesu, gameguarda jak sam nie umiesz to obchodzisz zewnętrznym softem (albo szukasz bypassa albo wgrywasz kamermoda na przykład)

 

Reverse engineering to protip.­

846331404756772371599.jpeg
Opublikowano

1) Przy próbach symulowania inputu od usera: musiałbym to robić na poziomie sterownika bo wszystkie poprzednie metody gra sobie po prostu odbija. Jest sens czy nie ma co się babrać?

2) Nie wiem jeszcze jak miałbym przechwycić pakiety i je odesłać. Podejrzewam też, że są jakoś zakodowane. Ale to okaże się dopiero jak je sobie zbadam. J.w. - jest sens w ten sposób? W wiresharku widziałem, że coś tam leci ale nie do końca wiem jak to odczytać - jakieś wskazówki jak odkodowac sobie takie pakiety?

3) Do grzebania w kliencie pewnie potrzebne byłoby mi jego źródło. Napisane w Pythonie (nie mam problemu z tym językiem). Jest jakiś sposób na dobranie się bez źródeł? Jakie podejście obrać: szukać jakichś hooków/eventów i wpinać się do nich podczas działania gry? Jest w ogóle taka opcja?

4) Widziałem też, że gra się dość dobrze izoluje - nie jestem w stanie wykryć sobie koloru w oknie (zawsze #ffffff) ani pozycji myszy (zawsze tam gdzie kliknąłem żeby uaktywnić okno).

 

Troszkę się rozpisałem i dużo tu wątków ale mam nadzieję, że mniej więcej wiadomo o co chodzi :)

 

1. Np. funkcja walku w asmie do chodzenia.

2. Wiresharkiem nie złapiesz. Musisz znaleźć send/recv funkcje w asmie, z tego co wiem to pakiety w metinie są zaszyfrowane ale na 100% znajdziesz w internecie jak je odkodować, przechwycisz je hookując te funkcje

3. Wystarczy IDA/Olly

4. Nie symuluj klawiatury/myszy korzystaj z funkcji asm

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

Dzięki za odpowiedź!

Ok, czyli tak jak myślałem (i jak miałem nadzieję) nie skończy się na paru linijkach w AutoIt tylko będzie trzeba grzebać głębiej :) fajnie!

 

 

 

 Akurat do metina możesz próbować podpinać się do niego Pythonem, w którym jest napisany

A tak to każdy cheat jaki widziałem do niego to dll który injectuje się do procesu, gameguarda jak sam nie umiesz to obchodzisz zewnętrznym softem (albo szukasz bypassa albo wgrywasz kamermoda na przykład)

Reverse engineering to protip.­
 

 

 

Ok czyli nie c++, a Python. Ale jak konkretnie, podejście WinApi lub inne systemowe + C++ i symulowanie ruchów nie zdało egzaminu. Jak miałbym zacząć z Pythonem?

Właśnie jako dll? Myślałem, że kamermod to już kompletny chack.

Czyli re i szukanie gdzie i jak mogę się wpiąć i pisanie pod to swojego kodu w Pythonie? Dobrze myślę?

 

 

1. Np. funkcja walku w asmie do chodzenia.

2. Wiresharkiem nie złapiesz. Musisz znaleźć send/recv funkcje w asmie, z tego co wiem to pakiety w metinie są zaszyfrowane ale na 100% znajdziesz w internecie jak je odkodować, przechwycisz je hookując te funkcje

3. Wystarczy IDA/Olly

4. Nie symuluj klawiatury/myszy korzystaj z funkcji asm

 

Przez asm masz na myśli wstawkę assemblerową? Miałbym pisać cały dll/program w asmie czy tylko wstawki np w C++ i grzebać bezpośrednio po pamięci? Do tej pory mam za sobą 2/3 małe projekty w assemblerze (programowałem raczej wysokopoziomowo). Czyli ogólnie co tutaj rozumiesz przez "funkcja asm" ? :)

 

Opublikowano

@boteQmt2

Możesz pisać całego cheata w c++, a funkcję wywoływać dzięki strukturze __asm, np przed wywołaniem danej funkcji zapisujesz potrzebne wartości do rejestrów/stacka a później po prostu call <adres funkcji>

Jeżeli chodzi o samo wywołanie funkcji, to lepiej zrobić to z poziomu c++.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...