.NET 程式碼混淆真的值得嗎?
根據我的閱讀,程式碼混淆並不是真的很難“破解”,它只會延遲不可避免的事情。在這種情況下,它的目的是什麼?
如果有人真的想竊取您的資源,他們可以。
如果有人出於無害/有用的目的需要查看您的原始碼,則他們不能。
您可能不應該在程式碼中儲存任何敏感內容,因此這不應該成為問題。
如果您不混淆,您仍然沒有提供完整的原始碼,因此您可以出售“原始碼許可證”。
有趣的是,我見過的唯一被混淆的程式碼是其中包含錯誤的糟糕程式碼。我需要查看程式碼的唯一原因是找出問題所在以及我可以做些什麼來解決它。
例如,我需要替換 ASPDotNetStoreFront 中的一些圖像。在尋找標籤的位置時,我發現它們包含在編譯後的程式碼中。廢話。所以我想我會反編譯程式碼,以找出要通過正則表達式替換的 img 標籤。我試圖查看原始碼以查看哪些圖像可能來自給定的編譯方法,而反射器無法處理它,我想是因為混淆了。我真的沒有時間四處尋找反編譯器/反混淆器。
我認為它值得。對您而言,成本幾乎為零,而且您讓黑客的生活更加艱難。即使他們破解了它,你也會滿意地知道你浪費了他們生命中的幾個小時到幾週的時間。僅僅因為鎖不完美並不意味著您不鎖門。
只有當您的項目是長期執行的並且需要花費大量時間來實施時才值得。這當然是一個觀點,但我還沒有找到一個混淆的 .Net DLL,我無法弄清楚僅使用 Reflector 發生了什麼。
這是一種威懾,僅此而已。如果某人對您的程式碼進行逆向工程的成本大於自己實現它的成本,那是我看到的唯一合理的情況,但如果有人想看看您的程式碼如何執行,那麼它在防止這種情況方面並不是很好。
我經常看到的一種常見情況是您如何生成和/或解密許可證密鑰。任何有動力弄清楚這一點並為您的鹽/解密方法探勘反射器的人都不會被混淆所阻止,我敢說它也不會真正減慢它們的速度。