Obfuscate Aplikasi yang Dibuat Menggunakan Dotfuscator (Versi Visaul Studio 2022)
ringkasan
Aplikasi berdasarkan seri kerangka kerja .NET dibuat dalam apa yang disebut bahasa perantara umum, sehingga dapat dibaca dalam bentuk yang dekat dengan kode sumber asli dengan menggunakan alat pembongkaran dan sejenisnya. Bagian ini menjelaskan cara mengaburkan kelas dan nama metode ke dalam format yang mudah dibaca menggunakan dotfuscator versi gratis, alat obfuscator yang disertakan dengan Visual Studio.
Ini dijelaskan menggunakan Visual Studio 2022, tetapi juga dapat digunakan dalam versi Dotfuscator lainnya.
Lingkungan Operasi
- Visual Studio
-
- Studio Visual 2022
Tentang Dotfuscator
Dotfuscator adalah alat pengaburan yang membuat kode sumber sulit dibaca ketika dibongkar untuk aplikasi yang ditulis dengan keluarga kerangka kerja .NET (selanjutnya disebut sebagai .NET). Dotfuscator hadir dengan Visual Studio secara gratis dan dengan biaya tertentu.
Versi gratis tidak tersedia kecuali banyak fiturnya terbatas atau Visual Studio dimulai, tetapi siapa pun dapat menggunakannya selama mereka menginstal Visual Studio. Versi berbayar memiliki banyak fitur pengaburan yang kuat yang tidak ditemukan dalam versi gratis, tetapi ditawarkan dengan harga yang sulit bagi masyarakat umum untuk membeli.
Dotfuscator memiliki fitur, harga, dan edisi yang berbeda tergantung pada versinya, jadi silakan merujuk ke beranda berikut untuk detailnya.
Tentang Pembongkaran
Saya sebutkan sebelumnya bahwa aplikasi yang ditulis dalam .NET dapat dengan mudah membongkar dan membaca kode sumber asli, tetapi yang sebenarnya terjadi adalah jika Anda membongkar file .exe (atau file .dll) seperti yang ditunjukkan pada gambar berikut, Anda hampir dapat mereproduksi kode sumber asli, seperti namespace, nama kelas, nama metode, dll.
Jenis program yang harus dikaburkan
Ini terutama berlaku untuk program yang didistribusikan dan dijalankan ke pengguna yang tidak ditentukan. Misalnya, aplikasi desktop. Sebaliknya, aplikasi Web yang mengalami kesulitan mengakses file program secara langsung kurang penting untuk dikaburkan.
Kali ini, kita sedang melihat sebuah proyek di WPF, sebuah aplikasi desktop.
Memasang Dotfuscator
Aplikasi ini dilengkapi dengan Visual Studio 2022 tetapi tidak termasuk dalam instalasi standar (di beberapa Visual Studios sebelumnya dapat diinstal dari awal).
Untuk menambahkan Dotfuscator: Mulai Visaul Studio dan pilih Dapatkan Alat dan Fitur dari Alat.
Pilih "Komponen Individual" dari tab di atas, centang "Perlindungan PreEmptive - Dotfuscator" di grup "Code Tools", dan klik tombol Install di sudut kanan bawah. Saat melakukannya, tutup konsol Visual Studio.
Prosedur pengaburan
Menjelaskan langkah-langkah untuk membuat nama-nama ini membingungkan dan dikaburkan.
Buat aplikasi di Visual Studio, buat file .exe, lalu klik file . Buat file dll. Sejauh ini, ini sama dengan membuat aplikasi biasa. Aplikasi yang Anda buat harus ditujukan untuk yang dibuat di build Rilis. (Karena Anda biasanya tidak memublikasikan di Debug.)
Setelah Anda membuat .exe atau .dll, pilih Alat dari menu Visual Studio, lalu pilih Perlindungan PreEmptive - Komunitas Dotfuscator.
Layar pendaftaran ditampilkan, tetapi tidak diperlukan, jadi jika tidak perlu, klik tombol batal apa adanya.
Tetap dan klik baik tombol.
Dotfuscator dimulai. Aplikasi ini bekerja sendiri, sehingga Anda dapat mengaburkan file yang tidak relevan dengan proyek yang saat ini terbuka. (Dalam kasus versi gratis dari aplikasi itu sendiri, diasumsikan bahwa Visual Studio dimulai.) )
Pada artikel ini, saya akan mengaburkan proyek aplikasi WPF .NET 6.0 yang dibangun dengan default sebagai sampel.
Pilih "Input" dari daftar di sebelah kiri dan klik tombol "+".
Pilih file program yang ingin Anda usangkan. Aplikasi yang ditulis dalam .NET Framework sering kali mengaburkan .exe, tetapi di .NET dan .NET Core, program sering kali merupakan entitas .dll. Aplikasi NET WPF juga akan memiliki entitas .dll, jadi pilihlah .dll.
Ini akan ditambahkan ke daftar. Jika terdiri dari beberapa DLL, tambahkan lebih dari satu.
Setelah menambahkan file target, klik tombol "Build" dari bilah alat.
Anda akan ditanya di mana menyimpan file proyek yang dikaburkan, jadi tentukan. Lokasinya bisa sewenang-wenang, tetapi juga bisa menjadi lokasi keluaran dari program yang dikaburkan. Ini menyimpan input Anda dan akan membuka file proyek pengaburan ini jika Anda ingin mengaburkannya lagi. Ekstensinya adalah ". xml".
Jika build telah dimulai dan "Build completed" ditampilkan dalam pesan di bawah ini, ini menunjukkan penyelesaian yang berhasil. Layar menampilkan log build dan daftar kelas dan variabel yang dikaburkan.
Pilih "Hasil" dari daftar di sebelah kiri untuk melihat detail tentang bagaimana nama kelas dan metode telah berubah.
Nama kelas dan nama metode di pohon di sebelah kanan, seperti "->", adalah nama setelah pengaburan. Dengan mengubah nama kelas atau nama metode menjadi nama yang tidak berarti seperti ini, Anda dapat membuat konten kode sumber sulit dibaca meskipun dibongkar.
Program yang dikaburkan disimpan dalam folder bernama "Dotfuscated" di tempat Anda menyimpan file proyek.
Map.xml adalah file hasil pengaburan, sehingga Anda dapat menghapusnya dengan aman.
Karena .NET 6.0 WPF tidak dapat dimulai oleh DLL saja, salin "XXXX.exe" dan "XXXX.runtimeconfig.json" yang dihasilkan pada saat output build ke folder yang sama dan mulailah. Jika Anda dapat memulai dengan normal, tidak ada masalah untuk saat ini. Jika Anda tidak dapat memulainya, Anda mungkin kehilangan file atau Anda mungkin membuat program yang menjadi tidak konsisten karena pengaburan.
Jika Anda menganalisis program yang sebenarnya telah dikaburkan, Anda akan melihat beberapa jejak pengaburan. Lembar pertama dari gambar di bawah ini adalah sebelum pengaburan, dan yang kedua adalah setelah pengaburan.
Perhatikan bahwa nama kelas yang ditentukan dalam pustaka .NET tidak dapat diganti namanya karena ada sebagai kerangka kerja.
Kali ini, saya mengaburkan proyek default yang dibuat apa adanya, jadi saya pikir ada gambar yang hampir tidak dikaburkan, tetapi saya pikir efek pengaburan menjadi jelas karena semakin besar proyeknya, semakin banyak kelas unik akan meningkat.
Juga, meskipun kami telah memasukkan prosedur dalam versi gratis kali ini, versi berbayar memungkinkan pengaburan yang lebih kompleks dan juga mencegah pembongkaran itu sendiri. Namun, pengaburan memiliki berbagai efek samping dan potensi terjadi, sehingga ketika pengaburan dilakukan, perlu untuk membuatnya sambil mempertimbangkan apakah itu akan bekerja dengan baik sejak awal desain.
Kecualikan pengaburan
Jika Anda memiliki nama kelas atau properti yang tidak ingin Anda alakan, Anda dapat mengecualikannya.
Saat rakitan dimuat, pilih Ganti Nama > Kecualikan dari sisi kiri layar. Karena isi rakitan ditampilkan, saya akan memeriksa yang tidak ingin saya ala.
Dimungkinkan untuk mengecualikan pengaburan pada tingkat granular, tetapi saya pikir lebih mudah untuk menyesuaikannya berdasarkan namespace.
Mode Perpustakaan
Saat Anda memilih rakitan input, Anda dapat melihat bahwa "Mode Perpustakaan" dicentang.
"Mode perpustakaan" adalah untuk melampirkan ke DLL yang mungkin dipanggil oleh program lain. Jika diperiksa, kelas publik dan properti yang dipanggil oleh program lain dikecualikan dari pengaburan.
Namun, secara umum, jarang mengekspos perpustakaan yang disebut secara generatif dari program lain, dan saya pikir itu sering dikaburkan ke aplikasi yang bekerja sendiri, jadi tidak apa-apa untuk pada dasarnya menghapus pemeriksaan ini.
Pengaburan .exe file tunggal (belum dikonfirmasi)
Investigasi terhadap item ini di Visual Studio 2022 saat ini belum dikonfirmasi.
Ini mungkin akan dikaburkan dengan MSBuild, tetapi saya menundanya karena kurangnya informasi saat ini.