- Contoh pemulihan perilaku dongle port paralel yang diwajibkan oleh kompiler RPG II untuk akuntansi pada 1990-an
- Perangkat lunak asli berjalan di konsol DOS dalam lingkungan Windows 98 dan tidak dapat dijalankan tanpa dongle
- Setelah image disk dipindahkan ke emulator untuk dianalisis, ditemukan bahwa rutinitas proteksi yang sama disisipkan ke dalam file eksekusi seperti RPGC.EXE dan SEU.EXE
- Melalui analisis assembly, dipastikan bahwa rutinitas tersebut selalu mengembalikan nilai konstan tertentu (7606h), lalu verifikasi dongle dilewati dengan patch 4 byte
- Dengan ini, kompiler RPG II milik Software West dapat dijalankan tanpa dongle, sebuah hasil yang bermakna dari sisi pelestarian perangkat lunak klasik
Penemuan dongle dan perangkat lunak akuntansi kuno
- Perangkat lunak berbasis RPG untuk akuntansi yang telah digunakan selama 40 tahun masih dioperasikan di PC Windows 98
- RPG adalah bahasa untuk komputer kelas menengah seperti IBM System/3, System/32, dan AS/400, yang kemudian di-port ke MS-DOS
- Program tersebut saat dijalankan memerlukan dongle perangkat keras antipembajakan pada port paralel
- Pada dongle masih tampak samar tulisan “Stamford, CT” dan logo “Software Security Inc.”
- Kata “RUNTIME” juga tercetak di sana, dan maknanya terungkap dalam analisis berikutnya
Analisis image disk dan struktur kompiler RPG
- Image disk dari sistem Windows 98 diekstrak dan dijalankan di emulator
- Ditemukan dua versi kompiler RPG II (buatan Software West Inc.) serta seluruh kode sumber RPG dari perangkat lunak akuntansi
- Bentuknya berupa sistem menu yang terdiri dari beberapa modul RPG dan file batch DOS
- Kompiler itu sendiri melakukan verifikasi dongle, dan menyisipkan rutinitas proteksi yang sama ke file eksekusi hasil kompilasi
Rekayasa balik rutinitas komunikasi port paralel
- Reko disassembler digunakan untuk menganalisis SEU.EXE
- Awalnya instruksi
in/out tidak terlihat, tetapi kemudian ditemukan di segmen lain (0800h)
- Rutinitas tersebut membaca alamat port paralel dari BIOS data area, lalu mengirim dan menerima data melalui port LPT1
- Nilai hasil disimpan di register
BX, tidak ada input, dan selalu mengembalikan hasil yang sama
Inferensi nilai konstan dan patch
- Di bagian akhir rutinitas, dipastikan bahwa nilai
BH tetap 76h
- Hanya nilai
BL yang belum diketahui, lalu rentang 0~255 ditelusuri dengan brute force
- Kombinasi yang benar adalah
BL=06h, yaitu BX=7606h
- Empat byte pertama rutinitas diganti dengan
MOV BX,7606h dan RETF untuk melewati verifikasi dongle
- Setelah itu program langsung berjalan, dan modifikasi yang sama juga dapat diterapkan ke file eksekusi lain yang memiliki rutinitas identik
Hasil dan makna
- Kode proteksi antipembajakan yang sama ditemukan di semua komponen kompiler RPG II, sehingga bisa dimodifikasi sekaligus
- Struktur dongle hanya mengembalikan nilai konstan, sehingga dapat dinonaktifkan hanya dengan patch 4 byte
- Kompiler yang telah dimodifikasi bekerja normal tanpa dongle, dan setelah data pribadi dihapus, nantinya akan dipublikasikan sebagai arsip perangkat lunak bersejarah
- Karena hampir tidak ada materi tentang Software West Inc. yang tersisa secara online, diharapkan bisa ada kontak lanjutan dengan pembuatnya
1 komentar
Komentar Hacker News
Perlindungan perangkat lunak di masa awal benar-benar sangat sederhana
Dulu saya punya disk upgrade Windows 3.11, dan installer akan gagal jika versi sebelumnya belum terpasang
Solusinya ternyata cukup membuat file teks kosong lalu menyimpannya dengan nama
win.com. Installer memindai seluruh disk dan hanya mencari file ituFaktanya, disk upgrade tersebut sudah berisi paket instalasi lengkap. Masa itu memang sangat sederhana
Akhirnya saya meminjam versi 3.x dari teman dan memasangnya, dan saya merasa itu secara moral bisa dibenarkan karena tidak sesuai dengan isi iklannya
Foto produk terkait bisa dilihat di tautan eBay
Saya mengembangkan perangkat lunak untuk teknik sipil (mes100.com)
Sampai sekarang masih ada pengguna yang lebih menyukai dongle perangkat keras. Mereka merasa lebih tenang jika ada perangkat fisik yang bisa dipegang
Karena saya menjual lisensi permanen, kalau donglenya rusak itu jadi masalah karena suku cadang pengganti tidak ada. Saya tidak suka lisensi cloud, tetapi itu memungkinkan pendapatan berbasis langganan
Namun sehebat apa pun upayanya, versi crack tetap beredar di internet. Saya juga tidak punya kemampuan untuk menindak secara hukum, jadi perlindungan tetap penting
Ada juga yang sekadar menyukai otonomi karena tidak bergantung pada server pihak ketiga
Karena itu, model SaaS terasa seperti bencana bagi pengguna. Saya tidak suka pembajakan, tetapi saya juga tidak suka SaaS
Dulu crack jauh lebih sederhana
Hanya dengan mengubah JE atau JNE menjadi JMP saja perlindungan bisa dilewati
Intinya adalah mencari tahu di mana kode perlindungan berada dan bagaimana cara kerjanya
Pertama, pengembang sudah menangani kode itu jauh lebih lama daripada kita, jadi perlindungan yang terlalu rumit justru menyulitkan perbaikan bug
Kedua, peretas masing-masing cukup tahu beberapa trik saja, sementara pengembang harus menutup semuanya
Ketiga, fitur perlindungan itu pekerjaan yang tidak menyenangkan dan jarang mendapat pengakuan, jadi ada masalah besar dalam kurangnya motivasi
Saya masukkan string itu dan langsung aktif. Setelah itu saya membeli versi resminya
Itu adalah metode menandatangani disket dengan laser, tetapi bahkan remaja berusia belasan tahun yang bisa membaca assembly pun bisa menembusnya dengan mudah
Bahkan cukup dengan menggores disket memakai jarum pentul agar bisa disalin. Pada akhirnya ini adalah kasus pemasaran yang melampaui teknologi
Pada tahun 80-an saya menulis kode RPG II, dan pada tahun 90-an membantu migrasi ke lingkungan emulasi S/36
Kami memakai produk dari perusahaan bernama California Software Products, dan hasilnya cukup baik sehingga perusahaan itu bertahan sampai pendirinya pensiun
Menanggapi komentar “bukankah proteksi salin ini terlalu sederhana?”, saya rasa pada masa itu itu adalah rekayasa pada tingkat yang memadai
Dengan emulator dan decompiler memang bisa dipecahkan dalam beberapa hari, tetapi pada masa itu alat seperti itu bahkan belum ada
Sekitar 90% perangkat lunak pada masa itu memang sesederhana itu. Bukan karena ada sesuatu yang rumit lalu terlewat
Waktu kecil saya pernah me-crack game Ultima
Soalnya repot kalau harus terus memasukkan floppy disk setiap kali
Kodenya mendekripsi dirinya sendiri, lalu membaca alamat awal dari sektor tertentu di disk
Sektor itu tidak bisa disalin dengan alat penyalin biasa, tetapi saya menyelesaikan masalahnya dengan memodifikasi header executable
Pada awal 90-an, saya memelihara sistem pembaruan lisensi buatan kantor pusat sebuah waralaba
Setiap bulan harus diperbarui lewat floppy disk, dan kantor pusat kadang memblokir cabang yang tidak mereka sukai secara sepihak
Akhirnya beberapa cabang bergabung dan mengajukan gugatan, lalu saya membuat generator lisensi berbasis DOS agar tiap cabang bisa menerima kode lewat telepon dan memperbarui lisensinya
Setelah gugatan selesai, saya menyebarkan patch yang menghapus pengecekan lisensi sepenuhnya. Suatu saat saya ingin mencoba menjalankannya lagi di DOSBox
Menarik melihat tulisan bahwa Windows 95 masih dipakai di pekerjaan nyata
Berbeda dengan tren AI yang mencolok, perubahan teknologi berjalan lambat di bagian industri yang membosankan
Bahkan masih ada sistem yang berjalan di atas emulator PDP-11
Fakta bahwa perangkat lunak dan perangkat keras ini masih dipakai di sebagian perusahaan sangat mengesankan
Karena itu, mempublikasikan versi crack bisa menimbulkan risiko hukum
Perusahaan bersedia membayar mahal demi mempertahankan sistem lama, sehingga vendor lock-in seperti ini terus berlanjut
Jika paten atau hak kekayaan intelektualnya masih berlaku, itu harus dipastikan sebelum dipublikasikan
Hanya berupa dongle perangkat keras yang mengembalikan angka tetap, ini benar-benar metode perlindungan yang sangat sederhana
Tetapi pada masa itu, itu sudah cukup. Bahkan perangkat lunak perusahaan saat ini pun sering hanya memakai license key semacam itu
Pada akhirnya, ini adalah versi tahun 80-an dari konsep “kalau ada sinyal bahwa tagihannya ada, orang akan membayar”