Installer Horse Museum bukan malware. Deteksi ini adalah false positive akibat teknik bypass DRM yang agresif. Untuk bermain di server pribadi tanpa memodifikasi file eksekusi game secara permanen, mereka membangun mesin custom yang meniru perilaku berbahaya. Alat yang digunakan: UniExtract, Ghidra, Procmoc, Wireshark. Semua ini memakan waktu sekitar 4 jam untuk saya temukan. Bahasa Inggris bukan bahasa pertama saya dan saya tidak ingin menjadikannya begitu. Kesalahan apa pun dibuat murni dari kebencian dan penghinaan terhadap bahasa ini.

Verifikasi Hash

Hash

Hal pertama yang saya lakukan adalah menghitung hash SHA-256 file tersebut dan mencarinya di VirusTotal. Jika vendor keamanan sudah menandainya, kita akan melihat persis signature mana yang memicu alarm.

Get-FileHash -Algorithm SHA256
  • setup.exe: 33F12A3D861B8E6857E854C35FFB2E219DCE95A6E5FC2230D260B58A74FDFBB9
  • config: 3E9EA7959C73F059742C9BDB552D9310BC629E548F8AC4883DB112B3832CE542
  • setup.exe dan config tidak terdeteksi.
  • Ekstraksi installer
  • Memasukkan setup.exe langsung ke Ghidra kemungkinan hanya membuang waktu Anda. Karena setup.exe adalah installer (sebuah "dropper" atau "wrapper" jika Anda suka), Ghidra hanya akan decompile perangkat lunak instalasi generik (seperti Inno Setup atau NSIS), bukan mesin game sebenarnya atau payload tersembunyi. Skor deteksi 0/60 pada wrapper hanya berarti cangkang luar belum difingerprint oleh vendor.
  • UniExtract
  • Dengan UniExtract saya mengekstrak setup.exe untuk membuktikan poin saya. File-file tersebut adalah komponen standar dari Nullsoft Scriptable Install System (NSIS):
  • modern-wizard.bmp: file gambar standar yang digunakan untuk wizard UI grafis installer.
  • nsDialogs.dll: plugin NSIS yang digunakan untuk membuat antarmuka dialog kustom.
  • System.dll: plugin NSIS standar yang digunakan untuk mengeksekusi perintah tingkat sistem selama instalasi.
  • setup.exe adalah "stub" ringan yang tidak berisi file game apa pun di dalamnya. Sebaliknya, program ini dirancang untuk menghubungi server jarak jauh dan mengunduh payload berbahaya (wow kata besar yang menakutkan) langsung ke memori atau folder tersembunyi hanya ketika eksekusi sedang berjalan.
  • Analisis jaringan
  • Karena saya cukup bodoh untuk mengunduhnya di komputer utama saya, saya mengambil Wireshark berikutnya. ANY.RUN akan lebih baik, karena menyediakan lingkungan terisolasi yang menjalankan file dengan aman untuk Anda, sementara Wireshark hanya mendengarkan lalu lintas jaringan di mesin tempat ia berjalan.
  • Serius sekarang, jangan unduh sembarang goop dari internet kecuali Anda 100% yakin tidak ada yang berbahaya di dalamnya. Saya hanya kebetulan beruntung. Ambil VM atau komputer teman Anda agar tetap aman. Ayo lawan saya, si virus kuda mencurigakan ini.
  • Saya membuka Wireshark dan mulai mengunduh game. Setelah instalasi selesai, saya menghentikan tangkapan Wireshark dan menerapkan filter tcp.flags.syn == 1 && tcp.flags.ack == 0 untuk melihat daftar mentah alamat IP eksternal yang benar-benar dihubungi installer selama fase unpacking.
  • Jika kita melihat bilah status di kanan bawah, terlihat 936.308 paket ditangkap selama sesi ini. Windows (VM) normal yang menganggur atau hanya menjalankan installer lokal mungkin menghasilkan beberapa ribu paket latar belakang. Hampir satu juta paket berarti installer berkomunikasi agresif dengan internet dan mengunduh payload besar.
  • Setelah membuka menu Endpoints, saya menemukan 7 IP address yang membawa payload besar. Jika kita jumlahkan Transmitted byte dari 6 IP eksternal teratas tersebut (baris atas adalah IP Anda), hasilnya tepat 956 MB. Semuanya bekerja sama mengirimkan payload kepada Anda.
  • Jika kita melihat kolom Info untuk paket TLSv1.2, khususnya yang berlabel Client Hello. Di dalam tanda kurung tersebut ada SNI, yang berbunyi: SNI=gfs204n315.userstorage.mega.co.nz
  • Installer tidak menembus Tor, juga tidak terhubung ke botnet Rusia atau swarm P2P. Ia hanya membangun koneksi HTTPS terenkripsi (Port 443) ke MEGA.nz. Saat Anda mengunduh file 1GB besar dari MEGA, jaringan mereka memecah unduhan ke beberapa server Content Delivery Network (CDN) sekaligus untuk memaksimalkan kecepatan unduh. Ini menjelaskan dengan tepat enam IP address berbeda yang mentransfer potongan data besar dalam daftar Endpoints.
  • IP address 193.109.100.204 yang ditandai komunitas (?) bukan node Tor berbahaya. Itu hanya server Content Delivery Network (CDN) acak. Saat Anda memasang game, setup.exe bertindak sebagai pengelola unduhan tersembunyi, menarik file server pribadi langsung dari folder MEGA. Karena MEGA memecah unduhan ke beberapa server untuk memaksimalkan kecepatan, pemindai otomatis melihat payload terenkripsi besar datang dari banyak IP yang berganti-ganti dan mengasumsikan yang terburuk.
  • File game
  • Saya punya versi 2014 yang sudah diunduh, saya pakai itu sebagai contoh berikutnya. Eksekusi inti dan pustaka audio fmod.dll sepenuhnya sah; keberadaan dua file spesifik di folder ini mengungkap persis cara server pribadi ini bekerja.
  • winmm.dll adalah pustaka multimedia Windows standar yang seharusnya berada jauh di dalam folder C:\Windows\System32. Dengan menempatkan versi kustom kecil 50 KB tepat di sebelah eksekusi game, pengembang melakukan DLL hijack klasik.
  • Saat PXStudioRuntimeMMO.exe boot, game otomatis meminta pustaka winmm ke Windows. Karena Windows memprioritaskan file lokal lebih dulu, game tanpa sadar memuat file palsu 50 KB ini alih-alih file sistem yang aman. Setelah winmm.dll palsu ini termuat, hampir pasti ia memaksa game menyuntikkan patch.dll kustom langsung ke memori aktifnya.
  • patch.dll adalah bagian yang menarik. Ia menimpa fungsi jaringan game secara real-time, mengalihkan upaya login Anda dari server resmi dan mengarahkannya ke backend server pribadi. Ini menjelaskan sepenuhnya rumor tentang memory injection. Pengembang menggunakan teknik malware untuk membajak client legacy secara dinamis, melewati DRM dan pemeriksaan server asli tanpa harus mengubah file .exe berhak cipta secara permanen.
  • Memory injection
  • Saya memasukkan eksekusi game asli (PXStudioRuntimeMMO.exe) dan patch.dll ke Ghidra.
  • patch.dll
  • Saya melacak eksekusinya dari entry point awal. Saya menemukan mesin hooking yang aktif menggunakan Windows API (VirtualProtect) untuk membuka kunci memori dan menulis instruksi 0xE9 (JMP) untuk mengalihkan kode. Dengan mengikuti cross-reference fungsi ke belakang, saya menemukan fungsi setup utama yang mengirimkan offset target heksadesimal spesifik (seperti 0x1D690) ke mesin ini. Saya juga menganalisis kode kustom yang menjadi tujuan detour game, menemukan parser memori kustom yang menghitung checksum FNV-1a untuk header file 60-byte.
  • PXStudioRuntimeMMO.exe
  • Saya memuat client game legacy berikutnya, menambahkan alamat memori basis standar 0x00400000 ke offset 0x1D690, dan melompat ke lokasi persis tersebut (0x0041D690). Dengan kembali ke file patch.dll dan melompat ke tujuan detour itu, kita bisa melihat kode kustom persis yang ditulis pengembang server pribadi untuk melewati kriptografi game asli.
  • Di bagian paling akhir pada baris 26, terlihat (*DAT_101068cc)(param_3). Ini adalah function pointer. Dalam pengembangan hooking, ini disebut "trampoline." Setelah DLL selesai melakukan matematika 60-byte kustomnya, kemungkinan ia menggunakan pointer ini untuk melompat kembali ke kode asli game agar game bisa melanjutkan booting normal tanpa crash.
  • Apa arti ini bagi kita?
  • Di MMO legacy, paket jaringan atau header arsip game (seperti file .cch) sering dibaca dalam struktur berukuran tetap. Kode ini dengan kuat menunjukkan bahwa file .hors yang diunduh dari MEGA berisi header atau potongan data yang panjangnya tepat 60 byte. Karena game asli menggunakan algoritma XOR (di 0x0041D690) untuk membaca file Star Stable resmi, game akan crash jika mencoba membaca file .hors yang dimodifikasi. Detour ini menyela data, mengurai potongan 60-byte kustom menggunakan FUN_10002a20, dan menyuplai hasilnya kembali ke game.
  • Paku terakhir di peti mati
  • Lihat baris 46 dan 51. Pengembang menghitung sidik jari digital. Di baris 46, variabel uVar4 diberi benih nilai heksadesimal tepat 0x811c9dc5. Di baris 51, perulangan mengambil satu byte dari file, melakukan XOR terhadap benih (^), lalu mengalikannya dengan 0x1000193. Kombinasi angka dan operasi khusus ini adalah signature tak terbantahkan dari hash FNV-1a 32-bit. FNV-1a adalah algoritma hashing standar, sangat cepat, yang dipakai untuk memverifikasi integritas file, bukan untuk mengenkripsi rahasia.
  • Kesimpulan
  • Pengembang sepenuhnya menebas DRM milik Star Stable dan menggantinya dengan checksum FNV-1a sederhana. Pengembang server pribadi mengambil data game standar dan menempelkan header 60-byte kustom tepat di awal file. Saat client legacy yang dibajak mencoba memuat file .hors, DLL kustom ini menyela, mengunci utas, dan menghitung hash FNV-1a file tersebut. Jika hash cocok dengan header, game menerima file. Ini mencegah pemain memodifikasi file server pribadi untuk curang, dan karena client Star Stable resmi tidak tahu cara membaca header FNV-1a 60-byte itu, ia langsung crash jika pengembang resmi mencoba memeriksa file .hors menggunakan alat internal mereka.
  • Karena tidak ada enkripsi sungguhan, mengekstrak aset jadi trivial. File .hors hampir pasti hanya arsip standar (seperti file .zip atau .cch) dengan 60 byte data sampah ditempelkan di awal.