1 poin oleh GN⁺ 2026-02-02 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2026-02-02
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 itu
    Faktanya, disk upgrade tersebut sudah berisi paket instalasi lengkap. Masa itu memang sangat sederhana

    • Waktu kecil, ayah saya membeli versi upgrade Windows 3.1 yang tertulis “bisa di-upgrade dari versi 3.0 ke bawah”, tetapi kenyataannya hanya mengenali 3.x
      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

    • Salah satu alasan orang menyukai dongle seperti ini adalah karena adanya lingkungan air-gap. Di tempat yang menangani data desain sensitif seperti militer atau nuklir, koneksi ke jaringan eksternal tidak dimungkinkan
      Ada juga yang sekadar menyukai otonomi karena tidak bergantung pada server pihak ketiga
    • Ada yang bilang ini industri dengan regulasi yang berubah lambat sehingga insentif upgrade rendah, tetapi kalau begitu muncul pertanyaan kenapa pengguna harus terus membayar
    • Ayah saya dulu memakai dongle seperti ini saat menggunakan program teknik sipil bernama ‘Cosmos’. Kadang perangkatnya tidak terdeteksi, dan saya masih ingat betapa menjengkelkannya itu
    • Dari sudut pandang pengguna, sikap “kalau belum rusak ya tidak perlu diganti” itu masuk akal
      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

    • Ada beberapa alasan kenapa perlindungan sesederhana ini muncul
      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
    • Dulu saya pernah membuka perangkat lunak demo dengan debugger, dan di memory dump, string kode aktivasi-nya ada begitu saja
      Saya masukkan string itu dan langsung aktif. Setelah itu saya membeli versi resminya
    • Saya pernah membobol ProLok “laser protection” milik dBASE III
      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

    • Yang penting adalah siapa target pelanggannya. Jika tujuannya hanya mencegah perusahaan biasa di industri non-teknis, maka tidak perlu menghalangi reverse engineer profesional
    • Decompiler tidak bisa menganalisis kode perlindungannya
      Sekitar 90% perangkat lunak pada masa itu memang sesederhana itu. Bukan karena ada sesuatu yang rumit lalu terlewat
    • Sekitar tahun 2000 saya pernah melakukan pekerjaan peretasan serupa di sebuah perusahaan telekomunikasi kecil di Buenos Aires. Sebagian besar tingkat kesulitannya seperti yang dijelaskan OP
    • Perusahaan TI kami juga melindungi file yang mencurigakan dengan cara bit shift lalu memberikan magic number. Tidak perlu rumit
  • 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

    • Sampai tahun 2014 saya masih melihat perusahaan yang menjalankan Windows 95 secara virtual. Itu perangkat lunak medis lama, dan stabilnya luar biasa
    • Dari screenshot, programnya tampak seperti untuk DOS. Mungkin Windows hanya digunakan untuk berbagi file
    • Win95 baru berusia 30 tahun, dan pada beberapa perangkat keras modern pun masih bisa berjalan
      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”