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

Jak znaleźć wywołanie funkcji w kliencie Tibii 12


Rekomendowane odpowiedzi

Opublikowano

Hej 🙂

Być może ktoś z Was orientuje się w jaki sposób podczas debugowania klienta Tibii 12 dobrać się do wywołania funkcji, która np. wykonuje mapclick?
Próbowałem x64dbg, ollydbg ale bezskutecznie. Szukałem czegoś, co pozwoliłoby mi sprawdzić ilość wywołań danej funkcji, przez co mógłbym daną funkcję namierzyć.

Pozdrawiam

Opublikowano

Możesz posiłkować się tym:

https://github.com/otland/forgottenserver/blob/master/src/protocolgame.cpp#L514

 

Na Cliencie 12 nigdy tego nie robiłem, ale na tych starszych clientach trzeba było znaleźć parser pakietów po jakiejś funkcji która zawiera string bo tak było najłatwiej a potem z parsera znaleźć funkcję która była potrzeba na podstawie znanych pakietów właśnie z danej wersji OTS.

  • sk8erace1 zmienił(a) tytuł na Jak znaleźć wywołanie funkcji w kliencie Tibii 12
  • 9 miesięcy temu...
Opublikowano (edytowane)
W dniu 3.04.2022 o 21:28, rafaeru napisał:

Możesz posiłkować się tym:

https://github.com/otland/forgottenserver/blob/master/src/protocolgame.cpp#L514

 

Na Cliencie 12 nigdy tego nie robiłem, ale na tych starszych clientach trzeba było znaleźć parser pakietów po jakiejś funkcji która zawiera string bo tak było najłatwiej a potem z parsera znaleźć funkcję która była potrzeba na podstawie znanych pakietów właśnie z danej wersji OTS.

Przepraszam że temat odkopuję ale niestety mam identyczny problem. 
Poszukuję funkcji odpowiedzialnej za pisanie na czacie. 
Problem w tym że na kliencie tibii 12 są już jakieś zabezpieczenia i nie można znaleźć stringów praktycznie żadnych. Nawet "sorry not possible" nie można odszukać przy wejściu w ściane jak to było pokazane na tym filmiku ale na tibii 10: https://youtu.be/zldW5gBc-JE

Tworzę bota który nie będzie oparty na pixelsearchu.
Znalazłem pointer do ilości hp, many. Pattern adressu ringa i amuletu. Brakuje mi adresów do hp w party liście. Informacji o potworach w battleliście i funkcji odpowiedzialnej za wysyłanie wiadomości co by pozwoliło uniknąć klikania hotkeyów w bocie i zastąpić to callami do funkcji za to odpowiedzialnej. Dzięki temu bot nie pisałby na chacie gdy my coś piszemy. 
Już w tym momencie mój bot potrafi:
auto heal

auto manasowanie

auto balance ring/amulet

auto zakładać amulet/ring

 

 

 

Edytowane przez DemorHul
  • 2 tygodnie później...
Nowicjusz
Opublikowano
W dniu 12.03.2023 o 08:05, DemorHul napisał:

Przepraszam że temat odkopuję ale niestety mam identyczny problem. 
Poszukuję funkcji odpowiedzialnej za pisanie na czacie. 
Problem w tym że na kliencie tibii 12 są już jakieś zabezpieczenia i nie można znaleźć stringów praktycznie żadnych. Nawet "sorry not possible" nie można odszukać przy wejściu w ściane jak to było pokazane na tym filmiku ale na tibii 10: https://youtu.be/zldW5gBc-JE

Tworzę bota który nie będzie oparty na pixelsearchu.
Znalazłem pointer do ilości hp, many. Pattern adressu ringa i amuletu. Brakuje mi adresów do hp w party liście. Informacji o potworach w battleliście i funkcji odpowiedzialnej za wysyłanie wiadomości co by pozwoliło uniknąć klikania hotkeyów w bocie i zastąpić to callami do funkcji za to odpowiedzialnej. Dzięki temu bot nie pisałby na chacie gdy my coś piszemy. 
Już w tym momencie mój bot potrafi:
auto heal

auto manasowanie

auto balance ring/amulet

auto zakładać amulet/ring

 

 

 

 

Co do BL lub PL to problem nie jest trywialny jak w poprzednich wersjach Tibii.

Nowy klient ma to do siebie, że jest napisany w QT i tam nie ma stringów tylko jest QString (taka ciekawostka). Co do clou problemu z BL to "cachuje" obiekty np. gracze czy NPCki, którzy zniknęli z ekranu (wtedy na BL jest przestawiane z 0 na 1 - visible / not visible). Natomiast co do np. id gracza na ekranie, nazwy, procentu życia czy pozycji x czy y to każdy offset wskazuje na inny pointer w innej lokalizacji pamięci. Przykładowo: encja gracza na BL o nicku Tomurka jest w adresie 0x1234, w adresie 0x1234+4 zawartość jest wartość pointera z hppc, który należy obliczyć (np. wartości 8C7), wtedy uzyskamy adres np. 0x1A43C: wartość 100. BL czy PL jest QT kolekcją - tak samo jak np. skille czy eq. 

 

Co do wysyłania pakietów. Sprawa ma się podobnie jak w poprzednich wersjach Tibii - należy odnaleźć deltę XTEA i podpisywać nią pakiety (nie zmieniły się)

 

Pamiętaj, im krótsza droga w pointerze, tym szybciej będziesz odczytywać wartości.

 

Co do odczytywania to masz tutaj mały snippet mojego kodu, który odczytuje wartości z pamięci 🙂

 

Ogólnie cała magia wykonywana jest w ProcessMemoryLibrary oraz w pyTibiaMemory 😉

 

To jest ukryta treść, proszę

 

Opublikowano (edytowane)

Dzięki za odpowiedź. 

Uświadomiłeś mi jakim ignorantem byłem by podejmować się pisania tego bez wiedzy. Nie mam pojęcia czym jest QT, BL, PL. 

I tak sporo osiągnąłem bo potrafię odczytać wartość hp, many, max hp, max many, id założonych przedmiotów i kilka innych rzeczy.  

 

Najbardziej mi zależy na tym by uniknąć klikania hotkeyów na bocie, a zastąpić to wysyłaniem call'i do funkcji dzięki czemu da się normalnie pisać, a spelle będą leciały.

 

 

Byłbyś w stanie zrobić tutorial jak znaleźć adres funkcji odpowiedzialnej za "pisanie/wysyłania tekstu do serwera tak jak robi to chat"? 

https://youtu.be/zldW5gBc-JE?t=106

Tutaj to pokazuje chłop ale na wersji 10.98 chyba. Tam jest to dużo prostsze bo znajduje sobie stringa.

Edytowane przez DemorHul
Nowicjusz
Opublikowano
4 godziny temu, DemorHul napisał:

Dzięki za odpowiedź. 

Uświadomiłeś mi jakim ignorantem byłem by podejmować się pisania tego bez wiedzy. Nie mam pojęcia czym jest QT, BL, PL. 

I tak sporo osiągnąłem bo potrafię odczytać wartość hp, many, max hp, max many, id założonych przedmiotów i kilka innych rzeczy.  

 

Najbardziej mi zależy na tym by uniknąć klikania hotkeyów na bocie, a zastąpić to wysyłaniem call'i do funkcji dzięki czemu da się normalnie pisać, a spelle będą leciały.

 

 

Byłbyś w stanie zrobić tutorial jak znaleźć adres funkcji odpowiedzialnej za "pisanie/wysyłania tekstu do serwera tak jak robi to chat"? 

https://youtu.be/zldW5gBc-JE?t=106

Tutaj to pokazuje chłop ale na wersji 10.98 chyba. Tam jest to dużo prostsze bo znajduje sobie stringa.

Qt - https://www.qt.io/

BL - Battle List

PL - Party List

 

Wyszukujesz magiczną wartość: 0x9E3779B9 np. w Cheat Engine lub innym programie i w ASM patrzysz gdzie co jest (później robisz static pointer z tego).

 

Co do aktualizowania adresów to polecam napisać narzędzie, które będzie korzystać ze skanu AoB - Array of Bytes. Wtedy robisz taki myk, że wyszukujesz "pattern" adresu i wypluje Ci potencjalne miejsce adresu dynamicznego, który należy zamienić w pointer.

 

Przykład na jakiejś wersji klienta (XTEA):

 

To jest ukryta treść, proszę

 

Opublikowano (edytowane)

AoB ogarniam.

W taki sposób mam ogarnięte patterny na addresy z wartościami założonego ringa/amuletu.

 

O to czym jest XTEA popytałem chatgpt bo szczerze z wikipedii po angielsku za dużo się nie dowiedziałem 😄

 

Znalazłem coś takiego ale nie mam pojęcia co z tym dalej zrobić:

image.png

 

 

 

Edytowane przez DemorHul
  • 1 rok później...
Opublikowano

prubóję znaleźć BattleList Start offset do Tibii 7.4 (Realesta 7.4) ale nie moge za nic znaleźć...


Byłby ktoś w stanie znaleźć mi ten offset?

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...