#1 2011-05-01 20:48:09

 Soldier of the North

http://i34.tinypic.com/3321jrs.gif

1980
Skąd: Nordland
Zarejestrowany: 2008-02-06
Posty: 3369

Klient Tibii - prawdy i mity

Ostatnio czytając forum zauważyłem tendencje do przesady w sprawie klienta Tibii i niesamowitych informacji jakie może on pobierać z waszych komputerów. 

Informacje, które czyta klient

CipSoft podał ostatnio informacje, że po patchu klient będzie pobierał niektóre informacje o systemie i sprzęcie.
Pomyślałem, że warto to sprawdzić.
Wyniki poszukiwań będę podawał w formie adresów w pamięci klienta. Adresy te to początki danych funkcji.

Kod:

Native System Info
0054A000

Memory Status
0054BD00

Processor Type
0054BFF0

System Logical Processor
0054ADE0

Get Processor MHz
0054AF40

Graphics Device
0054C430

Get the max graphic object count
0054B070

Translate the windows the windows type (XP, VISTA, 95...)
0054CAF0

Get the windows type
00454880

Location Information
0054C93F

Detect the graphics card corporation (NVidia..)
0054D5F0

Możecie sami sprawdzić co tam siedzi Ja zapewniam was, że nie ma tu nic poza tym co oświadczyły Cipy.

W jaki sposób klient pobiera/wysyła informacje

No dobra, mamy już informacje ale wypadało by dowiedzieć się kiedy klient je pobiera.
Gdyby się zastanowić to raczej nie robi tego ciągle podczas grania, takie cykliczne operacje mogły by spowolnić grę i zwiększyć zużycie procesora. Ja obstawiałbym, ze są one pobierane podczas startu klienta.
Sprawdźmy to !
Aby to zrobić wystarczy założyć breake pointa na którymkolwiek z wyżej wymienionych adresów. Jeżeli CipSoft pobiera te dane raz, to wszystkie.

Wybierzmy 0054A000, postawmy BP i uruchommy klient.


No proszę, proces został zatrzymany co oznacza, że dana funkcja została wywołana. Przepuśćmy ją klikając "Run".
Zalogujmy się i trochę pograjmy.
Możemy sobie chodzić, nic się nie stanie. Jeżeli wyłączymy grę, funkcja również nie zostanie wywołana.
Sprawdźmy jeszcze co się stanie podczas crasha.
No proszę tuż przed crashem również olly pokazał, że funkcja została wywołana.
Podsumujmy, klient pobiera te informacje tylko w 2 przypadkach.

Podczas uruchomienia klienta
Podczas crasha

Sprawdźmy więc położenie głównej funkcji, która pobiera te wszystkie dane i formuje w jeden ciąg.

Oto jej adres:

Kod:

0054C8F0   > 6A FF          PUSH -1

Jeżeli się jej przyjrzymy znajdziemy wywołania wszystkich funkcji które podałem wyżej:

Kod:

0054C8F0   > 6A FF          PUSH -1
0054C8F2   . 68 A8CB5A00    PUSH Tibia.005ACBA8                      ;  SE handler installation
0054C8F7   . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0054C8FD   . 50             PUSH EAX
0054C8FE   . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
0054C905   . 83EC 1C        SUB ESP,1C
0054C908   . 53             PUSH EBX
0054C909   . 56             PUSH ESI
0054C90A   . 33DB           XOR EBX,EBX
0054C90C   . 57             PUSH EDI
0054C90D   . 8BF1           MOV ESI,ECX
0054C90F   . C74424 24 0F00>MOV DWORD PTR SS:[ESP+24],0F
0054C917   . 895C24 20      MOV DWORD PTR SS:[ESP+20],EBX
0054C91B   . 885C24 10      MOV BYTE PTR SS:[ESP+10],BL
0054C91F   . 895C24 30      MOV DWORD PTR SS:[ESP+30],EBX
0054C923   . 56             PUSH ESI                                 ; /Arg1
0054C924   . E8 D7D6FFFF    [b][color=Red]CALL Tibia.0054A000                      ; \Tibia.0054A000             Native System Info[/color][/b]
0054C929   . 8D7E 04        LEA EDI,DWORD PTR DS:[ESI+4]
0054C92C   . 83C4 04        ADD ESP,4
0054C92F   . 3BFB           CMP EDI,EBX
0054C931   . 74 1D          JE SHORT Tibia.0054C950
0054C933   . 6A 04          PUSH 4                                   ; /BufSize = 4
0054C935   . 57             PUSH EDI                                 ; |Buffer
0054C936   . 6A 07          PUSH 7                                   ; |InfoType = 7
0054C938   . 68 00080000    PUSH 800                                 ; |LocaleId = 800
0054C93D   . 891F           MOV DWORD PTR DS:[EDI],EBX               ; |
[b][color=Red]0054C93F   . FF15 DCF25A00  CALL DWORD PTR DS:[<&KERNEL32.GetLocaleI>; \GetLocaleInfoA    Location Information[/color][/b]
0054C945   . 85C0           TEST EAX,EAX
0054C947   . 75 04          JNZ SHORT Tibia.0054C94D
0054C949   . 891F           MOV DWORD PTR DS:[EDI],EBX
0054C94B   . EB 03          JMP SHORT Tibia.0054C950
0054C94D   > 885F 03        MOV BYTE PTR DS:[EDI+3],BL
0054C950   > 8D46 08        LEA EAX,DWORD PTR DS:[ESI+8]
0054C953   . 50             PUSH EAX
0054C954   . E8 57DBFFFF    CALL Tibia.0054A4B0
0054C959   . 8D4C24 10      LEA ECX,DWORD PTR SS:[ESP+10]
0054C95D   . 51             PUSH ECX
0054C95E   . 8D56 10        LEA EDX,DWORD PTR DS:[ESI+10]
0054C961   . 52             PUSH EDX
0054C962   . 8D46 0C        LEA EAX,DWORD PTR DS:[ESI+C]
0054C965   . 50             PUSH EAX
0054C966   . E8 95F3FFFF    [b][color=Red]CALL Tibia.0054BD00          | Memory Status[/color][/b]
0054C96B   . 8D4C24 1C      LEA ECX,DWORD PTR SS:[ESP+1C]
0054C96F   . 51             PUSH ECX
0054C970   . 8D56 18        LEA EDX,DWORD PTR DS:[ESI+18]
0054C973   . 52             PUSH EDX
0054C974   . 8D46 14        LEA EAX,DWORD PTR DS:[ESI+14]
0054C977   . 50             PUSH EAX
0054C978   . E8 73F6FFFF    [b][color=Red]CALL Tibia.0054BFF0       |Processor Type[/color][/b]
0054C97D   . 8D4E 30        LEA ECX,DWORD PTR DS:[ESI+30]
0054C980   . 51             PUSH ECX
0054C981   . 8D56 2C        LEA EDX,DWORD PTR DS:[ESI+2C]
0054C984   . 52             PUSH EDX
0054C985   . 8D46 28        LEA EAX,DWORD PTR DS:[ESI+28]
0054C988   . 50             PUSH EAX
0054C989   . 8D4E 24        LEA ECX,DWORD PTR DS:[ESI+24]
0054C98C   . 51             PUSH ECX
0054C98D   . E8 4EE4FFFF    [b][color=Red]CALL Tibia.0054ADE0     System Logical Processor[/color][/b]
0054C992   . 8D56 38        LEA EDX,DWORD PTR DS:[ESI+38]
0054C995   . 52             PUSH EDX
0054C996   . 8D46 34        LEA EAX,DWORD PTR DS:[ESI+34]
0054C999   . 50             PUSH EAX
0054C99A   . E8 A1E5FFFF    [color=Red][b]CALL Tibia.0054AF40   Get Processor MHz[/b][/color]
0054C99F   . 8D4E 58        LEA ECX,DWORD PTR DS:[ESI+58]
0054C9A2   . 51             PUSH ECX
0054C9A3   . 8D56 54        LEA EDX,DWORD PTR DS:[ESI+54]
0054C9A6   . 52             PUSH EDX
0054C9A7   . 8D46 50        LEA EAX,DWORD PTR DS:[ESI+50]
0054C9AA   . 50             PUSH EAX
0054C9AB   . 8D4E 40        LEA ECX,DWORD PTR DS:[ESI+40]
0054C9AE   . 51             PUSH ECX
0054C9AF   . 8D56 3C        LEA EDX,DWORD PTR DS:[ESI+3C]
0054C9B2   . 52             PUSH EDX
0054C9B3   . E8 78FAFFFF    [b][color=Red]CALL Tibia.0054C430   Graphics Device [/color][/b]
0054C9B8   . 83C4 48        ADD ESP,48
0054C9BB   . 83C6 4C        ADD ESI,4C
0054C9BE   . 56             PUSH ESI                                 ; /Arg1
0054C9BF   . E8 ACE6FFFF    [b][color=Red]CALL Tibia.0054B070                      ; \Tibia.0054B070  Get the max graphic object count[/color][/b]
0054C9C4   . 83C4 04        ADD ESP,4
0054C9C7   . C74424 30 FFFF>MOV DWORD PTR SS:[ESP+30],-1
0054C9CF   . 837C24 24 10   CMP DWORD PTR SS:[ESP+24],10
0054C9D4   . 72 0D          JB SHORT Tibia.0054C9E3
0054C9D6   . 8B4424 10      MOV EAX,DWORD PTR SS:[ESP+10]
0054C9DA   . 50             PUSH EAX
0054C9DB   . E8 1CCE0100    CALL Tibia.005697FC
0054C9E0   . 83C4 04        ADD ESP,4
0054C9E3   > 8B4C24 28      MOV ECX,DWORD PTR SS:[ESP+28]
0054C9E7   . 5F             POP EDI
0054C9E8   . 5E             POP ESI
0054C9E9   . 895C24 18      MOV DWORD PTR SS:[ESP+18],EBX
0054C9ED   . 885C24 08      MOV BYTE PTR SS:[ESP+8],BL
0054C9F1   . C74424 1C 0F00>MOV DWORD PTR SS:[ESP+1C],0F
0054C9F9   . 5B             POP EBX
0054C9FA   . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
0054CA01   . 83C4 28        ADD ESP,28
0054CA04   . C3             RETN

To są funkcje które znaleźliśmy i których adresy znamy


To adresy których bezpośrednio w tej funkcji nie udało się znaleźć:

0054CAF0  : Translate the windows type (XP, VISTA, 95...)
00454880  : Get the windows type
0054D5F0  : Detect the graphics card corporation (NVidia..)


Mamy też wywołania funkcji których nie opisałem wyżej np:


CALL Tibia.0054A4B0
CALL Tibia.005697FC


Przejdźmy więc do nich

054a4b0:

Kod:

0054A4B0  /$ 83EC 40        SUB ESP,40
0054A4B3  |. 56             PUSH ESI
0054A4B4  |. 8B7424 48      MOV ESI,DWORD PTR SS:[ESP+48]
0054A4B8  |. 68 24B15C00    PUSH Tibia.005CB124                      ; /ProcNameOrOrdinal = "GlobalMemoryStatusEx"
0054A4BD  |. 68 00B15C00    PUSH Tibia.005CB100                      ; |/pModule = "kernel32.dll"
0054A4C2  |. C706 00000000  MOV DWORD PTR DS:[ESI],0                 ; ||
0054A4C8  |. FF15 A4F25A00  CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; |\GetModuleHandleA
0054A4CE  |. 50             PUSH EAX                                 ; |hModule
0054A4CF  |. FF15 20F25A00  CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress
.....
0054A548  |. 83C4 40        ADD ESP,40
0054A54B  \. C3             RETN

Jak widzicie nic strasznego, ta funkcja pobiera wcześniej parametry potrzebne do wywołania funkcji:

Kod:

0054C965   . 50             PUSH EAX
0054C966   . E8 95F3FFFF    CALL Tibia.0054BD00          | Memory Status

Co widać po przesunięciu na stos wartości z rejestru EAX (czyli właśnie tego co wyszło z "nieznanej funkcji").

Kolejną nieznaną funkcje można rozgryźć szukając w kliencie takiej komendy:

Kod:

CALL 0054CAF0

Dojdziemy do czegoś takiego:

Kod:

0054C625  |. 56             |PUSH ESI
0054C626  |. 8D8D 60FFFFFF  |LEA ECX,DWORD PTR SS:[EBP-A0]
0054C62C  |. 51             |PUSH ECX
0054C62D  |. E8 BE0F0000    |CALL Tibia.0054D5F0

Scrollujemy do samej góry i sprawdzamy skąd ta funkcja została wywołana.

Co się okazało? Wywołana została w naszej głównej funkcji formującej informacje o systemie:

Kod:

0054C9B3   . E8 78FAFFFF    CALL Tibia.0054C430

I tym za jednym razem stwierdziliśmy, że funkcja "Detect the graphics card corporation (NVidia..)" jest wywoływana dopiero przez inną funkcję, którą na początku określiliśmy jako nieznaną.
No dobra, ale co z systemem?
Przecież on też musi być pobierany a nigdzie go tutaj nie ma.

Załóżmy breake pointa na

Kod:

00454880  - Get the windows type

Co się okazuje przy uruchomieniu klienta ta funkcja nie jest wywoływana!
W sumie to nawet logiczne. Programiści nie są w stanie przetestować programu na każdym systemie operacyjnym. Wychodzą z założenia, że jeżeli działa to dobrze a jeżeli crashuje to trzeba coś z tym zrobić. Dlatego ta informacja pobierana jest dopiero podczas crasha.

Jeżeli cofniemy się od naszej głownej funkcji formującej informacje o systemie dojdziemy do takiego miejsca:

Kod:

005AE18F     CC             INT3
[b][color=Red]005AE190   . B9 50B17800    MOV ECX,Tibia.0078B150[/color][/b]
005AE195   . E8 D654F5FF    CALL Tibia.00503670
005AE19A   . 68 F0E45A00    PUSH Tibia.005AE4F0
005AE19F   . E8 429DFAFF    CALL Tibia.00557EE6
005AE1A4   . 59             POP ECX
005AE1A5   . C3             RETN
005AE1A6     CC             INT3

Ta część kodu wywoływana jest w miejscu gdzie tworzone jest proces czyli na samym początku programu.
Tak więc doszliśmy do początku ^^

Dobra, wiemy już, że Tibia pobiera te informacje ale wypadało by sprawdzić czy je wysyła.

Oto adres funkcji która tworzy login packet:

Kod:

00457655  |. E8 86DEFBFF    CALL Tibia.004154E0                      ; \Tibia.004154E0

Moim zdaniem nie ma tam informacji o systemie. Jeżeli ktoś uważa inaczej to niech skoryguje to co napisałem.

Nawet gdyby były to niekompletne bo nie ma nic o systemie (jak wiemy ta funkcja wywoływana jest dopiero podczas crasha).

Skąd wiem, że klient nie wysyła tych informacji w czasie gry?
Stąd, że mój program zakład hooka na funkcję recv i send.
Gdyby przeszedł chociaż jeden pakiet z nieznanym nagłówkiem na 100% bym go odnotował.
Nic takiego jednak się nie stało.

Podsumowując, klient nie wysyła informacji o waszym systemie za każdym razem gdy włączycie bota. Robi to dopiero podczas crasha.


Gdyby się zastanowić to nawet ma sens, bo po co informacje o systemie kiedy wszystko działa jak należy? Te info zbiera się dopiero podczas crasha programu bo można po nich dojść co jest ewentualną przyczyną błędu.

Mity o kliencie

Wielokrotnie czytałem wypowiedzi fachowców z tego forum. Niejednokrotnie twierdzili oni, że klient wysyła informacje o tym czy zmieniony jest tittle (ten napis "Tibia" w kliencie), czy korzystamy z bota, albo jeszcze jakieś inne bzdety.

Kiedy niby miałby to robić?
Wiemy, że nie robi tego podczas logowania ani podczas gry. Jedyna możliwość przesłania takich informacji to crash raport. Ale jak ktoś sam raportuje takie rzeczy to jego sprawa.

Tak więc:

1. Klient na pewno pobiera informacje o systemie.
2. Klient na pewno wysyła je do CipSoftu, ale nie robi tego za każdym uruchomieniem.
3. Klient nie sprawdza innych informacji o waszym systemie, nawet jeżeli by to robił, nie ma prawa ich gdziekolwiek przesłać. To wasza prywatna sprawa co macie uruchomione i sprawdzanie czegoś takiego to łamanie prawa!


Czego jeszcze nie rozwiązano

Pomimo wielu starań nikomu nie udało się rozwiązać zagadki cudownego "autobana".
Do tej pory nikt nie wie co jest a co nie jest wykrywalne.
Programiści obstawiają takie rzeczy jak:

"Zbyt częste wysyłanie pakietów"
"Zbyt dokładne leczenie i powtarzanie niektórych czynności"
"Zbyt szybkie zbieranie przedmiotów"

Ale równie dobrze taki system może nie istnieć a CipSoft opiera się na danych które zgromadził do tej pory.


Tak więc w kilku słowach

CipSoft raczej na 100% podczas banów nie wspiera się informacjami o systemie ani niczym innym co mogło by pochodzić od klienta!


Mam nadzieję, że rozwiałem trochę wątpliwości i pokazałem, że do wszystkiego da się dojść.
Jestem jednak człowiekiem i mogłem gdzieś się pomylić. Jeżeli ktokolwiek ma jakiekolwiek zastrzeżenia niech da znać w tym temacie.

Art. pochodzi z forum TibiaSoft.


http://img811.imageshack.us/img811/7369/strza1.jpg

Offline

 

#2 2011-05-16 08:09:15

damoni333

http://i37.tinypic.com/okc0lk.gif

Zarejestrowany: 2011-05-16
Posty: 4

Re: Klient Tibii - prawdy i mity

Czyli tam to nic strasznego ?

Offline

 

#3 2011-05-22 07:34:24

tomcio354123

http://i37.tinypic.com/okc0lk.gif

Zarejestrowany: 2011-05-22
Posty: 1

Re: Klient Tibii - prawdy i mity

siema

Offline

 

#4 2012-02-21 12:57:55

 KamaShoot

http://i35.tinypic.com/2q9yumu.gif

12612754
Call me!
Skąd: FRANCE
Zarejestrowany: 2012-02-19
Posty: 137
Profesja: Hoster
Server: MINIWAR
WWW

Re: Klient Tibii - prawdy i mity

Przydatna informacja ^^


Pomoglem daj +
http://s2.tibiafun.y0.pl/char.php?c=Bladeli
Zapraszam na najlepsze forum o OTS www.tibiaot.pun.pl
http://img844.imageshack.us/img844/5093/111ke.gif

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.dark-pokemon.pun.pl www.fairplayy.pun.pl www.blackveilbrides.pun.pl www.panfu-fan.pun.pl www.kp500.pun.pl