warcraft 3 TFT + ROC, warcraft III,

Replaysowa strzałka Polskie Centrum Replayów - top
Replay Tygodnia / Best Replay
Nie ma żadnych replayów spełniających te wymogi.
zamknij

Nowy, nielepszy antyhack.

Kilka dni temu pojawił się nowy program przeciw hackom. Ludzie się rzucili na to jak szczerbaty na suchary – pozornie cudowne rozwiązanie. W artykule oczywiście będzie krytyka tego rozwiązania, od samego założenia po wykonanie.
 
Główną funkcją tego programu jest robienie zrzutów ekranu, tak na oko gdzieś co dwie minuty (testowałem na single player dla oszczędności czasu). Już w pierwszym komentarzu możemy przeczytać opinię zwykłego użytkownika:
„I think taking screenshots is the best "anti-hack" there could be (…) „ – „Uważam, że zrzuty ekranu to najlepszy antyhack jaki może być”. Oczywiście zupełnie się z takim twierdzeniem nie zgadzam. Jest kilka rzeczy, powodujących, że zrzuty ekranu to fatalne rozwiązanie.
  1. Zrzuty są duże, praktycznie nie da się zejść poniżej rozmiaru pojedynczego replaya 100KB. Ludzie posiadający lepsze sprzęty muszą robić ogromne, dochodzące do megabajtów zrzuty. Skoro mają lepsze sprzęty to może niech robią? Imho nie.
  2. Wszyscy z grubsza posiadają podobne łącza. Jeśli ktoś ma słabe łącze to będzie musiał spędzić dłuższy czas na wysyłaniu, może nawet więcej niż na graniu. Nadal jesteście nieprzekonani?
  3. Karty graficzne mają taką właściwość, że „odebranie” z nich obrazu jest „wąskopasmowe”. Wszystkie szokujące parametry transferu z pamięci wyrażane w GB/s dotyczą praktycznie tylko transferu pomiędzy modułami zainstalowanymi na karcie i GPU. Przekazanie danych do pamięci systemowej jest zazwyczaj wykonywane przez wąskie gardło o przepustowości w okolicy 130MB/s.
  4. Przeciętny obraz przed kompresją do jpg ma kilka MB. Nie istnieje żaden program zdolny wykonać kompresję takiej ilości danych przy dobrej jakości szybciej, niż wynosi różnica pomiędzy klatkami w grze. Oczywiście ten program robi to w tle, ale obciążenie procesora może się dawać we znaki, szczególnie posiadaczom słabego sprzętu.
  5. Jest tylko kilka funkcji w systemie, które mogą pobierać zrzuty ekranu. Człowiek szukający miejsca, w którym może zaatakować cały system, podmieniając obraz lub wyłączając na czas robienia zrzutu hack ma bardzo proste zadanie do rozwiązania.
 
Wracając do punktu czwartego, można bardzo łatwo policzyć, ile czasu zajmuje robienie zrzutu pojedynczej klatki. Wystarczy włączyć fraps, zacząć nagrywać i mierzyć FPS. Obraz jest wyciągany z karty graficznej nieskompresowany, więc przeliczenie rozmiaru robi się tak:
Rozmiar = rozdzielczość x * rozdzielczość y * bajty zajmowane przez pojedynczy piksel
Przykłady:
640*480*3 (24-bitowy kolor)
1024*768*2 (dla 16-bitowego koloru)
1280x1024*4 (dla 32-bitowego koloru)
 
Co jest najciekawsze, ponieważ pasmo karta graficzna->procesor jest ograniczone, uzyskamy stałą liczbę. Jeśli dysk wyrabia, inaczej otrzymamy maksymalną przepustowość dysku – zazwyczaj daje radę, bo zapis jest w postaci skompresowanej, która przeciętnie daje 1/4 początkowego rozmiaru. Ponieważ zazwyczaj mamy do czynienia z liczbą ~130MB/s, większość dysków nie sprawi problemu aż dojdziemy do 60MB/s (laptopy 20-40MB/s).
 
Przepustowość=FPS*rozmiar. Jednostka: fps (klatki/sekundę) * rozmiar (bajty/klatkę) = bajty/sekundę. Czyli otrzymujemy przepustowość karty graficznej „w drugą stronę” niż podawana na reklamach. Oczywiście zazwyczaj interesuje nas wartość wysyłania, a nie odbierania – ale przy nagrywaniu występuje właśnie ten odwrotny, szczególny przypadek. Na pojedynczym komputerze otrzymamy stałą liczbę, niezależnie od rozdzielczości. Wyjątkiem od reguły mogą być słaby dysk lub głębia koloru (nie jestem na 100% pewien, czy pobieranie następuje tylko w 32-bitowym kolorze i potem jest wszystko zamieniane, czy też jest możliwość wykonania konwersji kolorów przez grafikę. Jakby nie wychodziło, to najprawdopodobniej przy nagrywaniu 24-bit przy ustawieniu w grze 32-bit).
 
Wynika z tego, że przy obecnych kartach graficznych, które posiada 99% ludzi, każda próba pobierania zrzutów ekranu, a już na pewno całego filmiku, jest skazana na porażkę. Ponieważ zrzuty pobierane są rzadko, co kilka minut, to dostrzeżenie tego efektu jest pozornie trudne. W rzeczywistości widoczny jest mały lag, który może drażnić graczy (około 200ms).
 
Punkt piąty w prosty sposób sprawia, że suma kontrolna obrazu, która służy do sprawdzenia autentyczności, jest tylko fałszywym poczuciem bezpieczeństwa. Jeśli hack przechwycił odpowiednie wywołanie systemowe, używane do wykonania zrzutu, to suma będzie poprawna (bo jest liczona „zbyt późno”). Oczywiście samo to, że suma jest liczona i sprawdzana po stronie gracza sprawia, że można wyciągnąć jej algorytm i napisać program, który będzie ją obliczał i przez to „autoryzował” dowolne obrazki. Nie stanowi to więc dodatkowego zabezpieczenia samo z siebie. Tak samo nie zwiększa go zaszyfrowanie późniejszego archiwum zip i podobne pomysły – od momentu podmiany jest już za późno na cokolwiek. Można liczyć najwyżej na złapanie Spike’a :)
 
 
Jakby tego było mało, sam program nie wygląda na rozwojowy. Plik exe jest spakowany programem UPX, a po rozpakowaniu można przejrzeć jego zawartość, co odkrywa, że został napisany przy pomocy języka skryptowego AutoIt. O ile rzeczywiście wszystko działa, to trudno wyobrazić sobie dodanie jakichś trudniejszych trików, stanowiących wyzwanie dla hackerów. Szczerze mówiąc trudniejszy poziom stanowią te wbudowane, które przecież są z łatwością omijane (nie chodzi mi tutaj o system Warden, ale o te kilka trików, które posiada gra nawet bez połączenia z internetem).
Na początek wypadałoby pozbyć się denerwującego przełączania zadań w momencie kompresji (wyskakujące okienko, jeśli jest duże obciążenie procesora), może jeszcze plików tymczasowych (można przecież prosto z pamięci pakować do archiwum, zamiast dwukrotnie zapisywać to samo na dysku). Jeśli uważacie że ta krytyka jest zbyt surowa, to wyślijcie ten program na stronę z hackami. Zapewniam, że nie zostanie na nim sucha nitka.
 
Według mnie, takie rozwiązanie nie posiada żadnych zalet ponad nagrywaniem z kamerki. O ile tutaj jest problem z przesłaniem dużego pliku, to można łatwo utworzyć skrypt, lub nawet instrukcję obsługi VirtualDub, który wyjmuje losowe klatki. Cały proces można stosować tylko do podejrzanych graczy, dla oszczędności czasu. Autoryzacja zamiast sumy kontrolnej to oczywiście ludzkie oczy – wiadomo, że nie jest łatwo podrobić ekran gry nagrywanej z zewnątrz. Omija to także wąskie gardło karty graficznej, bo kamerki są przystosowane do szybkiego transferu swoich danych do zwykłej pamięci (a nie tylko dedykowanej na karcie), więc obciążają znacznie mniej przy porównywalnym FPS.
Oczywiście takie rozwiązanie również posiada słabości – mogą stać się popularne hacki korzystające z drugiego monitora, trudniej jest wszystko ustawić, kamerki są często zabugowane, no i część osób musiałaby posprzątać w pokoju. Jest też niebezpieczeństwo, że przewrócona przypadkiem kamerka pokaże coś, co wypali psychikę młodych graczy.

Zamieścił: pyton, dnia: 17:53:12, Wednesday 03. September 2008

Komentarze:

[19:25:29, Wednesday 03. September 2008]
szybka odpoiwdź na ten program :D
gj

[20:09:07, Wednesday 03. September 2008] , Zgłoś do moderacji
Taa nice xD :D

[13:57:19, Friday 05. September 2008] , Zgłoś do moderacji
gg wp ! swietnie napisany art ;) i tyle z tego anty-hacka

4: pyton, Support
[16:29:40, Friday 05. September 2008] , Zgłoś do moderacji
Przyjrzałem się mu trochę bliżej wczoraj, i okazuje się, że bardzo łatwo jest ukryć nawet bieżące hacki. Jak chcecie, to mogę dać nowy artykuł, taki o programowaniu, na ten temat.

[16:37:50, Friday 05. September 2008] , Zgłoś do moderacji
wg mnie przydalby sie art o rejestrze, usprawnieniu pecka etc :p jakies ciekawe programy jakie polecasz do roznego rodzaju bajerow i tym podobne..

a no i mam do ciebie pytanie: czy da sie tak zrobic, ze odpalasz jakis program i go nie bedzie w procesach windowsa?

6: pyton, Support
[18:30:32, Friday 05. September 2008] , Zgłoś do moderacji
O rejestrze jakby jest ten pierwszy z moich. Nic tam nie ma ciekawego tak ogólnie patrząc. Miałem napisać o optymalizacji w3 pod stare kompy, ale obecnie nie chcę poświęcać tak dużo czasu (trzeba by porównać kilka rzeczy zapuszczonych na różnych konfiguracjach). Na razie zebrałem odpowiedni sprzęt i się kurzy ;)

Program się oczywiście da ukryć. Robią tak wszystkie rootkity. Oczywiście nie da się usunąć programu w 100%, bo przecież chcesz, żeby jakoś działał w systemie, więc nie możesz go kompletnie usunąć "na zewnątrz". Usunięcie z listy menadżera zadań jest bardzo łatwe.

7: Winc
[20:03:48, Friday 05. September 2008] , Zgłoś do moderacji
Idealny tekst zeby przetlumaczyc i wyslac gosciowi :D
gj

8: pyton, Support
[20:33:59, Friday 05. September 2008] , Zgłoś do moderacji
Jednak w ten weekend nie będę nic pisał dłuższego. Programiki, które wykorzystują dwie słabości tego systemu umieszczam tutaj:
pyton0.googlepages.com/vi(...)

Jeden ostrzega dwoma piknięciami tuż przed tym, jak zostanie zrobiony zrzut ekranu (można użyć obecnych mh, które wyłączają się hotkeyem). Trzeba uruchomić po vigilans.exe.

Drugi demonstruje banalny błąd - okna półprzezroczyste nie są łapane przez vigilans (czyli można ukryć GUI maphacków jedną linijką programu). Dodatkowo jeśli ktoś nie zauważył, to cały ekran jest łapany. Jeśli przełączyłeś zadanie, to złapie pulpit.

Oczywiście są to tylko śmieciowe programy - u mnie działa, jak sobie zawiesicie wszystko to nie mój problem. Wirusów nie umieszczałem (pierwszy program prawdopodobnie zaalarmuje większość AV bo podmienia kod w vigilans.exe).

9: Prezesozord, moderator
[15:17:41, Saturday 06. September 2008] , Zgłoś do moderacji
Pyton słyszałem że jesteś dobrym informatykiem. Czy jesteś w stanie dać mi jakiś kod do gry by nieprzekazywać danych o niewidzialnych dla przeciwnika jednostach? Tzn taki anty mh?

10: pyton, Support
[16:03:19, Saturday 06. September 2008] , Zgłoś do moderacji
Nie ma takiej możliwości. Przede wszystkim silnik gry jest zoptymalizowany do oszczędzania łącza. Nie jest przesyłana informacja o stanie jednostek, tylko o akcjach gracza (np. jest przesyłane kliknięcie, ale zdrowie jednostek nie - tylko jest wyliczane na podstawie całego silnika gry, ich pozycji itd.).

Jakby tego było mało, gdyby nawet wszystkie informacje były przesyłane, to jest druga trudność. Teraz hack to maphack - odkrycie informacji. Gdyby ukryć informację o niewidzialnych jednostkach, to w momencie spotkania armii trzeba ją przesłać. Złośliwy gracz wykorzystałby to. Ponieważ potrzebna jest informacja o każdym ruchu, który był niewidzialny, to można poruszać dużo niewidoczną jednostką. Wtedy przy spotkaniu to wszystko trzeba przesłać. Złośliwy gracz mógłby to nabić nawet peonami. To by był nowy "tie hack".

11: Berig
[18:26:14, Monday 08. September 2008] , Zgłoś do moderacji
Tak to jest jak się za takie rzeczy zabierają amatorzy :<

[08:17:49, Saturday 13. September 2008]
a dane wysylane nie moga byc analizowane przez serwer battle.net tylko przez obu graczy ?

13: pyton, Support
[09:14:19, Saturday 13. September 2008] , Zgłoś do moderacji
Nie na ladderze. Bez battle.net nie ma komu ufać. Jeśli obaj gracze wyślą, że wygrali, to nie ma jak określić zwycięzcy.

No i nie rozwiązuje to żadnych z powyższych problemów i tak :)

[23:51:31, Saturday 13. September 2008] , Zgłoś do moderacji
a nie mozna zrobic tak ze wysylane sa wszystkie dane na serwer battle.net odnosnie jednostek a ten analizuje i wysyla tylko te ktore moglby zobaczyc drugi gracz i na odwrot ?

15: pyton, Support
[09:29:41, Sunday 14. September 2008] , Zgłoś do moderacji
A co jeśli peonami albo jakimś latającym ścierwem ktoś nabije kilka MB danych do przesłania? Nie można tego odrzucić, bo tak się może zdarzyć w zwykłej grze.

[16:36:33, Monday 15. September 2008] , Zgłoś do moderacji
chodzi mi o dane na bierzaco. Tak samo wszystko dziala jak teraz tylko ze + ta analiza serwera. Nie wiem jak moze nabic kilka mb danych jezeli teraz nie nabija.
Mi chodzi o caly system gry sie rozgrywa tak samo tyle ze serwer analizuje widocznosc graczy. Raczej jesli sie przesle mniejsza ilosc jednostek to bedzie mniej danych do przeslania a jezeli cala armia

17: pyton, Support
[16:53:45, Monday 15. September 2008] , Zgłoś do moderacji
Jak dalej nie zrozumiesz po tym poście, to może napiszę artykuł z rysunkami ;)

Obecnie jest optymalizacja łącza - tak jest zbudowany engine gry. Czyli przesyłane są dane np. kliknięcie w X:Y. Z tego engine odtwarza stan jednostek np. ich HP. Jeśli serwer przetrzymuje te informacje, żeby ich nie ujawniać dopóki jednostki nie są widoczne, to potem musi je przesłać wszystkie naraz, gdy już staną się widoczne.
Czyli wszystkie ruchy wykonane w mgle wojny muszą być odtworzone (nie tylko ostatni), żeby wiedzieć czy creepy żyją, ile co ma HP, czy są budynki itd.

Obecnie dane są przesyłane na bieżąco i jest ich całkiem dużo. Replay jest spakowany, ale zazwyczaj pomiędzy 100-500KB. Po rozpakowaniu to są znaczne ilości danych, nawet kilka MB. A przecież nikt tego nie nabija z automatu, tylko wszystko "ręcznie". Obecnie średnio wychodzi niewiele, bo nic się nie przechowuje (ukrywa).

Przyspamowanie automatem jest możliwe teraz, ale prawdopodobnie efektem jest rozłączenie gracza wysyłającego "zbyt dużo". W przypadku ukrywania informacji nie dałoby się zastosować tak prostego kryterium, bo w zwykłej grze zdarzałyby się sytuacje z dużą ilością danych.

[19:48:03, Monday 15. September 2008] , Zgłoś do moderacji
"Czyli wszystkie ruchy wykonane w mgle wojny muszą być odtworzone (nie tylko ostatni), żeby wiedzieć czy creepy żyją, ile co ma HP, czy są budynki itd."
teraz tak czy siak jak sie stykniesz z wrogiem to przesylasz wszystkie info naraz raczej, jezeli mowisz ze wysyla X:Y danej jednostki
dalej nie rozumiem :D

19: pyton, Support
[20:14:22, Monday 15. September 2008] , Zgłoś do moderacji
Nie wysyła HP. Nie wysyła X:Y jednostki, tylko kliknięcie w X:Y. Jak jednostka ginie, to też nie jest wysyłane, że padła.

Żeby otrzymać bieżący stan jednostki, trzeba mieć wszystkie poprzednie komendy. Przykład: klikasz w 1:1, jednostka gdzieś jest na drugim końcu mapy. Zaczyna iść - klikasz zanim dotrze do 1:1 w 5:5 - gdzie jest jednostka w momencie kliknięcia w 5:5? To określa engine gry - prędkość poruszania, algorytm szukania drogi, mapa, przeszkody, inne jednostki itd. Te informacje pośrednie nie są przesyłane. Dlatego potrzebujesz wszystkich komend, od samego początku istnienia jednostki.

[22:34:57, Monday 15. September 2008] , Zgłoś do moderacji
ok teraz rozumiem. Czy wybudowana jednostka jest przesylana ?

21: pyton, Support
[07:28:03, Tuesday 16. September 2008] , Zgłoś do moderacji
Tak, wybudowanie jest przesyłane. Jednak nic nie daje, gdybyś chciał to sfałszować ;)

[08:02:13, Tuesday 16. September 2008] , Zgłoś do moderacji
nie o to chodzi. Jest pewien ums w ktorym wychodzi po 20 unitow naraz i i jakos daje rade. Zobacz defend of lich king

23: pyton, Support
[08:12:13, Tuesday 16. September 2008] , Zgłoś do moderacji
20 to mało, spróbuj pograć bez food cap. Ruszenie armią 200-300 jednostek to już problem. Zauważ też, że samo ruszenie jest przesyłane. Jak już idą, to żadne dane nie lecą, nawet jak coś po drodze zaatakują.
20 masz w normalnej grze, możesz normalnie ruszyć 100 jednostkami naraz.
----
Albo footmen frenzy, jak zbiorą się armie i ktoś kliknie ruch całością - zawsze jest drobny lag wtedy.

[18:03:52, Wednesday 14. January 2009] , Zgłoś do moderacji
na metin2 mam anwiazanie z gm i mowie o ahckach

Więcej?

Chcesz znaleźć informacje na konkretny temat? Przejrzyj hasła, których najczęściej dotyczą dodane ostatnio nowości! WC3L, WCG, NETWARS, LCW, TURNIEJ, WORLD CYBER GAMES, DOTA, TERROR, MYM, WYWIAD, PALADYN, REPPACK, GRUBBY, PORADNIK, BLIZZARD, BIOT, ESL, POL-TEAM, MOON, KONKURS, LIGA, WORLD ELITE, FUZJA, NGL-ONE, ENC, NGL, TDEL, SPQR, SLH, MOUZ, PGS, GFO, BRONZE, KODE5, WILDA, TEAM FIGHTING, LADDER, REPREZENTACJA, SILVER, HEADSHOT, EXTREME MASTERS, HEYAH, FLY100%, TOD, VOODOO, WARCRAFT, KUJA, BIOHAZARD-TEAM, BVG, WICKED, ESWC, ALMOST, ACIS, CYKLOP, WILQ, REPLAYPACK, INCUP, CLAN BASE, PATCH, HOORAI, SASE, ELIMINACJE, FINAłY, FNATIC, WCG 2006, IEST, SRS, FINAł, CYBERSPORT, WE.EU, PLD, SKY, PRAE, JAGR, LAN, REPLAYS.PL, CHALLENGE, ANIMATOR, 2007, CARMAC, NATIONS, STARCRAFT, PEDAL, KONKURSIWO

Copyright © Wszelkie prawa zastrzeżone,
kopiowanie tylko za zgodą właściciela.
2003/2007 by: CyklOP, Muzami, Julas [ Mapa Strony ]
Replayów w bazie: 18091 Kont użytkowników: 11137

Pomysł, oskryptowanie, administracja: CyklOP [salon kosmetyczny wrocław] [Englisch für Kinder] [angielski dla dzieci] [deutschtests]
Design: Muzami, art w topie strony nadesłał Z4buZa
Skrypt obsługujacy replaye: Juliusz 'Julas' Gonera [ Replay Parser ]
Wykonano w czasie 1.37072491646 sekund