Aplikasi Obfuscate Dibuat Menggunakan Dotfuscator (Versi Visaul Studio 2022)
Ringkasan
Aplikasi berdasarkan siri rangka kerja .NET dicipta dalam apa yang dipanggil bahasa perantaraan biasa, jadi ia boleh dibaca dalam bentuk yang dekat dengan kod sumber asal dengan menggunakan alat pembongkaran dan sebagainya. Bahagian ini menerangkan cara mengelirukan kelas dan nama kaedah ke dalam format yang mudah dibaca menggunakan versi percuma Dotfuscator, alat obfuscator yang disertakan dengan Visual Studio.
Ia diterangkan menggunakan Visual Studio 2022, tetapi ia juga boleh digunakan dalam versi dotfuscator yang lain.
Persekitaran Operasi
- Visual Studio
-
- Studio Visual 2022
Tentang Dotfuscator
Dotfuscator adalah alat obfuscation yang menjadikan kod sumber sukar dibaca apabila dibongkar untuk aplikasi yang ditulis dengan keluarga rangka kerja .NET (selepas ini dirujuk sebagai .NET). Dotfuscator dilengkapi dengan Visual Studio secara percuma dan dengan bayaran.
Versi percuma tidak tersedia melainkan banyak ciri-cirinya terhad atau Visual Studio dimulakan, tetapi sesiapa sahaja boleh menggunakannya selagi mereka telah memasang Visual Studio. Versi berbayar mempunyai banyak ciri kekeliruan yang kuat yang tidak terdapat dalam versi percuma, tetapi ia ditawarkan pada harga yang sukar bagi orang awam untuk mampu.
Dotfuscator mempunyai ciri, harga, dan edisi yang berbeza bergantung pada versi, jadi sila rujuk laman utama berikut untuk maklumat lanjut.
Mengenai Pembongkaran
Saya menyebut sebelum ini bahawa aplikasi yang ditulis dalam .NET boleh dengan mudah membongkar dan membaca kod sumber asal, tetapi apa yang sebenarnya berlaku ialah jika anda membongkar fail .exe (atau .dll fail) seperti yang ditunjukkan dalam angka berikut, anda hampir boleh menghasilkan semula kod sumber asal, seperti ruang nama, nama kelas, nama kaedah, dll.
Jenis program yang patut dikelirukan
Ia terutamanya terpakai kepada program yang diedarkan dan dijalankan kepada pengguna yang tidak ditentukan. Sebagai contoh, aplikasi desktop. Sebaliknya, aplikasi Web yang mengalami kesukaran mengakses fail program secara langsung adalah kurang penting untuk kekeliruan.
Kali ini, kami melihat projek di WPF, aplikasi desktop.
Memasang Dotfuscator
Aplikasi ini dilengkapi dengan Visual Studio 2022 tetapi tidak termasuk dalam pemasangan standard (dalam beberapa Visual Studios yang lalu ia boleh dipasang dari awal).
Untuk menambah Dotfuscator: Mulakan Visaul Studio dan pilih Dapatkan Alat dan Ciri daripada Alat.
Pilih "Komponen Individu" dari tab di atas, periksa "Perlindungan PreEmptive - Dotfuscator" dalam kumpulan "Alat Kod", dan klik butang Pasang di sudut kanan bawah. Apabila berbuat demikian, tutup konsol Visual Studio.
Prosedur kekeliruan
Menerangkan langkah-langkah untuk menjadikan nama-nama ini mengelirukan dan mengelirukan.
Buat aplikasi dalam Visual Studio, bina fail .exe, kemudian klik . Buat fail dll. Setakat ini, ini sama seperti membuat aplikasi biasa. Aplikasi yang anda buat harus ditujukan untuk yang dibuat dalam binaan Keluaran. (Kerana anda biasanya tidak menerbitkan dalam Nyahpepijat.)
Selepas anda mencipta .exe atau .dll, pilih Alat daripada menu Visual Studio, kemudian pilih Perlindungan PreEmptive - Komuniti Dotfuscator.
Skrin pendaftaran dipaparkan, tetapi tidak diperlukan, jadi jika tidak perlu, klik butang batal seperti itu.
Kekal dan klik butang OK.
Dotfuscator bermula. Aplikasi ini berfungsi sendiri, jadi anda boleh mengelirukan fail yang tidak berkaitan dengan projek yang sedang dibuka. (Dalam kes versi percuma aplikasi itu sendiri, diandaikan bahawa Visual Studio dimulakan.) )
Dalam artikel ini, saya akan mengelirukan projek aplikasi WPF .NET 6.0 yang dibina dengan lalai sebagai sampel.
Pilih "Input" dari senarai di sebelah kiri dan klik butang "+".
Pilih fail atur cara yang anda mahu mengelirukan. Aplikasi yang ditulis dalam Rangka Kerja .NET sering mengelirukan .exe, tetapi dalam .NET dan .NET Core, program sering .dll entiti. Aplikasi WPF BERSIH juga akan mempunyai entiti .dll, jadi pilih .dll.
Ia akan ditambah ke senarai. Jika ia terdiri daripada berbilang DLL, tambah lebih daripada satu.
Selepas menambah fail sasaran, klik butang "Bina" dari bar alat.
Anda akan ditanya di mana untuk menyimpan fail projek yang mengelirukan, jadi tentukannya. Lokasi ini boleh sewenang-wenangnya, tetapi ia juga boleh menjadi lokasi output program yang mengelirukan. Ia menyimpan input anda dan akan membuka fail projek kekeliruan ini jika anda ingin mengelirukannya semula. Pelanjutannya ialah ". xml".
Jika binaan telah bermula dan "Bina selesai" dipaparkan dalam mesej di bawah, ia menunjukkan penyelesaian yang berjaya. Skrin memaparkan log binaan dan senarai kelas dan pemboleh ubah yang mengelirukan.
Pilih "Hasil" dari senarai di sebelah kiri untuk melihat butiran bagaimana nama kelas dan kaedah telah berubah.
Nama kelas dan nama kaedah di dalam pokok di sebelah kanan, seperti "->", adalah nama selepas kekeliruan. Dengan menukar nama kelas atau nama kaedah kepada nama yang tidak bermakna seperti ini, anda boleh membuat kandungan kod sumber sukar dibaca walaupun ia dibongkar.
Program obfuscated disimpan dalam folder yang dipanggil "Dotfuscated" di tempat di mana anda menyimpan fail projek.
Peta.xml ialah fail hasil kekeliruan, jadi anda boleh memadamkannya dengan selamat.
Oleh kerana .NET 6.0 WPF tidak dapat dimulakan oleh DLL sahaja, salin "XXXX.exe" dan "XXXX.runtimeconfig.json" yang dihasilkan pada masa membina output ke folder yang sama dan mulakannya. Jika anda boleh bermula secara normal, tidak ada masalah buat masa ini. Jika anda tidak dapat memulakannya, anda mungkin kehilangan fail atau anda mungkin mencipta program yang menjadi tidak konsisten kerana kekeliruan.
Sekiranya anda menganalisis program yang sebenarnya telah dikelirukan, anda akan melihat beberapa kesan kekeliruan. Lembaran pertama angka di bawah adalah sebelum kekeliruan, dan yang kedua adalah selepas kekeliruan.
Ambil perhatian bahawa nama kelas yang ditakrifkan dalam pustaka .NET tidak tertakluk kepada penamaan semula kerana ia wujud sebagai rangka kerja.
Kali ini, saya mengelirukan projek lalai yang dibuat seperti itu, jadi saya fikir terdapat imej yang hampir tidak mengelirukan, tetapi saya fikir kesan kekeliruan menjadi jelas kerana semakin besar projek itu, kelas yang lebih unik akan meningkat.
Juga, walaupun kami telah memasukkan prosedur dalam versi percuma kali ini, versi berbayar membolehkan kekeliruan yang lebih kompleks dan juga menghalang pembongkaran itu sendiri. Walau bagaimanapun, kekeliruan mempunyai pelbagai kesan buruk dan potensi untuk berlaku, jadi apabila obfuscating dilakukan, adalah perlu untuk membuatnya sambil mempertimbangkan sama ada ia akan berfungsi dengan baik dari awal reka bentuk.
Kecualikan kekeliruan
Jika anda mempunyai nama kelas atau sifat yang anda tidak mahu mengelirukan, anda boleh mengecualikannya.
Semasa pemasangan dimuatkan, pilih Namakan semula > Kecualikan dari sebelah kiri skrin. Oleh kerana kandungan perhimpunan dipaparkan, saya akan memeriksa yang saya tidak mahu mengelirukan.
Adalah mungkin untuk mengecualikan kekeliruan pada tahap terperinci, tetapi saya fikir lebih mudah untuk menyesuaikannya berdasarkan ruang nama.
Mod Perpustakaan
Apabila anda memilih pemasangan input, anda dapat melihat bahawa "Mod Perpustakaan" diperiksa.
"Mod perpustakaan" adalah untuk melampirkan kepada DLL yang boleh dipanggil oleh program lain. Jika disemak, kelas awam dan sifat yang dipanggil oleh program lain dikecualikan daripada kekeliruan.
Walau bagaimanapun, secara umum, jarang sekali untuk mendedahkan perpustakaan yang dipanggil secara generatif dari program lain, dan saya fikir ia sering dikelirukan kepada aplikasi yang berfungsi sendiri, jadi tidak mengapa pada dasarnya mengeluarkan cek ini.
Kekeliruan .exe fail tunggal (tidak disahkan)
Siasatan ke atas item ini dalam Visual Studio 2022 pada masa ini tidak disahkan.
Ia mungkin akan menjadi kekeliruan dengan MSBuild, tetapi saya menangguhkannya kerana kekurangan maklumat pada masa ini.