- TAC (Treyarch Anti-Cheat) di Black Ops Cold War adalah anticheat mode pengguna tanpa driver kernel Ricochet, tetapi memiliki struktur kode yang sangat mirip dengan seri Call of Duty terbaru
- Lapisan perlindungannya menggunakan enkripsi executable, checksum, obfuscation
jmp, obfuscation entry point dari Arxan, bersama enkripsi pointer ala Treyarch/IW - TAC melakukan berbagai deteksi mode pengguna seperti lookup hash API saat runtime, pemeriksaan pola hook API, pengecekan debug register, deteksi test signing Windows, deteksi alokasi console, serta deteksi DirectX/overlay
- Overlay eksternal dikumpulkan melalui style window, posisi, display affinity, dan daftar modul proses lalu diunggah ke server, sedangkan pemindai memori seperti Cheat Engine dapat terdeteksi lewat honeypot memori virtual
- Teknik yang paling unik adalah syscall stub kustom terenkripsi, yang melewati hook
ntdlldan membuat asal syscall tampak seperti berasal dari fungsintdlllain sehingga lebih sulit dimonitor
Target analisis dan cakupan
- Objek analisis adalah anticheat mode pengguna di dalam Black Ops Cold War, yang disebut TAC (Treyarch Anti-Cheat)
- Black Ops Cold War tidak memiliki komponen mode kernel Ricochet yang ada pada Modern Warfare 2019 dan judul-judul setelahnya
- Perbedaan besar dengan Call of Duty terbaru adalah driver mode kernel, sementara sebagian besar kode anticheat berada di mode pengguna dan sangat mirip dengan TAC
- Pseudocode fungsi disusun ulang karena hasil dekompilasi aslinya rumit akibat obfuscation dan kode resolver
- Sebagian isi dihapus untuk menghindari promosi cheating atau bypass
Arxan dan perlindungan executable
- Arxan adalah alat obfuscation dan perlindungan yang digunakan di banyak game Call of Duty sejak Black Ops 3
- Dekripsi executable saat runtime
- Executable game dipack dan dienkripsi
- Arxan menyisipkan kode pada proses startup untuk unpack dan mendekripsi executable game yang sebenarnya
- Checksum executable
- Arxan terus memantau patch pada executable game
- Jika debugger atau ketidakcocokan checksum terdeteksi, proses akan dihentikan
- Obfuscation
jmp- Banyak
jmpdisisipkan di antara instruksi fungsi untuk mempersulit analisis statis - Jika ratusan lompatan disisipkan ke fungsi besar, analisis IDA bisa rusak dan memerlukan alat eksternal
- Banyak
- Obfuscation entry point
- Kode Arxan yang dilindungi akan unpack dan mengeksekusi entry point yang sebenarnya
- Bagian ini juga dapat berisi obfuscation
jmp, sehingga pelacakan alur menjadi sulit
Enkripsi pointer
- Pointer penting dienkripsi dan didekripsi tepat sebelum digunakan
- objek global game saat ini
- array entitas
- pointer objek dan sebagainya
- Skema enkripsi yang sama memiliki 16 variasi, dan alamat PEB saat ini menentukan skema mana yang dipakai
- Metode ini mengganggu pointer scan Cheat Engine
- Hanya nilai terenkripsi yang disimpan pada nilai global
- Nilai yang sudah didekripsi hanya ada di stack
- Untuk mendapatkan pointer yang sudah didekripsi, dibutuhkan alat pelacak instruksi dekripsi, atau hook pada titik saat game sudah mendekripsinya
Lookup API saat runtime dan deteksi hook
- TAC menggunakan fungsi lookup API saat runtime yang di-inline
- Menerima hash modul dan hash nama API
- Melakukan iterasi daftar modul yang dimuat dan meng-hash namanya
- Melakukan iterasi fungsi export modul dan membandingkannya dengan hash waktu kompilasi
- Identifikasi hash dilakukan menggunakan daftar modul yang dimuat pada proses game dan fungsi hashing milik game
- Menghitung hash nama modul dan nama export
- Mengambil base hash dan function hash secara manual dari hasil dekompilasi untuk mencocokkan API yang dipanggil
- Hash tidak selalu sama di setiap versi game
- Karena pointer fungsi disimpan di variabel global, identifikasi juga bisa dilakukan dengan membandingkan alamat virtual dengan fungsi export dari DLL yang dimuat
- Deteksi hook API TAC saat ini hanya memeriksa 7 pola
- stub tipe
push/movabs/xchg/ret push immlaluretcalljmp [rip+x]
- stub tipe
- TAC tidak memeriksa semua API penting, tetapi memeriksa hook pada API yang digunakannya sendiri
Debug register dan deteksi test signing driver
- Debug register dapat dipakai sebagai metode hook tanpa patch kode untuk melewati pemantauan patch
.textoleh Arxan - TAC memeriksa nilai DR0~DR3 dari konteks thread
- Jika ada nilai, callback dipanggil dengan pesan berbeda tergantung apakah itu berada di dalam proses saat ini
- Setelah itu alur berpindah ke fungsi terminasi
- DR0~DR3 adalah privileged register sehingga tidak bisa dibaca langsung lewat assembly biasa, dan harus diperoleh melalui kernel Windows atau pengiriman exception
- Mode test Windows memungkinkan driver mode kernel tanpa tanda tangan normal dijalankan
- TAC memeriksa apakah test signing aktif melalui
NtQuerySystemInformation- Deteksi ini sendiri tidak langsung menyebabkan ban, tetapi akun akan diberi flag
Cara terminasi proses
- TAC menghentikan proses dengan dua cara
- Cara pertama adalah membersihkan register lalu memanggil
NtTerminateProcessRCXdiatur ke-1- Jika
NtTerminateProcessterdeteksi di-hook, cara ini tidak digunakan
- Cara kedua adalah membersihkan register lalu melompat ke
0x0untuk membuat proses crash - Kedua cara ini menghapus register penting sehingga pemulihan sulit dilakukan
Deteksi console, visualisasi, dan overlay
- Cheat internal dapat menggunakan
AllocConsoleuntuk output log atau implementasi menu - TAC memeriksa window console atau
ConsoleHandledi PEB untuk mendeteksi alokasi console - Visualisasi internal biasanya digambar ke layar melalui hook API grafis
- Call of Duty modern menggunakan DirectX 12
- Target hook yang umum adalah
IDXGISwapChain::Present - Pada DirectX 12 dibutuhkan command queue, dan
ID3D12CommandQueue::ExecuteCommandListsadalah titik perolehan yang umum
- OBS Studio, Streamlabs OBS, Discord game overlay, dan Steam game overlay juga dapat bekerja di lokasi serupa
- Steam dan Discord melakukan rendering
- Keluarga OBS menangkap gambar render saat menggunakan game capture
- TAC saat ini tidak memindai fungsi DXGI present itu sendiri, melainkan memeriksa pointer present di vtable
Cheat eksternal dan deteksi berbasis window
- Cheat eksternal kemungkinan membuat overlapped window yang menutupi window game
- TAC melakukan iterasi atas semua window dan memeriksa style WS_EX_LAYERED lewat
GetWindowLongA - Lalu membandingkan apakah window itu bertumpang tindih dengan window game menggunakan
GetWindowRect- Jika rasio tumpang tindih
0.5atau lebih dan jumlah cache kurang dari 8,hwndtersebut disimpan - Ada nilai yang sesuai dengan contoh resolusi layar
1920x1080
- Jika rasio tumpang tindih
- Window yang di-cache diselidiki lebih lanjut di fungsi terpisah
- Memeriksa teks window dengan
GetWindowTextW - Memeriksa nama class dengan
GetClassNameA - Memeriksa display affinity dengan
GetWindowDisplayAffinity
- Memeriksa teks window dengan
- TAC juga memeriksa kasus saat
SetWindowDisplayAffinitydanWDA_EXCLUDEFROMCAPTUREdigunakan untuk menyembunyikan diri dari alat rekam atau screenshot - Informasi terkait window disimpan dalam buffer terenkripsi dan diunggah ke server
- teks window
- nama class
- posisi dan style window
- display affinity
- daftar modul dan nama exe dari proses window yang bertumpang tindih
- Proses dari window yang bertumpang tindih dibuka dengan
OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION), lalu nama modul dikumpulkan melaluiK32EnumProcessModulesdanK32GetModuleFileNameExW
Deteksi pemindai memori seperti Cheat Engine
- Cheat Engine mudah dideteksi karena perilaku memori virtual Windows
- Meski program mengalokasikan memori virtual lewat
VirtualAlloc, sebelum diakses memori itu belum diback oleh memori fisik - Game dapat mengalokasikan memori lalu tidak menggunakannya
- Jika tab memori di Cheat Engine atau Process Hacker memindai area tersebut, akses akan terjadi dan memori menjadi valid
- Honeypot ala TAC mendeteksi pemindai memori dengan memeriksa apakah alamat virtual itu benar-benar telah diakses menggunakan
K32QueryWorkingSetEx
Mengganggu signature scanning
- Peretas game sering menggunakan signature scanning agar cheat tetap berjalan otomatis setelah update
- Ide Treyarch adalah melindungi area di sekitar return address pada fungsi yang tidak dipanggil lagi dengan PAGE_NOACCESS
- Signature scanner membaca byte executable dari awal hingga akhir untuk mencari pola
- Karena memeriksa apakah setiap byte dapat diakses sangat lambat, proses bisa crash saat mencapai area
PAGE_NOACCESS - Ini bukan langkah pencegahan yang sempurna, tetapi dapat menyulitkan banyak analis
Anti-debugging
- Pemeriksaan anti-debug TAC sendiri sederhana, tetapi Arxan juga menyediakan teknik anti-debug tersendiri
- TAC melakukan iterasi atas semua thread dalam proses saat ini
- Menggunakan
CreateToolhelp32Snapshotdan thread snapshot - Memeriksa
DbgSsReserveddi TEB tiap thread untuk mendeteksi keberadaan DebugObject
- Menggunakan
- Ada juga teknik menulis ke memori tidak valid untuk memicu access violation
- Jika kode mencapai titik setelah exception, dianggap debugger telah menangani atau melewatinya
CheckRemoteDebuggerPresentjuga digunakanThreadHideFromDebuggermengirim exception ke proses, bukan ke debugger- Saat debugger mencoba menghentikan proses, exception
STATUS_BREAKPOINTdapat terjadi dan membuat proses berakhir - Di mode pengguna, flag ini tidak dapat di-unset
- Taktik ini dijalankan dalam TLS callback sebelum entry point executable
- Saat debugger mencoba menghentikan proses, exception
Pemantauan lalu lintas jaringan
- TAC tidak menyimpan semua koneksi aktif, hanya mencari kondisi tertentu
- Target deteksinya adalah metode membuat server jaringan lokal di dalam proses game
- Cheater menulis shellcode ke proses game
- Memulai server jaringan di dalam proses game
- Aplikasi eksternal bertukar informasi dengan server lokal ini
- TAC mengambil tabel TCP melalui
GetTcpTable2, lalu mendeteksi kondisi dengan membandingkan koneksi yang dibuat proses saat ini dengan hubungan port milik proses lain
Syscall stub kustom terenkripsi
- Banyak API export di
ntdllmenjalankan syscall secara internal - Dengan memakai syscall stub kustom, cheat mode pengguna bisa melewati hook pada fungsi
ntdll - Syscall dapat terlihat oleh instrumentation callback
- instrumentation callback dipanggil setelah syscall
- return address akan berada tepat setelah instruksi syscall
- TAC mempersulit analisis statis dengan syscall stub terenkripsi
- Stub dibangun setelah area besar yang dialokasikan di section
.textdiproteksi sebagai write/execute - Instruksi syscall dicari dari
NtReadFile, lalu posisinya diubah dengan memakai nilai waktu CPU sebagai unsur acak - Dari sisi pemantauan, syscall itu dapat tampak seolah berasal dari fungsi
ntdllacak- syscall yang sebenarnya mungkin bukan
NtReadFile - Jika indeks syscall pada
eaxtidak diperiksa, sulit mengetahui syscall apa yang dipanggil
- syscall yang sebenarnya mungkin bukan
- Ada contoh lokasi instruksi syscall yang berubah saat dieksekusi ulang
Deteksi bypass penyembunyian anti-debugger
- Untuk mengatur
ThreadHideFromDebugger,NtSetInformationThreadharus dipanggil - Cheater dapat meng-hook API ini agar mengembalikan sukses
- Dengan begitu anticheat percaya penyembunyian berhasil, padahal sebenarnya tidak terjadi apa-apa
- TAC memeriksa hasil pemanggilan dengan argumen yang sengaja salah untuk menangkap hook yang dibuat buruk
- Jika pemanggilan yang seharusnya gagal karena argumen panjang yang tidak cocok justru berhasil, maka terdeteksi
- Ada contoh nilai balik yang berbeda antara debugger dan lingkungan ScyllaHide
- Juga ditemukan hook yang selalu mengembalikan sukses untuk permintaan
ThreadHideFromDebuggerdengan handle palsu
Mencegah pembuatan thread jarak jauh
- TAC memasang exception handler yang memanggil
TerminateThreadpada thread saat ini ketika exceptionSTATUS_PRIVILEGED_INSTRUCTIONterjadi - DLL manual mapping membutuhkan cara untuk menjalankan shellcode di proses jarak jauh, dan metode umum adalah
CreateRemoteThread - TLS callback pada PE Windows dapat dipanggil sebelum thread entry point saat thread dibuat
- TAC memeriksa start address pada konteks thread baru
- Mengambil Win32 start address melalui
NtQueryInformationThread - Melakukan iterasi daftar modul yang dimuat untuk memeriksa apakah start address berada dalam rentang modul yang valid
- Mengambil Win32 start address melalui
- Jika start address tidak berada dalam rentang modul mana pun yang dimuat, TAC menyimpan deteksinya lalu memicu exception privileged instruction untuk menghentikan thread tersebut
Pemeriksaan lain dan kesimpulan
- Ada kode pemeriksaan yang belum diketahui fungsinya yang memeriksa apakah
AllocationGranularitydariNtQuerySystemInformationbernilai0x10000- Ini tampaknya menandai virtual machine atau versi Windows kustom
- Karena TAC sangat bergantung pada daftar modul yang terhubung, TAC memeriksa apakah
InMemoryOrderModuleListdi PEB adalah daftar kosong- Membuatnya kosong kemungkinan besar juga akan merusak proses itu sendiri
- Pada akhirnya, TAC adalah anticheat mode pengguna dengan kemampuan berikut
- lookup API saat runtime
- deteksi hook yang dibuat buruk
- deteksi overlay eksternal
- deteksi hook DirectX internal
- pemeriksaan hook pada API yang digunakan
- pemeriksaan debugger dan jejak debugging
- deteksi
AllocConsole - deteksi
CreateRemoteThread - syscall stub spoofed dan terenkripsi
- Arxan membantu TAC dengan obfuscation kuat, penghambat analisis statis, teknik yang merusak IDA Pro, pemantauan modifikasi
.text, serta fungsi anti-debug miliknya sendiri - Kode yang mirip TAC juga digunakan pada game Call of Duty modern
1 komentar
Komentar di Hacker News
Pada 2021, akun CS:GO Linux mengalami masalah pada indikator trust, turun ke kuning lalu merah, dan meski bukan pemblokiran resmi, pada praktiknya berfungsi seperti sanksi
Akibatnya, ia terus dipasangkan dengan cheater sehingga sulit mencari rekan tim
Belakangan diketahui bahwa pengguna Linux lain yang memakai GPU Radeon dan VRAM 16GB atau lebih juga mengalami masalah serupa, lalu dibuatlah issue GitHub untuk melacak masalahnya: https://github.com/ValveSoftware/csgo-osx-linux/issues/2630
Setelah diselidiki, tampaknya Valve menjatuhkan sanksi kepada pengguna Linux dengan konfigurasi hardware tertentu, terutama kartu Radeon dengan VRAM 16GB atau lebih yang saat itu tergolong cukup baru
Pada akhirnya masalah itu diperbaiki setelah seorang pengguna menghubungi gaben secara langsung: https://github.com/ValveSoftware/csgo-osx-linux/issues/2630#...
Ada dugaan bahwa ini mungkin karena Valve, yang sedang menyiapkan peluncuran Steam Deck, mulai memperhatikan pengalaman pengguna Linux
Tapi tetap menarik
Apakah itu disimpulkan dari kualitas permainan yang memburuk, atau memang ada cara untuk memastikannya
Setahu saya, indikator trust disembunyikan untuk mencegah penyalahgunaan
Cheating pada akhirnya adalah masalah manusia
Dengan pengaman dan heuristik yang dijelaskan dalam tulisan itu, 90% cheater terang-terangan bisa disaring, dan anti-cheat seperti itu pada dasarnya saya anggap sebagai arah yang baik
Namun anti-cheat harus bekerja secara konservatif, dan pada akhirnya pemain serta adminlah yang harus menyelesaikannya
Game multiplayer online harus berjalan di server yang dikelola manusia, dan harus ada admin selama sebagian besar waktu saat pemain terhubung
Lebih baik lagi jika adminnya dikenal oleh pemain, dan saat tidak ada admin, moderasi ringan seperti vote kick atau vote ban juga harus dimungkinkan
Tidak ada perbedaan mendasar antara mengusir cheater dan mengusir orang yang menyalahgunakan chat
Pada akhirnya, saya pikir satu-satunya bentuk server yang realistis untuk game multiplayer online adalah server privat atau server komunitas
Proses mengendalikan cheater dan pelaku penyalahgunaan tidak boleh berupa sistem laporan yang diterima lalu diproses secara asinkron; admin game harus cepat melakukan kick atau ban
Jika sebuah game hanya memungkinkan permainan online melalui server matchmaking milik publisher, dan penanganan cheater atau penyalahguna chat hanya berupa laporan lewat formulir web, jangan beli atau mainkan game itu; pilihlah dengan dompet Anda
Bisa saja ada organisasi terpisah yang mengawasi para wasit, tapi lebih baik main game saja
Apex Legends berjalan baik dengan sistem laporan dan anti-cheat yang kuat, dan di Rocket League moderasi yang sebagian besar otomatis juga bekerja efektif
Nomor telepon, verifikasi manual lewat foto, kewajiban bermain 10 jam sebelum mode kompetitif, rekomendasi dari pemain lain, atau di atas syarat-syarat semacam itu, game pass sekali bayar seharga 5 dolar juga bisa dipakai
Jika belum melihatnya, saya merekomendasikan presentasi anti-cheat AI dari Valve
Pekerjaannya cukup menarik, dan mereka mengklaim dapat menangkap 99% cheater
Tentu saja, metode cheating yang sangat halus tetap ada
Ia menjalani pertarungan hukum selama 2 tahun untuk membatalkan pemblokiran permanen palsu dari Activision, dan Activision kalah karena tidak bisa menunjukkan satu pun bukti cheating: https://antiblizzard.win/2025/01/18/my-two-year-fight-agains...
Saya sama sekali tidak pernah cheating, tetapi diblokir tanpa penjelasan; saya rutin memainkan tiga akun, dan dua akun lainnya tidak diblokir
Customer support terus hanya berkata, “setelah ditinjau, pemblokiran ini benar,” dan tidak memberi informasi apa pun agar saya bisa memperbaiki apa yang dianggap salah
Saya punya beberapa skin paling langka di game itu, sudah bermain ribuan jam sejak 2009, dan hanya bermain ARAM; tidak masuk akal kalau saya mempertaruhkan akun yang punya nilai emosional besar untuk cheating di mode paling kasual
Belum pernah ada pengalaman terkait game yang membuat saya se-stres itu, dan berkat seorang kenalan di industri yang memeriksa secara internal, pemblokiran itu dicabut tanpa alasan yang jelas
Saya masih bermain, tetapi hampir setiap kali saya teringat pemblokiran palsu itu, dan sepertinya League akan menjadi game multiplayer kompetitif terakhir yang saya luangkan waktu untuk mainkan
Ada juga perasaan tidak ingin bermain lagi karena takut hal seperti itu terjadi lagi
Di konsol, cheating hampir mustahil; butuh waktu sangat lama bagi saya hanya untuk mencapai Gold 1 biasa-biasa saja di ranked, dan saya tidak pernah mendapat peringatan atau laporan atas tindakan apa pun, tetapi saya diblokir permanen tanpa penjelasan
Alih-alih berjuang seperti penulis itu, saya memutuskan tidak akan pernah lagi mengeluarkan uang untuk produk Activision, dan menurut saya semua orang seharusnya begitu
Di AS mungkin lebih sulit, tetapi setahu saya di Inggris atau England, pihak tergugat harus membuktikan bahwa pernyataan itu benar
Untung saya hampir tidak bermain shooter multiplayer, dan saya benar-benar tidak ingin kehilangan library Steam saya yang sangat besar
Saya sangat penasaran dengan obfuscation jump
Semoga ada orang yang pernah melakukan lebih banyak reverse engineering bisa menjawab
Saya penasaran apakah unconditional jump memang begitu umum sampai sulit disaring dengan prasyarat tertentu; akhir fungsi punya return sehingga tampaknya mudah ditemukan, tetapi apakah mungkin menganalisis stack untuk mengetahui ke mana fungsi melakukan return lalu mencari call tepat sebelum return address
Saya belum banyak melakukan pemrograman assembly x86, jadi mungkin saja saya salah memahami cara kerjanya
Dengan framework PIN dari Intel juga bisa dilakukan analisis yang menarik
Tulisan yang mungkin membantu ada di sini: https://calwa.re/reversing/obfuscation/binary-deobfuscation-..., https://www.nccgroup.com/us/research-blog/a-look-at-some-rea...
Banyak fungsi tidak berakhir dengan
retSebagian jump palsu, dan sebagian jump masuk ke tengah instruksi
Decompiler tidak bisa menangani situasi ketika ada dua instruksi di lokasi yang sama
Misalnya, pada
jmp 0x1234, opcodejmpdilewati dan0x1234diasumsikan sebagai instruksi yang validPada sebagian branch, stack rusak, tetapi itu bisa saja disengaja untuk memicu exception
Jadi instruksi seperti
lea RAX, [rsp + 0x99999999999]bisa diganti menjadinopuntuk memperbaiki dekompilasi, tetapi exception yang disengaja juga bisa terlewatIDA tidak menangani hal semacam ini dengan baik, jadi saya memakai lisensi Binary Ninja, dan mudah membuat skrip untuk meng-inline fungsi bagi decompiler
Menurut saya IDA sulit menangani dengan benar situasi ketika jump saling memakai ulang potongan kode, karena potongan kode di antara jump hanya bisa menjadi milik satu fungsi
Sepertinya orang-orang lebih jarang memakai Binary Ninja karena pernah ada bug pada game Blizzard, tetapi itu sudah diperbaiki lewat laporan bug sekitar setahun lalu
Ini adalah obfuscation yang dimaksudkan untuk merepotkan pengguna tool jadi yang umum, terutama IDA Pro
Kebanyakan obfuscation tujuannya hanya membuat orang cukup kesal sampai pindah ke proyek lain
Tindakan mencabut fitur produk setelah penjualan harus dilarang oleh hukum, sekalipun ada dalam kontrak atau EULA
Pemblokiran tidak boleh merampas kepemilikan game itu sendiri, dan jika itu terjadi harus ada refund
Jika harus sampai putusan pengadilan agar refund terdorong, maka di atas biaya lisensi, biaya pengacara, dan biaya pengadilan harus ada ganti rugi tiga kali lipat
Misalnya, bentuk di mana seseorang diblokir dari Steam sehingga semua pembeliannya dibatalkan harus mustahil secara hukum
Meski login akun diblokir, item dan inventaris harus tetap bisa diperdagangkan, karena itu diperoleh pelanggan yang membayar dengan meluangkan waktu nyata
Jika ingin menegakkan aturan etika dalam game multiplayer, game itu tidak boleh menarik uang, atau pengguna berbayar harus memiliki hak terkait pemblokiran
Pemblokiran harus mengikuti prinsip proporsionalitas, melibatkan manusia, serta memiliki prosedur dan catatan sidang banding yang biayanya dibatasi pada harga lisensi dan hanya ditanggung jika kalah
Paling parah, akun diberi tanda public shaming pada game VAC
Orang bermain game multiplayer untuk bersenang-senang dan berinteraksi dengan orang lain, jadi jika cheating atau perilaku buruk lain berdampak pada orang lain, penggunaan layanan multiplayer memang harus diblokir
Kalau mengganggu masyarakat, membayar konsekuensinya adalah prinsip yang cukup universal
Saya pikir mereka boleh saja kehilangan uang sungguhan
Namun pemblokiran karena kesalahan adalah masalah lain
Dan yang diblokir itu bukankah game terkait yang tidak bisa lagi dimainkan, bukan seluruh akun Steam?
Pemain lain juga sudah membayar
Di COD sebenarnya tidak perlu repot-repot cheating
Bug-nya begitu banyak sampai game-nya melakukannya untuk Anda
Di ranked, game kadang memuat senjata api alih-alih pisau, dan hal itu mungkin terjadi karena ada
caseatauif-elseyang jelas salah dalam pemeriksaan loadout senjata ranked; kalau senjata yang terlihat di pemilih loadout tidak diizinkan, sepertinya default-nya menjadi XM4Ini hampir satu-satunya game yang saya tahu di mana versi ranked lebih rusak daripada versi casual
Saya penasaran orang-orang belajar hal seperti ini dari mana
Saya ingin belajar lebih banyak sampai setidaknya bisa memahami separuh tulisannya, tapi tidak tahu harus mulai dari mana
Bukunya sudah lama, tetapi sangat bagus, dan membuat kita mengikuti berbagai teknik serta latihan praktik
Tool modern memang agak berbeda dibanding saat itu, tetapi instruction set x86 dan assembly secara umum tidak banyak berubah
Salah satu hasil terbesar bagi saya adalah mengenal
crackmeItu adalah binary tantangan kecil yang dibuat untuk belajar reverse engineering, semacam gembok latihan dalam komunitas lockpicking
Seingat saya, buku itu menyertakan beberapa di CD-ROM, dan kalau dicari online juga banyak
Mencoba latihan seperti ini sendiri adalah jalan untuk belajar
Jangan langsung mencoba me-reverse engineer COD dari awal; harus membangunnya secara bertahap
Salam untuk orang-orang yang dulu membaca UnknownCheats, cs.rin.ru, dan sebagainya
Saya juga aktif di sana, dan terutama lebih tertarik pada anti-cheat di ruang pengguna Linux, khususnya bagaimana VAC bekerja
Saya pernah sedikit me-reverse engineer sebuah MMO populer berbasis Horde/Alliance, dan ternyata hampir mengikuti langkah-langkah yang sama, termasuk hash ekspor FNV32
Karena melihat trik yang sangat mirip, rasanya hampir seperti cara yang sama
Saya penasaran apakah itu dipacking dengan teknologi proteksi yang sama
Signature scanning benar-benar kuat
Itu juga bagian paling adiktif bagi saya dalam reverse engineering
Proses membuat daftar signature lalu menulis binding bahasa skrip agar bisa memanggil function pointer tersebut terasa menyenangkan
Ini juga menjadi dasar banyak platform mod pihak ketiga, karena mereka perlu menyediakan API bermakna bagi modder yang tidak diekspos oleh developer utama
Setahu saya beberapa plugin Source engine juga memakai cara ini saat diperlukan
Namun kebanyakan tampaknya memakai offset dari pointer virtual function table
Saya bertanya-tanya apakah mungkin atau masuk akal untuk mencegah cheating dengan menandatangani status game secara digital secara berkala, atau memasukkan semacam proof of work
Saya mulai merasa bahwa cheating adalah masalah yang terlalu sulit untuk dicegah
Saya sedang membuat FPS online kecil dan murah, dan alih-alih memakai software anti-cheat, saya mempertimbangkan untuk membiarkan pengguna saling percaya dan mencari cheater sendiri, atau menggunakan AI seperti Valve
Sepertinya saya akan membiarkan pemain mengelola dan menjalankan server sendiri
Bisa saja ada syarat seperti menghubungkan nomor ponsel, skor reputasi dari pemain lain, KTP atau metode autentikasi kuat lain, verifikasi manual lewat foto seperti aplikasi kencan, atau 10 jam bermain sebelum mode kompetitif
Menurut saya pemain hardcore akan bersedia menjalani prosedur seperti ini demi mengurangi cheater
Ada juga penyalahgunaan sosial dengan melaporkan pemain yang tidak disukai agar diblokir
Dalam sistem seperti itu, false positive akan jauh lebih banyak daripada anti-cheat mana pun