Produk saya memiliki beberapa komponen: ASP.NET, Aplikasi Windows Forms dan Layanan Windows. 95% atau lebih dari kode ditulis dalam VB.NET.
Untuk alasan Kekayaan Intelektual, saya perlu mengaburkan kode, dan sampai sekarang saya telah menggunakan versi dotfuscator yang sekarang berusia lebih dari 5 tahun. Saya pikir ini saatnya untuk pindah ke alat generasi baru. Yang saya cari adalah daftar persyaratan yang harus saya pertimbangkan ketika mencari obfuscator baru.
Apa yang saya tahu harus saya cari sejauh ini:
- Serialisasi / De-serialisasi . Dalam solusi saya saat ini, saya hanya memberi tahu alatuntuk tidak mengaburkan anggota data kelas mana pun karena rasa sakit karena tidak dapat memuat data yang sebelumnya diserialisasi terlalu besar.
- Integrasi dengan Proses Bangun
- Bekerja dengan ASP.NET . Di masa lalu, saya menemukan ini bermasalah karena mengubah nama .dll (Anda sering memiliki satu per halaman) - yang tidak semua alat menangani dengan baik.
.net
security
obfuscation
csmba
sumber
sumber
Jawaban:
Kembali dengan .Net 1.1 kebingungan sangat penting: menguraikan kode itu mudah, dan Anda bisa beralih dari assembly, ke IL, ke kode C # dan mengkompilasinya lagi dengan sedikit usaha.
Sekarang dengan Net 3.5. Saya sama sekali tidak yakin. Coba dekompilasi rakitan 3,5; apa yang Anda dapatkan adalah jauh dari kompilasi.
Tambahkan optimisasi dari 3,5 (jauh lebih baik dari 1,1) dan cara anonim jenis, delegasi dan sebagainya ditangani oleh refleksi (mereka adalah mimpi buruk untuk dikompilasi ulang). Tambahkan ekspresi lambda, kompiler 'ajaib' seperti sintaks Linq dan
var
, dan C # 2 berfungsi sepertiyield
(yang menghasilkan kelas baru dengan nama yang tidak dapat dibaca). Kode hasil dekompilasi Anda jauh dari kompilasi.Sebuah tim profesional dengan banyak waktu masih bisa merekayasa balik kembali, tetapi kemudian hal yang sama berlaku untuk setiap kode yang dikaburkan. Kode apa yang mereka dapatkan dari itu tidak dapat dipelihara dan sangat mungkin sangat bermasalah.
Saya akan merekomendasikan penandatanganan kunci majelis Anda (artinya jika peretas dapat mengkompilasi ulang mereka harus mengkompilasi ulang semua) tetapi saya tidak berpikir kekecewaan itu sepadan.
sumber
Kami telah mencoba sejumlah obfuscator. Tidak ada yang bekerja pada aplikasi klien / server besar yang menggunakan remoting. Masalahnya adalah bahwa klien dan server berbagi beberapa dll, dan kami belum menemukan obfuscator yang dapat menanganinya.
Kami telah mencoba DotFuscator Pro, SmartAssembly, XenoCode, Salamander, dan beberapa aplikasi kecil yang namanya lolos dari saya.
Terus terang, saya yakin kebingungan adalah hack besar.
Bahkan masalah yang ditanganinya tidak sepenuhnya merupakan masalah nyata. Satu-satunya hal yang benar-benar perlu Anda lindungi adalah string koneksi, kode aktivasi, hal-hal sensitif seperti itu. Omong kosong bahwa perusahaan lain akan merekayasa ulang seluruh basis kode Anda dan membuat produk yang bersaing darinya adalah sesuatu dari mimpi buruk manajer paranoid, bukan kenyataan.
sumber
Saya 'Knee Deep' dalam hal ini sekarang, berusaha menemukan solusi yang baik. Inilah kesan saya sejauh ini.
Xenocode - Saya memiliki lisensi lama untuk Xenocode2005 yang saya gunakan untuk mengaburkan rakitan .net 2.0 saya. Ini bekerja dengan baik pada XP dan merupakan solusi yang layak. Proyek saya saat ini adalah .net 3.5 dan saya menggunakan Vista, dukungan mengatakan kepada saya untuk mencobanya tetapi versi 2005 bahkan tidak berfungsi pada Vista (macet) jadi saya dan sekarang saya harus membeli 'PostBuild2008' pada titik harga yang terlalu mahal $ 1900. Ini mungkin alat yang bagus tapi saya tidak akan mengetahuinya. Terlalu mahal.
Reactor.Net - Ini adalah titik harga yang jauh lebih menarik dan bekerja dengan baik pada Standalone Executeable saya. Modul Perizinan juga bagus dan akan menyelamatkan saya dari banyak usaha. Sayangnya, ini tidak memiliki fitur utama dan itu adalah kemampuan untuk Mengecualikan hal-hal dari kebingungan. Hal ini membuat tidak mungkin untuk mencapai hasil yang saya butuhkan (Gabungkan beberapa majelis bersama-sama, mengaburkan beberapa, bukan-mengaburkan yang lain).
SmartAssembly - Saya mengunduh Eval untuk ini dan berfungsi dengan sempurna. Saya dapat mencapai semua yang saya inginkan dan Antarmuka adalah kelas satu. Poin harga masih agak lumayan.
Dotfuscator Pro - Tidak dapat menemukan harga di situs web. Saat ini sedang dalam diskusi untuk mendapatkan penawaran. Kedengarannya menyenangkan.
Confuser - proyek open source yang bekerja dengan baik (untuk membingungkan ppl, seperti namanya).
Catatan: ConfuserEx dilaporkan "rusak" sesuai dengan Masalah # 498 pada repo GitHub mereka.
sumber
Jika Anda mencari yang gratis, Anda bisa mencoba DotObfuscator Community Edition yang dilengkapi dengan Visual Studio atau Eazfuscator.NET .
Sejak 29 Juni 2012 , Eazfuscator.NET sekarang komersial. Versi gratis terakhir yang tersedia adalah 3.3.
sumber
Saya telah menggunakan smartassembly. Pada dasarnya, Anda memilih dll dan mengembalikannya dikaburkan. Tampaknya berfungsi dengan baik dan saya tidak punya masalah sejauh ini. Sangat, sangat mudah digunakan.
sumber
Saya telah mencoba hampir setiap obfuscator di pasaran dan SmartAssembly adalah yang terbaik menurut saya.
sumber
Saya juga menggunakan SmartAssembly. Saya menemukan bahwa Ezrinz .Net Reactor jauh lebih baik bagi saya pada aplikasi .net. Ini mengaburkan, mendukung Mono, menggabungkan majelis dan juga memiliki modul lisensi yang sangat bagus untuk membuat versi percobaan atau menautkan lisensi ke mesin tertentu (sangat mudah diimplementasikan). Harga juga sangat kompetitif dan ketika saya membutuhkan dukungan mereka di mana cepat. Eziriz
Untuk lebih jelasnya, saya hanya pelanggan yang menyukai produk dan tidak berhubungan dengan perusahaan.
sumber
Jawaban singkatnya adalah Anda tidak bisa.
Ada berbagai alat di sekitar yang akan mempersulit seseorang untuk membaca kode Anda - beberapa di antaranya telah ditunjukkan oleh jawaban lain.
Namun, semua ini membuatnya lebih sulit untuk dibaca - mereka meningkatkan jumlah upaya yang diperlukan, itu saja. Seringkali ini cukup untuk menghalangi pembaca biasa, tetapi seseorang yang bertekad untuk menggali kode Anda akan selalu dapat melakukannya.
sumber
Operator '>' cannot be applied to operands of type 'System.TimeSpan' and 'decimal'
Kami memiliki aplikasi multi tier dengan antarmuka asp.net dan winform yang juga mendukung remoting. Saya tidak punya masalah dengan menggunakan obfuscator apa pun kecuali jenis enkripsi yang menghasilkan loader yang bisa bermasalah dalam segala macam cara yang tidak terduga dan tidak sepadan dengan pendapat saya. Sebenarnya saran saya akan lebih sesuai "Hindari mengenkripsi obfuscator tipe loader seperti wabah". :)
Dalam pengalaman saya obfuscator apa pun akan bekerja dengan baik dengan aspek .net termasuk asp.net dan remoting, Anda hanya perlu menjadi akrab dengan pengaturan dan belajar seberapa jauh Anda bisa mendorongnya di area mana dari kode Anda. Dan luangkan waktu untuk mencoba rekayasa balik pada apa yang Anda dapatkan dan lihat bagaimana cara kerjanya dengan berbagai pengaturan.
Kami menggunakan beberapa aplikasi selama bertahun-tahun di aplikasi komersial kami dan memilih obfuscator rempah-rempah dari 9rays.net karena harganya yang tepat, ia berfungsi dengan baik dan mereka memiliki dukungan yang baik meskipun kami benar-benar tidak memerlukan dukungan selama bertahun-tahun lagi tetapi jujur saja Saya tidak berpikir itu benar-benar masalah obfuscator yang Anda gunakan, masalah dan kurva belajar semua sama jika Anda ingin itu berfungsi dengan baik dengan remote dan asp.net.
Seperti yang telah disebutkan oleh orang lain, yang Anda lakukan benar-benar setara dengan gembok, membuat orang-orang jujur keluar dan atau membuatnya lebih sulit untuk hanya mengkompilasi ulang aplikasi.
Lisensi biasanya merupakan area utama bagi kebanyakan orang dan Anda pasti harus menggunakan semacam sistem sertifikat yang ditandatangani secara digital untuk lisensi. Kerugian terbesar Anda akan datang dari berbagi lisensi secara kasual jika Anda tidak memiliki sistem yang cerdas, orang-orang yang melanggar sistem lisensi tidak akan pernah membeli sejak awal.
Sangat mudah untuk mengambil ini terlalu jauh dan memiliki dampak negatif pada pelanggan dan bisnis Anda, melakukan apa yang sederhana dan masuk akal dan kemudian jangan khawatir tentang hal itu.
sumber
Selama dua hari terakhir saya telah bereksperimen dengan Dotfuscator Community Edition canggih (unduhan gratis setelah mendaftar CE dasar yang dibundel dengan Visual Studio).
Saya pikir alasan lebih banyak orang tidak menggunakan kebingungan sebagai opsi default adalah bahwa ini adalah masalah serius dibandingkan dengan risikonya. Pada proyek uji yang lebih kecil saya bisa menjalankan kode yang membingungkan dengan banyak usaha. Menyebarkan proyek sederhana melalui ClickOnce merepotkan, tetapi dapat dicapai setelah secara manual menandatangani manifes dengan mage. Satu-satunya masalah adalah bahwa kesalahan jejak stack kembali dikaburkan dan CE tidak memiliki deobfuscator atau paket klarifikasi yang dikemas.
Saya mencoba untuk mengaburkan proyek nyata yang berbasis VSTO di Excel, dengan integrasi Earth Virtual, banyak panggilan layanan web dan wadah IOC dan banyak refleksi. Itu tidak mungkin.
Jika kebingungan benar-benar merupakan persyaratan penting, Anda harus merancang aplikasi Anda dengan memikirkannya sejak awal, menguji bangunan yang dikaburkan seiring kemajuan Anda. Kalau tidak, jika ini adalah proyek yang cukup rumit, Anda akan berakhir dengan rasa sakit yang serius.
sumber
Crypto Obfuscator mengatasi semua masalah dan skenario Anda. Itu :
sumber
Saya baru-baru ini mencoba menyalurkan output dari satu obfuscator gratis ke obfuscator gratis lain - yaitu Dotfuscator CE dan obfuscator Babel baru pada CodePlex. Lebih detail di blog saya .
Adapun serialisasi, saya telah memindahkan kode itu ke DLL yang berbeda dan termasuk dalam proyek. Saya beralasan bahwa tidak ada rahasia di sana yang tidak ada dalam XML, jadi itu tidak perlu kebingungan. Jika ada kode serius di kelas-kelas itu, menggunakan kelas parsial di majelis utama harus menutupinya.
sumber
Anda harus menggunakan apa pun yang termurah dan paling terkenal untuk platform Anda dan menyebutnya sehari. Kebingungan bahasa tingkat tinggi adalah masalah yang sulit, karena aliran opcode VM tidak mengalami dua masalah terbesar yang dilakukan aliran opcode asli: identifikasi fungsi / metode dan daftar alias.
Apa yang harus Anda ketahui tentang pembalikan bytecode adalah sudah menjadi praktik standar bagi penguji keamanan untuk meninjau langsung kode X86 dan menemukan kerentanan di dalamnya. Dalam raw X86, Anda bahkan tidak dapat menemukan fungsi yang valid, apalagi melacak variabel lokal selama panggilan fungsi. Hampir dalam keadaan apa pun pembalik kode asli tidak memiliki akses ke fungsi dan nama variabel --- kecuali jika mereka sedang meninjau kode Microsoft, yang untuk itu MSFT membantu memberikan informasi tersebut kepada publik.
"Dotfuscation" bekerja terutama dengan fungsi pengacakan dan nama variabel. Mungkin lebih baik melakukan ini daripada menerbitkan kode dengan informasi tingkat debug, di mana Reflector benar-benar menyerahkan kode sumber Anda. Tapi apa pun yang Anda lakukan di luar ini kemungkinan akan berkurang hasilnya.
sumber
Saya tidak punya masalah dengan Smartassembly.
sumber
Anda bisa menggunakan "Edisi Komunitas Dotfuscator" - ini datang secara default di Visual Studio 2008 Professional. Anda dapat membacanya di:
http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html
Versi "Profesional" dari produk membutuhkan uang tetapi lebih baik.
Apakah Anda benar-benar membutuhkan kode Anda dikaburkan? Biasanya ada sangat sedikit yang salah dengan aplikasi Anda didekompilasi, kecuali jika digunakan untuk tujuan keamanan. Jika Anda khawatir orang mencuri kode Anda, jangan khawatir; sebagian besar orang yang melihat kode Anda adalah untuk tujuan pembelajaran. Bagaimanapun, tidak ada strategi kebingungan yang benar-benar efektif untuk .NET - seseorang dengan keterampilan yang cukup akan selalu dapat mendekompilasi / mengubah aplikasi Anda.
sumber
Hindari Reaktor. Ini sama sekali tidak berguna (dan ya saya membayar lisensi). Xenocode adalah yang terbaik yang saya temui dan membeli lisensi juga. Dukungannya sangat bagus tetapi saya tidak terlalu membutuhkannya karena hanya berfungsi. Saya menguji setiap obfuscator yang dapat saya temukan dan kesimpulan saya adalah bahwa xenocode adalah yang paling kuat dan melakukan pekerjaan terbaik (juga kemungkinan untuk memposting proses .NET exe Anda ke exe asli yang tidak saya lihat di tempat lain.).
Ada dua perbedaan utama antara reaktor dan xenocode. Yang pertama adalah Xenocode benar-benar berfungsi. Yang kedua adalah bahwa kecepatan eksekusi majelis Anda tidak berbeda. Dengan reaktor itu sekitar 6 juta kali lebih lambat. Saya juga mendapat kesan bahwa reaktor adalah operasi satu orang.
sumber
Saya menemukan Agile.Net memberikan perlindungan yang cukup bagus untuk .Net Assembly Anda karena ia menawarkan tidak hanya kebingungan tetapi juga enkripsi. Unduh jejak gratis.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx
sumber
Saya telah mengaburkan kode dalam aplikasi yang sama sejak. Net 1, dan itu sudah menjadi sakit kepala utama dari perspektif pemeliharaan. Seperti yang telah Anda sebutkan, masalah serialisasi dapat dihindari, tetapi sangat mudah untuk membuat kesalahan dan mengaburkan sesuatu yang tidak Anda inginkan dikaburkan. Sangat mudah untuk memecah bangunan, atau untuk mengubah pola kebingungan dan tidak dapat membuka file lama. Plus itu bisa sulit untuk menemukan kesalahan dan di mana.
Pilihan kami adalah Xenocode, dan jika saya membuat pilihan lagi hari ini saya lebih suka untuk tidak mengaburkan kode, atau menggunakan Dotfuscator.
sumber
Ini dokumen dari Microsoft sendiri. Semoga itu bisa membantu ..., ini dari tahun 2003, tetapi mungkin masih relevan.
sumber
Kami menggunakan SmartAssembly di klien windows kami. Bekerja dengan baik.
Apakah menambah beberapa masalah ekstra juga. Mencetak nama kelas Anda dalam file log / pengecualian harus dikaburkan. Dan tentu saja tidak dapat membuat kelas dari namanya. Jadi itu ide yang baik untuk melihat klien Anda dan melihat masalah yang bisa Anda dapatkan dengan mengaburkan.
sumber
Itu semua tergantung pada bahasa pemrograman yang Anda gunakan. Baca artikel: Kode dikaburkan
sumber
cara gratisnya adalah menggunakan dotfuscator dari dalam studio visual, jika tidak Anda harus keluar dan membeli obfuscator seperti Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )
sumber
Saya harus menggunakan pengaburan / perlindungan sumber daya di rpoject terbaru saya dan menemukan Crypto Obfuscator sebagai alat yang bagus dan mudah digunakan. Masalah serialisasi hanya masalah pengaturan dalam alat ini.
sumber
Ada versi open source yang bagus yang disebut Obfuscar. Tampaknya bekerja dengan baik. Jenis, properti, bidang, metode dapat dikecualikan. Dokumen asli ada di sini: https://code.google.com/p/obfuscar/ , tetapi karena sepertinya tidak diperbarui lagi
sumber
Anda mungkin juga ingin melihat teknologi perlindungan kode baru seperti Metaforic dan ViLabs dan teknologi perlindungan salinan perangkat lunak baru seperti ByteShield . Pengungkapan: Saya bekerja untuk ByteShield.
sumber
Saya juga menggunakan smartassembly. Namun, saya tidak tahu cara kerjanya untuk aplikasi web. Namun, saya ingin menunjukkan bahwa jika aplikasi Anda menggunakan perlindungan tipe shareware, pastikan itu tidak memeriksa lisensi dengan pengembalian boolean. terlalu mudah untuk byte crack. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx
sumber
SmartAssembly hebat, saya digunakan di sebagian besar proyek saya
sumber
Saya mencoba versi demo Eziriz .... Saya menyukainya. Tetapi tidak pernah membawa perangkat lunak.
sumber
Kebingungan bukanlah perlindungan nyata.
Jika Anda memiliki file .NET Exe ada JAUH lebih baik solusi .
Saya menggunakan Themida dan bisa mengatakan itu bekerja dengan sangat baik.
Satu-satunya kelemahan dari Themida adalah tidak dapat melindungi .NET Dlls. (Ini juga melindungi kode C ++ di Exe dan DLL)
Themida jauh lebih murah daripada obfuscator yang disebutkan di sini dan merupakan yang terbaik dalam perlindungan anti pembajakan di pasar. Itu menciptakan mesin virtual yang bagian penting dari kode Anda dijalankan dan menjalankan beberapa utas yang mendeteksi manipulasi atau breakpoint yang ditetapkan oleh cracker. Mengkonversi .NET Exe menjadi sesuatu yang bahkan Reflector tidak mengenali sebagai .NET assembly lagi.
Silakan baca deskripsi terperinci di situs web mereka: http://www.oreans.com/themida_features.php
sumber
Saya telah mencoba produk yang disebut Rummage dan itu berfungsi dengan baik dalam memberi Anda kendali ... Meskipun tidak memiliki banyak hal yang ditawarkan Eziriz tetapi harga untuk Rummage terlalu baik ...
sumber