- Black Ops Cold War’daki TAC(Treyarch Anti-Cheat), Ricochet çekirdek sürücüsü olmayan kullanıcı modu bir anti-cheat olsa da, güncel Call of Duty serileriyle büyük ölçüde benzer bir kod yapısına sahip
- Koruma katmanı, Arxan’ın çalıştırılabilir dosya şifreleme, checksum, jmp obfuscation ve entrypoint obfuscation özelliklerini Treyarch/IW serisi pointer şifrelemesiyle birlikte kullanıyor
- TAC; çalışma zamanında API hash araması, API hook kalıbı denetimi, debug register kontrolü, Windows test imzası algılama, konsol ayırma algılama, DirectX/overlay tespiti gibi çeşitli kullanıcı modu tespitleri yapıyor
- Harici overlay’ler için pencere stili, konumu, display affinity ve süreç modül listesi toplanıp sunucuya yükleniyor; Cheat Engine türü bellek tarayıcıları ise sanal bellek honeypot’u ile tespit edilebiliyor
- En özgün teknik, şifrelenmiş özel syscall stub’ları: ntdll hook’larını atlatıyor ve syscall kaynağını başka bir ntdll fonksiyonu gibi göstererek izlemeyi zorlaştırıyor
Analiz hedefi ve kapsamı
- Analiz hedefi, Black Ops Cold War içindeki kullanıcı modu anti-cheat; adlandırma olarak TAC(Treyarch Anti-Cheat) kullanılıyor
- Black Ops Cold War’da Modern Warfare 2019 ve sonraki oyunlarda bulunan Ricochet’in çekirdek modu bileşeni yok
- Güncel Call of Duty ile en büyük fark çekirdek modu sürücüsü; anti-cheat kodunun büyük bölümü kullanıcı modunda ve TAC ile çok benzer
- Fonksiyon pseudocode’ları, gerçek decompile çıktıları obfuscation ve çözümleme kodları nedeniyle karmaşık olduğundan yeniden yapılandırılmış biçimde
- Bazı içerikler, hile veya bypass tanıtımından kaçınmak için silinmiş
Arxan ve çalıştırılabilir dosya koruması
- Arxan, Black Ops 3’ten beri birçok Call of Duty oyununda kullanılan bir obfuscation ve koruma aracı
- Çalışma zamanında çalıştırılabilir dosya decryption’ı
- Oyun çalıştırılabilir dosyası pack’lenmiş ve şifrelenmiş durumda
- Arxan, başlangıç sürecine kod enjekte ederek gerçek oyun çalıştırılabilir dosyasını unpack edip decrypt ediyor
- Çalıştırılabilir dosya checksum’u
- Arxan, oyun çalıştırılabilir dosyasına yapılan patch’leri sürekli izliyor
- Debugger veya checksum uyuşmazlığı tespit edilirse süreci sonlandırıyor
- jmp obfuscation
- Statik analizi zorlaştırmak için fonksiyondaki talimatların arasına çok sayıda
jmpekliyor - Büyük fonksiyonlara yüzlerce jump eklendiğinde IDA analizi bozuluyor ve harici araçlar gerekiyor
- Statik analizi zorlaştırmak için fonksiyondaki talimatların arasına çok sayıda
- Entrypoint obfuscation
- Korunan Arxan kodu gerçek entrypoint’i unpack edip çalıştırıyor
- Bu bölüme de jmp obfuscation girebildiği için akış takibi zorlaşıyor
Pointer şifreleme
- Önemli pointer’lar kullanılmadan hemen önce şifrelenip çözülüyor
- Mevcut oyun global nesnesi
- Entity dizisi
- Object pointer’ları vb.
- Aynı şifreleme yönteminin 16 varyantı var; hangi yöntemin kullanılacağını mevcut PEB adresi belirliyor
- Bu yöntem Cheat Engine’in pointer scan’ini engelliyor
- Global değerlerde yalnızca şifrelenmiş değer tutuluyor
- Decrypt edilmiş değer yalnızca stack’te bulunuyor
- Decrypt edilmiş pointer’ı elde etmek için decrypt talimatlarını izleyen bir araç kullanmak veya oyunun zaten decrypt ettiği noktaya hook koymak gerekiyor
Çalışma zamanında API araması ve hook tespiti
- TAC inline edilmiş çalışma zamanı API arama fonksiyonları kullanıyor
- Modül hash’i ve API adı hash’i alıyor
- Yüklü modül listesini dolaşıp adları hash’liyor
- Modülün export fonksiyonlarını dolaşıp compile-time hash ile karşılaştırıyor
- Hash tanımlama, oyun sürecindeki yüklü modül listesi ve oyunun hashing fonksiyonu kullanılarak yapılıyor
- Modül adı ve export adının hash’i hesaplanıyor
- Decompile sonucundan base hash ve function hash manuel alınarak hangi API’nin çağrıldığı eşleştiriliyor
- Hash’ler oyun sürümüne göre aynı değil
- Fonksiyon pointer’ları global değişkenlerde saklandığı için, sanal adresi yüklü DLL’in export fonksiyonlarıyla karşılaştırarak da tanımlama yapılabiliyor
- TAC’nin API hook tespiti şu anda yalnızca 7 kalıbı kontrol ediyor
push/movabs/xchg/retserisi stub’larpush immardındanretcalljmp [rip+x]
- Tüm önemli API’leri kontrol etmiyor; kendi kullandığı API’ler üzerindeki hook’ları kontrol ediyor
Debug register ve sürücü test imzası algılama
- Debug register’lar, Arxan’ın
.textpatch izlemesini atlatan kod dışı patch hook yöntemi olarak kullanılabilir - TAC thread context içinde DR0~DR3 değerlerini kontrol ediyor
- Değer varsa, mevcut sürecin içinde olup olmamasına göre farklı mesajla callback çağırıyor
- Ardından akış sonlandırma fonksiyonuna gidiyor
- DR0~DR3 privileged register olduğu için normal assembly ile doğrudan okunamaz; Windows kernel veya exception aktarımı yoluyla alınmaları gerekir
- Windows test modu, normal imzası olmayan çekirdek modu sürücülerinin çalışmasına izin verir
- TAC,
NtQuerySystemInformationile test imzasının etkin olup olmadığını kontrol ediyor- Yalnızca bu tespitle doğrudan ban uygulanmıyor, ancak hesap flag’leniyor
Süreci sonlandırma yöntemi
- TAC süreci iki yöntemle sonlandırıyor
- İlk yöntem, register’ları temizledikten sonra
NtTerminateProcessçağırıyorRCXdeğerini-1olarak ayarlıyorNtTerminateProcesshook’lanmış olarak tespit edilirse bu yöntemi kullanmıyor
- İkinci yöntem, register’ları temizledikten sonra
0x0adresine jump ederek süreci crash ettiriyor - İki yöntem de önemli register’ları temizlediği için kurtarma zor
Konsol, görselleştirme ve overlay tespiti
- Dahili hileler log çıktısı veya menü uygulamak için
AllocConsolekullanabilir - TAC, konsol penceresini veya PEB’deki
ConsoleHandledeğerini kontrol ederek konsol ayırmayı tespit ediyor - Dahili görselleştirme çoğunlukla grafik API hook’u ile ekrana çizilir
- Güncel Call of Duty DirectX 12 kullanıyor
- Yaygın hook hedefi
IDXGISwapChain::Present - DirectX 12’de command queue gerekir;
ID3D12CommandQueue::ExecuteCommandListsyaygın bir elde etme noktasıdır
- OBS Studio, Streamlabs OBS, Discord oyun overlay’i ve Steam oyun overlay’i de benzer konumlarda çalışabilir
- Steam ve Discord çizim yapar
- OBS serisi, game capture kullanıldığında render edilen görüntüyü yakalar
- TAC şu anda DXGI present fonksiyonunun kendisini taramıyor; vtable’daki present pointer’ını kontrol ediyor
Harici hileler ve pencere tabanlı tespit
- Harici hilelerin oyun penceresinin üstünü kaplayan overlapped window oluşturma olasılığı yüksek
- TAC tüm pencereleri dolaşıp
GetWindowLongAile WS_EX_LAYERED stilini kontrol ediyor - Ardından
GetWindowRectile oyun penceresiyle çakışıp çakışmadığını karşılaştırıyor- Çakışma oranı
0.5veya üzerindeyse ve cache sayısı 8’den azsa ilgilihwnddeğerini kaydediyor - Örnek ekran boyutu olarak
1920x1080değerine karşılık gelen değer görünüyor
- Çakışma oranı
- Cache’lenen pencereler ayrı bir fonksiyonda ek olarak inceleniyor
GetWindowTextWile pencere metni kontrolüGetClassNameAile sınıf adı kontrolüGetWindowDisplayAffinityile display affinity kontrolü
- Kayıt ve ekran görüntüsü araçlarından gizlenmek için
SetWindowDisplayAffinityveWDA_EXCLUDEFROMCAPTUREkullanılması durumunu da TAC kontrol ediyor - Pencereyle ilgili bilgiler şifreli buffer’a kaydedilip sunucuya yükleniyor
- Pencere metni
- Sınıf adı
- Pencere konumu ve stili
- Display affinity
- Çakışan pencere sürecinin modül listesi ve exe adı
- Çakışan pencere süreci
OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION)ile açılıyor;K32EnumProcessModulesveK32GetModuleFileNameExWile modül adları toplanıyor
Cheat Engine türü bellek tarayıcılarını tespit etme
- Cheat Engine, Windows sanal bellek davranışı nedeniyle kolay tespit edilir
- Bir program
VirtualAllocile sanal bellek ayırsa bile, erişilmeden önce fiziksel bellek tarafından backing yapılmaz - Oyun bellek ayırdıktan sonra onu kullanmayabilir
- Cheat Engine veya Process Hacker’ın bellek sekmesi bu alanı tararsa erişim oluşur ve bellek valid duruma gelir
- TAC tarzı honeypot,
K32QueryWorkingSetExile ilgili sanal adrese gerçekten erişilip erişilmediğini kontrol ederek bellek tarayıcılarını tespit eder
Signature scan’i engelleme
- Oyun hacker’ları, güncellemelerden sonra da hilelerin otomatik çalışması için sıkça signature scanning kullanır
- Treyarch’ın fikri, tekrar çağrılmayacak bir fonksiyonda return address çevresini PAGE_NOACCESS ile korumak
- Signature scanner, çalıştırılabilir dosya byte’larını baştan sona okuyarak kalıp arar
- Her byte için erişilebilirlik sorgulanırsa çok yavaş olacağı için,
PAGE_NOACCESSbölgesine ulaşıldığında süreç crash edebilir - Bu yöntem tam bir engel değildir, ancak birçok analizciyi zorlayabilir
Anti-debugging
- TAC’nin kendi anti-debug kontrolleri basit, ancak Arxan da ayrı anti-debug teknikleri sağlıyor
- TAC mevcut sürecin tüm thread’lerini dolaşıyor
CreateToolhelp32Snapshotve thread snapshot kullanıyor- Her thread’in TEB’indeki
DbgSsReserveddeğerini kontrol ederek DebugObject varlığını tespit ediyor
- Geçersiz belleğe yazma yaparak access violation oluşturma tekniği de var
- Kod exception sonrasındaki noktaya ulaşırsa debugger’ın exception’ı işlediği veya bypass ettiği varsayılıyor
CheckRemoteDebuggerPresentde kullanılıyorThreadHideFromDebugger, exception’ların debugger’a değil sürece gönderilmesini sağlıyor- Debugger süreci durdurmaya çalıştığında
STATUS_BREAKPOINTexception’ı oluşup süreç sonlanabilir - Kullanıcı modunda bu flag unset edilemez
- Bu taktik, çalıştırılabilir dosya entrypoint’inden önce TLS callback içinde çalıştırılıyor
- Debugger süreci durdurmaya çalıştığında
Ağ trafiği izleme
- TAC tüm aktif bağlantıları saklamıyor, yalnızca belirli koşulları arıyor
- Tespit hedefi, oyun süreci içinde yerel ağ sunucusu oluşturma yöntemi
- Hileci shellcode’u oyun sürecine yazıyor
- Oyun süreci içinde ağ sunucusu başlatıyor
- Harici uygulama bu yerel sunucuyla bilgi alışverişi yapıyor
- TAC
GetTcpTable2ile TCP tablosunu alıyor; mevcut sürecin oluşturduğu bağlantılar ile başka süreçlerin port ilişkisini karşılaştırarak koşulu tespit ediyor
Şifrelenmiş özel syscall stub’ları
- ntdll’in birçok export API’si içeride syscall gerçekleştirir
- Özel syscall stub’ları kullanılırsa, kullanıcı modu hileleri ntdll fonksiyonlarını hook’lasa bile atlatılabilir
- Syscall instrumentation callback’e görünebilir
- Instrumentation callback syscall sonrasında çağrılır
- Dönüş adresi syscall instruction’ın hemen sonrası olur
- TAC, statik analizi zorlaştırmak için şifrelenmiş syscall stub’ları kullanıyor
- Stub,
.textsection’ında ayrılan büyük bir alan write/execute olarak korunduktan sonra oluşturuluyor NtReadFileiçinde syscall instruction’ı buluyor ve CPU zaman değerini rastgelelik unsuru olarak kullanıp konumu değiştiriyor- İzleyen tarafta syscall rastgele bir ntdll fonksiyonundan gelmiş gibi görünebilir
- Gerçek syscall
NtReadFileolmayabilir eaxiçindeki syscall index’i kontrol edilemezse hangi syscall olduğunu anlamak zorlaşır
- Gerçek syscall
- Yeniden çalıştırıldığında syscall instruction konumunun değiştiğine dair örnek var
Anti-debugger gizleme bypass tespiti
ThreadHideFromDebuggerayarlamak içinNtSetInformationThreadçağrılmalıdır- Hileci bu API’yi hook’layıp başarı döndürmesini sağlayabilir
- Böylece anti-cheat gizleme ayarının başarılı olduğuna inanır, ama gerçekte hiçbir şey olmayabilir
- TAC, kötü yazılmış hook’ları yakalamak için hatalı argümanlar verip çağrı sonucunu kontrol ediyor
- Uzunluk argümanı uymadığı için başarısız olması gereken çağrı başarılı olursa tespit ediyor
- Debugger ve ScyllaHide ortamında farklı dönüş değerleri çıktığına dair örnek var
- Sahte handle verip
ThreadHideFromDebuggeristeğine koşulsuz başarı döndüren hook’u da kontrol ediyor
Uzak thread oluşturmayı engelleme
- TAC,
STATUS_PRIVILEGED_INSTRUCTIONexception’ında mevcut thread’eTerminateThreadçağıran bir exception handler kuruyor - Manual mapping DLL’in uzak süreçte shellcode çalıştırmanın bir yoluna ihtiyacı vardır; yaygın yöntem
CreateRemoteThread’dir - Windows PE’nin TLS callback’i, thread oluşturulduğunda thread entrypoint’inden önce çağrılabilir
- TAC yeni thread context’inde başlangıç adresini kontrol ediyor
NtQueryInformationThreadile Win32 start address’i alıyor- Yüklü modül listesini dolaşıp başlangıç adresinin normal modül aralığında olup olmadığını kontrol ediyor
- Başlangıç adresi yüklü herhangi bir modül aralığında değilse tespiti kaydediyor ve privileged instruction exception’ı oluşturarak ilgili thread’i sonlandırıyor
Diğer kontroller ve sonuç
- Bilinmeyen bir kontrol olarak
NtQuerySystemInformationiçindekiAllocationGranularitydeğerinin0x10000olup olmadığını kontrol eden kod var- Sanal makineyi veya özel Windows sürümünü flag’liyor gibi görünüyor
- TAC bağlı modül listesine büyük ölçüde bağımlı olduğundan, PEB’deki
InMemoryOrderModuleList’in boş liste olup olmadığını kontrol ediyor- Boş liste haline getirilirse sürecin kendisinin bozulma olasılığı var
- Sonuç olarak TAC şu özelliklere sahip kullanıcı modu bir anti-cheat
- Çalışma zamanında API araması
- Kötü yazılmış hook tespiti
- Harici overlay tespiti
- Dahili DirectX hook tespiti
- Kullanılan API’lerde hook kontrolü
- Debugger ve debugging izleri kontrolü
AllocConsoletespitiCreateRemoteThreadtespiti- spoofed ve encrypted syscall stub’ları
- Arxan; güçlü obfuscation, statik analizi zorlaştırma, IDA Pro’yu bozan teknikler,
.textdeğişikliklerini izleme ve kendi anti-debug özellikleriyle TAC’yi destekliyor - TAC’ye benzer kod modern Call of Duty oyunlarında da kullanılıyor
1 yorum
Hacker News yorumları
2021’de Linux CS:GO hesabımda güven faktörü sorunları yaşandı; önce sarıya, sonra kırmızıya düştü ve resmi bir ban olmasa da fiilen bir yaptırım gibi işliyordu.
Sonuç olarak sürekli hilecilerle eşleştirildim ve takım arkadaşı bulmak zorlaştı.
Daha sonra Radeon GPU ve 16 GB’tan fazla VRAM kullanan başka Linux kullanıcılarının da benzer sorunlar yaşadığını öğrendim ve sorunu takip etmek için bir GitHub issue’su açtım: https://github.com/ValveSoftware/csgo-osx-linux/issues/2630
Araştırınca Valve’ın belirli donanım yapılandırmalarına, özellikle de o dönem oldukça yeni sayılan 16 GB+ VRAM’li Radeon kartlara sahip Linux kullanıcılarını cezalandırıyor gibi göründüğü anlaşıldı.
Sonunda bir kullanıcı doğrudan gaben’e ulaştıktan sonra sorun düzeltildi: https://github.com/ValveSoftware/csgo-osx-linux/issues/2630#...
Bunun, Steam Deck çıkışına hazırlanan Valve’ın Linux kullanıcı deneyimini önemsemesinin sonucu olabileceği tahmin ediliyor.
Yine de ilginç.
Oyun kalitesi kötüleştiği için mi tahmin ettiler, yoksa bunu doğrulamanın bir yolu mu vardı bilmiyorum.
Anladığım kadarıyla güven faktörü, kötüye kullanımı önlemek için gizli tutuluyor.
Hile eninde sonunda bir insan sorunu.
Yazıda anlatılan güvenlik önlemleri ve sezgisel yöntemlerle bariz hilecilerin %90’ı yakalanabilir; böyle bir anti-cheat’in temelde doğru yönde olduğunu düşünüyorum.
Ancak anti-cheat muhafazakâr çalışmalı ve nihai çözüm oyuncular ile yöneticilerden gelmeli.
Çevrim içi çok oyunculu oyunlar mutlaka insanlar tarafından yönetilen sunucularda çalışmalı ve oyuncuların bağlı olduğu sürenin çoğunda bir yönetici bulunmalı.
Mümkünse oyuncuların tanıdığı bir yönetici olması daha da iyi; yönetici yokken de oylamayla atma veya oylamayla banlama gibi daha hafif moderasyon yolları mümkün olmalı.
Bir hileciyi uzaklaştırmak ile sohbeti kötüye kullanan birini uzaklaştırmak arasında özünde bir fark yok.
Sonuçta çevrim içi çok oyunculu oyunlarda uygulanabilir tek sunucu biçiminin özel sunucular veya topluluk sunucuları olduğunu düşünüyorum.
Hilecileri ve kötüye kullananları kontrol etme süreci, bir bildirim sistemiyle alınıp asenkron işlenecek şekilde olmamalı; oyun yöneticileri hızlıca atma veya banlama yapmalı.
Çevrim içi oynanış yalnızca yayıncının matchmaking sunucularıyla mümkünse ve hileci ya da sohbeti kötüye kullananlara yönelik işlem sadece web formu üzerinden bildirimden ibaretse, o oyunu satın almayın veya oynamayın; cüzdanınızla oy verin.
Hakemleri denetleyen ayrı bir organizasyon bile kurulabilir ama en iyisi sadece oyunu oynamak.
Apex Legends güçlü raporlama ve anti-cheat sistemleriyle gayet iyi işliyor; Rocket League’de de büyük ölçüde otomatik moderasyon etkili çalışıyor.
Telefon numarası, fotoğrafla manuel doğrulama, rekabetçi maçtan önce 10 saat oynama şartı, diğer oyuncuların referansları veya bunların üstüne 5 dolarlık tek seferlik oyun geçişi gibi yöntemler de mümkün.
Henüz izlemediyseniz Valve’ın yapay zeka anti-cheat sunumunu öneririm.
Çalışma oldukça ilginç ve hilecilerin %99’unu yakaladığını iddia ediyor.
Elbette çok incelikli hile yöntemleri hâlâ var.
Activision’ın haksız kalıcı banını geri çevirmek için 2 yıllık bir hukuk mücadelesi verdim; Activision hileye dair tek bir kanıt sunamadı ve davayı kaybetti: https://antiblizzard.win/2025/01/18/my-two-year-fight-agains...
Hiç hile yapmamış olmama rağmen açıklama yapılmadan banlandım; düzenli olarak oynadığım üç hesabım vardı ve diğer ikisi banlanmadı.
Müşteri desteği sürekli yalnızca “inceleme sonucunda banın doğru olduğu görüldü” dedi ve neyi yanlış yaptığımı düzeltebilmem için hiçbir bilgi vermedi.
Oyundaki en nadir skinlerden birkaçına sahibim, 2009’dan beri binlerce saat oynadım ve yalnızca ARAM oynuyorum; en casual modda, duygusal değeri yüksek bir hesabı riske atarak hile yaptığım fikri hiç mantıklı değil.
Oyunlarla ilgili bundan daha stresli bir şey yaşamadım; sektörden bir tanıdığım içeriden kontrol ettirdiği için banım sebepsiz yere kaldırıldı.
Hâlâ oynuyorum ama neredeyse her seferinde o haksız ban aklıma geliyor ve League, zaman ayıracağım son rekabetçi çok oyunculu oyun olacak gibi.
Aynı şeyin tekrar yaşanmasından korktuğum için artık oynamak istemediğim de oluyor.
Konsolda hile yapmak neredeyse imkânsız; ranked’da zar zor vasat bir Gold 1’e çıkmam çok uzun sürdü ve herhangi bir davranışım nedeniyle hiç uyarı ya da rapor almadım, buna rağmen açıklamasız şekilde kalıcı banlandım.
Yazarı gibi mücadele etmek yerine Activision ürünlerine bir daha para harcamamaya karar verdim; bence herkes de böyle yapmalı.
ABD’de muhtemelen daha zordur ama Birleşik Krallık’ta ya da İngiltere’de, davalının bunun gerçek olduğunu kanıtlaması gerektiğini anlıyorum.
Çok oyunculu shooter’ları neredeyse hiç oynamadığım için şanslıyım; koca Steam kütüphanemi kaybetmekten gerçekten nefret ederdim.
Jump obfuscation beni çok meraklandırıyor
Tersine mühendislikle daha fazla uğraşmış biri yanıtlayabilirse iyi olurdu
Koşulsuz jump'ların belirli ön koşullarla ayıklanamayacak kadar yaygın olup olmadığını merak ediyorum; fonksiyon sonlarında return olduğu için bulması kolay görünüyor ama stack'i analiz edip fonksiyonun nereye döndüğünü anlayarak return adresinin hemen önündeki call'u bulma yöntemi mümkün mü?
x86 assembly programlamasını çok yapmadığım için çalışma şeklini yanlış anlamış olabilirim
Intel'in PIN framework'üyle de ilginç analizler yapılabilir
Yardımcı olabilecek yazılar şurada: https://calwa.re/reversing/obfuscation/binary-deobfuscation-..., https://www.nccgroup.com/us/research-blog/a-look-at-some-rea...
Birçok fonksiyon
retile bitmezBazı jump'lar sahtedir, bazıları da bir komutun içine atlar
Decompiler, aynı konumda iki komutun bulunduğu durumları işleyemez
Örneğin
jmp 0x1234içindejmpopcode'unu atlayıp0x1234kısmını geçerli bir komut varsaymak gibiBazı dallarda stack bozulmuş olur, ama bu kasıtlı olarak exception oluşturmak için yapılmış olabilir
Bu yüzden
lea RAX, [rsp + 0x99999999999]gibi komutlarınopile değiştirip decompile işlemini düzeltebilirsiniz, ama kasıtlı exception'ı kaçırabilirsinizIDA bunları iyi işleyemediği için Binary Ninja lisansı kullanıyorum; decompiler için fonksiyonları inline eden script'ler kolayca yazılabiliyor
IDA'da jump'lar arasındaki kod parçaları yalnızca tek bir fonksiyona ait olabildiğinden, jump'ların kod parçalarını birbirleriyle yeniden kullandığı durumları düzgün işleyemediğini düşünüyorum
Binary Ninja'nın Blizzard oyunlarında bir bug'ı olduğu için insanlar onu daha az kullanıyor gibi, ama yaklaşık 1 yıl önce bir bug raporuyla düzeltildi
Yaygın hazır araçların, özellikle IDA Pro kullanıcılarının işini zorlaştırmak için yapılmış bir obfuscation
Çoğu obfuscation'ın amacı, insanların başka projelere geçmesine yetecek kadar can sıkıcı olmaktır
Satıştan sonra ürün özelliklerini geri almak, sözleşmede veya EULA'da yer alsa bile yasayla engellenmeli
Ban, oyunun mülkiyetini bizzat elinizden almamalı; eğer alıyorsa para iadesi yapılmalı
İade ancak mahkeme kararına kadar gidilirse sağlanabiliyorsa, lisans ücreti, avukat masrafları ve mahkeme giderlerinin üstüne üç kat tazminat da olmalı
Örneğin Steam'de banlanıp tüm satın alımların geçersiz sayılması hukuken imkânsız olmalı
Hesaba giriş engellense bile item'lar ve envanter takas edilebilir olmalı; çünkü bunlar para ödemiş müşterinin gerçek zaman harcayarak elde ettiği şeyler
Çok oyunculu bir oyunda etik kuralları uygulamak istiyorsanız ya oyun için para alamamalısınız ya da ücretli kullanıcıların ban konusunda hakları olmalı
Ban'lar orantılılık ilkesine uymalı; insanın dahil olduğu, masrafın lisans fiyatıyla sınırlı olduğu ve yalnızca kaybedilirse üstlenilen bir temyiz/itiraz kurulu süreci ve kayıtları bulunmalı
En kötü durumda VAC oyunlarında hesabınıza herkese açık bir utanç işareti eklenir
İnsanlar eğlenmek ve başkalarıyla etkileşime girmek için çok oyunculu oyun oynar; dolayısıyla hile ya da başka kötü davranışlar başkalarını etkiliyorsa çok oyunculu hizmete erişim engellenmelidir
Topluma rahatsızlık verirsen bedel ödersin; bu oldukça evrensel bir ilke
Gerçek para kaybetmesinde de sorun olmadığını düşünüyorum
Ama yanlışlıkla banlanmak başka bir mesele
Ayrıca banlanan şey tüm Steam hesabı değil, artık oynayamadığın ilgili oyun değil mi?
Diğer oyuncular da para ödedi
COD'da hile yapmaya gerek bile yok
O kadar çok bug var ki oyun bunu senin yerine yapıyor
Ranked'da bıçak yerine silah yüklediği oluyor; ranked silah ekipmanı kontrolünde açıkça hatalı bir
caseveyaif-elseolduğu için bu mümkün oluyor ve ekipman seçicide görünen silaha izin verilmiyorsa varsayılan olarak XM4'e dönüyor gibiBildiğim oyunlar içinde ranked sürümü casual sürümünden daha bozuk olan neredeyse tek oyun
İnsan bunun nerede öğrenildiğini merak ediyor
Yazının yarısını bile anlayacak kadar daha fazla öğrenmek istiyorum ama nereden başlayacağımı bilmiyorum
Eski bir kitap ama mükemmel; çeşitli teknikleri ve alıştırmaları adım adım takip ettiriyor
Güncel araçlar o zamana göre biraz değişti ama x86 komut seti ve genel olarak assembly çok fazla değişmedi
En büyük kazanımlardan biri
crackmeile tanışmaktıTersine mühendisliği öğrenmek için yapılmış küçük meydan okuma ikilileri; kilit açma topluluğundaki pratik kilitleri gibi
Hatırladığım kadarıyla kitapla birlikte CD-ROM’da birkaç tane geliyordu, internette ararsanız da çok sayıda var
Öğrenmenin yolu bu tür alıştırmaları bizzat yapmaktan geçiyor
En baştan COD’yi tersine mühendislik etmeye kalkmamalı; adım adım biriktirerek ilerlemelisiniz
UnknownCheats, cs.rin.ru vb. yerlere bakanlara selamlar
Ben de orada aktifim; özellikle Linux kullanıcı alanı anti-cheat’leriyle, bunların içinde de VAC’nin nasıl çalıştığıyla daha çok ilgileniyorum
Popüler bir Horde/Alliance tabanlı MMO üzerinde biraz tersine mühendislik yaptım; neredeyse aynı adımları izliyordu ve FNV32 export hash’i de vardı
Çok benzer hileler kullandığını görünce neredeyse aynı yöntem gibi görünüyor
Aynı koruma teknolojisiyle paketlenmiş olup olmadığını merak ediyorum
İmza taraması gerçekten çok güçlü
Tersine mühendislikte benim için en bağımlılık yapan kısımlardan biri de bu
Bir imza listesi oluşturmak ve bu fonksiyon işaretçilerini çağırabilmek için betik dili binding’leri yazmak keyifli
Pek çok üçüncü taraf mod platformunun temelinde de bu var; çünkü mod geliştiricilerine, birinci taraf geliştiricinin açmadığı anlamlı API’ler sunmaları gerekiyor
Bildiğim kadarıyla bazı Source motoru eklentileri de gerektiğinde bu yöntemi kullanıyor
Ancak çoğu sanal fonksiyon tablosu işaretçisinin offset’ini kullanıyor gibi görünüyor
Oyun durumunu periyodik olarak dijital olarak imzalamanın ya da hileyi engellemek için bir tür iş ispatı eklemenin mümkün veya anlamlı olup olmayacağını düşünüyorum
Hileyi engellemenin çok zor bir problem olduğunu düşünmeye başladım
Küçük ve düşük maliyetli bir çevrimiçi FPS geliştiriyorum; anti-cheat yazılımı koymaktansa kullanıcıların birbirine güvenmesini ve hilecileri kendilerinin bulmasını ya da Valve gibi yapay zeka kullanmayı düşünüyorum
Oyuncuların sunucuları kendilerinin yönetip işletmesine izin vereceğim gibi görünüyor
Telefon numarası bağlama, diğer oyuncuların verdiği itibar puanı, kimlik ya da başka güçlü doğrulama araçları, dating uygulamalarındaki gibi fotoğrafla manuel doğrulama, rekabetçi maçlardan önce 10 saat oynama gibi şartlar koyulabilir
Hardcore oyuncuların hilecileri azaltmak için bu tür süreçleri gönüllü olarak yapacağını düşünüyorum
Sevmedikleri oyuncuyu raporlayıp engelletmeye yönelik sosyal istismar da var
Böyle bir sistemde yanlış pozitifler herhangi bir anti-cheat’ten çok daha fazla olur