Proteksi Hasil Compile Aplikasi Anda Menggunakan ConfuserEx
Apa itu ConfuserEx?
ConfuserEx adalah tool open-source yang berfungsi untuk melindungi hasil compile aplikasi yang dikembangkan di atas platform .NET (C#, VB.NET, F# dan bahasa .NET lainnya). ConfuserEx dianggap sebagai salah satu tool obfuscators terbaik yang tersedia gratis untuk platform .NET.
Hasil compile (assembly) yang sudah diproteksi menggunakan ConfuserEx akan menyulitkan orang lain untuk membaca kembali kodenya walaupun sudah di decompile
menggunakan tool decompiler sekelas JetBrains dotPeek.
.NET Framework yang disupport
Walaupun pengembangan ConfuserEx untuk saat ini sudah dihentikan. Untuk versi terakhirnya sudah mendukung .NET Framework sampai versi 4.6.x. Saya sendiri biasanya jika membuat aplikasi desktop tetap menggunakan .NET Framework versi 4.0 dengan pertimbangan agar aplikasinya tetap bisa di jalankan di Windows XP, sehingga tool ConfuserEx ini masih tetap bisa saya gunakan.
JetBrains dotPeek
JetBrains dotPeek adalah tool decompiler gratis untuk aplikasi yang dikembangkan di atas platform .NET (C#, VB.NET, F# dan bahasa .NET lainnya).
Di postingan ini saya akan menggunakan tool JetBrains dotPeek untuk keperluan uji coba decompiler hasil compile dari aplikasi .NET Framework.
Hasil Compile Aplikasi .NET Framework
Perlu diketahui bawah hasil compile dari aplikasi .NET masih dalam bentuk IL jadi belum dalam bentuk native code (bahasa mesin), sehingga dibutuhkan .NET Framework agar hasil compile ini bisa berjalan.
Ada banyak tool yang bisa dengan sempurna melakukan proses decompiler hasil compile aplikasi .NET Framework, salah satunya adalah tool JetBrains dotPeek.
Sebagai contoh sudah saya buatkan aplikasi yang akan kita coba decompile hasil compilenya menggunakan JetBrains dotPeek. Aplikasi ini bisa Anda download di sini. Ini adalah aplikasi CRUD sederhana yang sudah menerapkan konsep Repository Pattern dan MVC Pattern. Untuk database saya menggunakan MySQL.
Yuk, kita liat dulu tampilan aplikasinya
Struktur project sudah menerapkan konsep MVC Pattern
Model
adalah layer yang bertugas untuk berkomunikasi dengan database secara langsung. Salah satu class yang ada di layer ini adalah class DbContext.cs
. Class DbContext.cs
ini bertanggung jawab untuk berinteraksi secara langsung dengan database, seperti membuat koneksi, menjalankan perintah sql seperti insert, update, delete dan select atau mengeksekusi objek database seperti store procedure dan function. Sehingga di class inilah biasanya kita menuliskan beberapa informasi rahasia
seperti username
dan password
yang digunakan untuk melakukan koneksi ke database seperti MySQL.
Berikutnya kita akan melihat kode yang ada di class Repository. Class Repository adalah class yang berisi kode-kode untuk menjalankan operasi CRUD. Sebagai contoh kita akan melihat isi dari class ProductRepository.cs.
Setelah melihat kode di atas, sekarang akan kita lakukan proses build/compile projectnya
kemudian akan kita lakukan proses decompile menggunakan tool decompiler JetBrains dotPeek.
Pertama kita cek dulu hasil decompile class DbContext.cs
nya.
Mengerikan bukan hasil decompilenya, sama persis dengan kode aslinya
Sekarang kita cek juga hasil decompile class ProductRepositorynya, dan hasilnya pun sama persis dengan kode aslinya.
Nah sampai di sini sudah pahamkan, kenapa kita harus mengeluarkan usaha lebih untuk mengamankan hasil compile aplikasi kita.
ConfuserEx In Action
Ok berikutnya kita akan menambahkan proteksi hasil compile aplikasi kita menggunakan tool ConfuserEx, jadi silahkan Anda download terlebih dulu aplikasinya di sini. Kemudian Anda ekstrak, misal ke folder C:\ConfuserEx_bin
.
Ada 2 cara untuk menggunakan ConfuserEx, yaitu:
- Menggunakan GUI
- Menggunakan CLI (Command-line Interface)
Di postingan ini saya akan menggunakan cara yang kedua yaitu menggunakan CLI (Command-line Interface). Berikut langkah-langkahnya:
-
Tambahkan sebuah file dengan ekstensi
.crproj
(ConfuserEx project), untuk nama filenya kita samakan dengan nama projectnya, setelah itu simpan di folder aplikasi (satu folder dengan file project).Kemudian lengkapi scriptnya seperti berikut:
Jika file yang akan diproteksi lebih dari satu, Anda bisa tambahkan setelah baris perintah
<module path=... />
. Contoh: -
Aktifkan
command prompt
, kemudian Anda pindah ke folder project Anda.Setelah itu ketik perintah:
C:\ConfuserEx_bin\Confuser.CLI.exe NorthwindApp.crproj
tunggu beberapa saat sampai proses ConfuserExnya selesai
bisa kita lihat pada gambar output di atas, untuk file
NorthwindApp.exe
yang sudah diproteksi ada di folderConfused
Nah sekarang kita coba lagi untuk melakukan proses decompile ulang terhadap file hasil compile yang sudah kita tambahkan proteksi ConfuserExnya menggunakan tool decompiler yang sama yaitu JetBrains dotPeek.
Dan ini adalah hasil decompile untuk class
DbContext.cs
. Sudah tidak terlihat lagi kanusername
danpassword
untuk konek ke databasebegitu juga dengan hasil decompile untuk class ProductRepositorynya sudah terproteksi dengan baik.
Build Events
Sebenarnya pembahasan tentang ConfuserEx ini sudah selesai, tapi berhubungan perintah ConfuserEx CLI
di atas masih dijalankan secara manual via command prompt
tentu akan merepotkan sekali jika harus dijalankan secara berulang setiap selesai melakukan proses build/compile. Trus apa solusinya agar perintah ConfuserEx CLI
di atas bisa dijalankan secara otomatis? Salah satu solusinya adalah dengan memanfaatkan fasilitas Build Events yang sudah tersedia di Visual Studio .NET. Dengan fasilitas Build Events kita bisa menuliskan perintah command prompt (shell)
termasuk menjalankan perintah ConfuserEx CLI
.
Nah berikut script Build Events yang harus kita buat untuk menjalankan perintah ConfuserEx CLI
di atas secara otomatis setiap kali kita melakukan proses build.
Untuk mengaktifkan Build Events, klik kanan nama project -> Properties -> tab Build Events. Kemudian copas script di atas di bagian Post-build Event Command Line
.
Setelah itu lakukan proses build, dan secara otomatis perintah ConfuserEx CLI akan dijalankan.
Selamat mencoba
Referensi:
Comments