Selamat Datang di Kang Bahor.blogspot.com

Copy protection pada software

Di sebuah milis ada yang bertanya tentang software copy protection. Berikut ini adalah reply saya (yang terlanjur kepanjangan dan merasa sayang kalau tidak diblog)

> iya…kepikirannya sih maen di coding aja… or di satu file tertentu (.INI file) trus di umpetin di folder tertentu, tp pasti akan tetep ke detect klo usernya jago. Ada ga yah cara lainnya?

Cara-cara lain banyak. Namun sebelumnya, perlu dipahami keadaan/kenyataan tentang software copy protection.
SEMUA software copy protection bisa dijebol sehingga program bisa dikopi ke mesin lain dan dijalankan. Satu-satunya cara supaya tidak bisa dijebol adalah dengan membuat dua buah instance yang berbeda: full version dan partial version (physically crippled/incomplete). Tapi ini sebenarnya hanya metode distribusi, bukan murni termasuk mekanisme copy protection. Jika keberadaan instance yang full version sudah didapatkan, maka copy protection yang membuat software virtually crippled/incomplete/non-functional akan bisa dijebol.

Copy protection secara umum ada 2 jenis:
1. Semua informasi untuk mem-verifikasi kelegalan copy/instalasi dimiliki oleh copy/instalasi tersebut (tidak butuh akses ke hal-hal yang eksternal misalnya hardware dongle, customized/protected disc, validasi dari server external via Internet/dial-up). Penjebolan untuk jenis proteksi ini bisa cukup ‘memalukan’, yaitu program penjebol bisa menghasilkan/generate informasi yang seharusnya hanya bisa dihasilkan oleh produser aslinya. Contoh klasiknya adalah WinZip yang penjebolnya bisa menghasilkan pasangan user dan key yang dibutuhkan — istilah populernya: keygen (key generator).

2. Instalasi/copy butuh hal-hal eksternal. Proteksi ini bisa dijebol dengan 2 cara: a) Mengubah file program sehingga eksekusi untuk melakukan verifikasi akan selalu menghasilkan valid/benar. Ini biasanya disebut dengan: crack atau patch. b) Membuat simulasi/emulasi hal-hal yang eksternal tersebut. Misalnya untuk protected disc, dilakukan pencegatan terhadap system call yang mengakses disc/drive dan melakukan emulasi untuk memberikan hasil yang diharapkan oleh program. Untuk hardware dongle dan external server feedback, jika response yang diharapkan adalah sekedar ‘VALID’ atau ‘INVALID’, maka bisa dilakukan pencegatan juga. Namun jika yang diharapkan adalah kode-kode hasil enkripsi, akan sangat sulit untuk mengemulasinya atau melakukan cryptanalysis, terutama untuk external server feedback.

Ada satu lagi jenis proteksi yaitu hardware lock-in: copy/instalasi dibuat/kustomisasi secara khusus hanya bisa berjalan di konfigurasi komputer tersebut. Caranya: user mengirimkan konfigurasi komputernya (melalui program tertentu yang disediakan oleh produser) lalu produser melakukan kustomisasi khusus untuk user ini. Proteksi ini pada dasarnya adalah tipe yang kedua (bergantung hal eksternal) dan cara penjebolannya akan analogis dengan hardware dongle.

Para penjebol/cracker biasanya memiliki target yang level ‘kebanggaannya’ sebanding dengan kompleksitas penjebolan:
1. Time spoofing. Ini biasanya untuk instance yang full version namun dibatasi hanya bisa digunakan selama beberapa waktu (trial period). Penggunaan VMWare yang dipost rekan lain termasuk kategori ini walaupun bukan murni upaya penjebolan. Beberapa program yang kurang hati-hati bahkan bisa ditipu hanya dengan mengubah jam sistem secara sementara (pada awal loading saja, lalu dikembalikan ke jam sebenarnya). Penjebolan jenis ini pada umumnya tidak memiliki kompleksitas yang tinggi. Contoh yang aktual adalah penjebolan pada proteksi Windows Vista. Secara default, jika pada instalasi tidak dimasukkan key apapun, copy/instalasi akan masuk ke dalam evaluation/trial mode yang berlaku selama 30 hari. Periode 30 hari inipun sebenarnya bisa diperpanjang 3x lagi (total jadi 120 hari) menggunakan program yang disediakan Vista sendiri tanpa hack apapun. Penjebolan terakhir berhasil membuat Vista tertipu untuk selalu mengira baru digunakan 1 hari atau kurang.

2. Patching. Penjebolan biasanya hanya memerlukan pengubahan file pada sedikit tempat, yaitu pada saat verifikasi dilakukan. Untuk ini, penjebol hanya perlu mengamati tempat-tempat/waktu-waktu tertentu yang menjadi kandidat berlakunya verifikasi. Ini biasanya dilakukan dengan debugging tools tanpa harus melakukan reverse engineering yang terlalu banyak. Namun karena ada file yang diubah, para konsumen (pemakai hasil penjebolan) biasanya lebih memilih untuk memasukkan sendiri informasi/key yang dibutuhkan. Ini masuk kepada penjebolan berikutnya: key generator.

3. Key generator dan external factor emulation. Penjebolan ini kompleksitasnya paling tinggi. Supaya bisa menghasilkan informasi yang bisa diverifikasi secara normal (tanpa hack) oleh program, maka penjebol perlu melakukan reverse engineering untuk mengetahui bagaimana/algoritma program tersebut dalam melakukan verifikasi.

Dari paparan di atas, kesimpulannya adalah: semua proteksi bisa dijebol. Namun begitu, bukan berarti software tidak perlu diproteksi (pembahasan ini ruang lingkupnya adalah software komersial, bukan open source). Yang perlu dipikirkan dan diputuskan adalah: akan diproteksi sampai tahap mana dan terhadap siapa. Basis usernya sedikit atau banyak, fungsinya spesifik atau umum, kustomisasi bergantung pada keterlibatan produser atau minimal, ada trade secret atau tidak (copy protection berguna untuk deter/menurunkan niat untuk dikopi ke banyak orang sehingga kemungkinan jatuh ke tangan reverse engineer handal lebih kecil), dsb.

Jika ini adalah tugas kantor (software produksi perusahaan tempat kita bekerja), biasanya saya mulai dengan menjelaskan fakta bahwa tidak ada proteksi yang 100% aman dari penjebolan. Berikutnya, dianalisa penggunaan software tersebut sendiri dan dirembukkan sampai tahap apa kompleksitas proteksi yang dibutuhkan. Setelah diputuskan kemudian dibuat implementasi paling sederhana sebagai proof of concept (POC) pada tahap yang disetujui. Pengalaman saya, bersama dengan software protection, juga dibutuhkan verifikasi penggunaan jumlah user yang dilisensi (biasanya pada software yang server based) dan user registration (informasi nama, alamat, kontak, dll). POC bisa dilakukan secara sendiri-sendiri maupun terintegrasi. Pengalaman lagi, karena biasanya deadline mepet, POC sering naik statusnya jadi production code. Karena itu, dalam POC juga tidak bisa terlalu ‘culun’ proteksinya.

Sori jadi kepanjangan nulisnya. Mungkin bisa mulai dulu dari software yang akan diproteksi ini bagaimana akan digunakannya. Pelan-pelan dari situ bisa dianalisa kebutuhan proteksinya.

Kangbahor.blogspot.com@2008
|
This entry was posted on 03.04 and is filed under . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.