Proteksi Hasil Compile Aplikasi Anda Menggunakan ConfuserEx

Posted by Kamarudin • 4 minute read • Comments

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.csnya.

Mengerikan bukan hasil decompilenya, sama persis dengan kode aslinya :scream: :grin:

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:

  1. Menggunakan GUI
  2. Menggunakan CLI (Command-line Interface)

Di postingan ini saya akan menggunakan cara yang kedua yaitu menggunakan CLI (Command-line Interface). Berikut langkah-langkahnya:

  1. 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:

  2. 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 folder Confused

    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 kan username dan password untuk konek ke database :thumbsup:

    begitu 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.

rem set lokasi folder deploy
set DeployDir="$(SolutionDir)..\deploy"
if not exist %DeployDir% mkdir %DeployDir%

rem copy hasil build ke folder deploy
copy /Y "$(TargetDir)$(TargetFileName).config" %DeployDir%
copy /Y "$(TargetDir)*.dll" %DeployDir%

rem jalankan ConfuserEx CLI
set ConfuserExDir="C:\ConfuserEx_bin"
%ConfuserExDir%\Confuser.CLI.exe "$(ProjectDir)$(ProjectName).crproj"

rem hapus file build yang tidak diperlukan
del /s /q %DeployDir%\*.vshost.*
del /s /q %DeployDir%\*.xml
del /s /q %DeployDir%\*.pdb

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 :blush:

Referensi:

Comments