回答
除非您控制目標硬件,否則理論上不可能達到100%的保護。如果CPU能夠執行它,給予足夠的時間和知識,人類也可以閱讀它。這甚至不限於C#(儘管在託管語言中它通常更容易)。您可以使用像Dotfuscator或XenoCode這樣的混淆器來更難理解反編譯的代碼。如果你真的擔心,你應該轉向基於服務器的應用程序。
它是軟件;一切皆有可能。您可以對二進制文件進行加密,然後在運行時將全部或部分文件解密到您的應用程序中。這不是萬無一失的,但是你要決定你想成爲多麼嚴厲。
您可以使用obfuscator tool,這將有助於但逆向工程將仍然是很有可能的。
你的用戶的計算機需要知道它需要做的,所以你要告訴它。計算機的主人可以完全控制它,因此可以知道自己告訴計算機做什麼,他可以告訴它做別的事情。
您可以編寫一個應用程序,將host CLR using the CLR COM api,這樣你可以先加載,並在本地代碼級解碼組件。如果你使用幾個anti-reverse engeneering techniques來強化本機加載器,那麼你可以獲得足夠好的安全性。
有隱藏數據的方法,其所謂steganography。在CodeProject上有一篇文章的作者,他爲此寫了一個框架。這些文章的標題是從一到十二個系列的「隱寫術」,我認爲。這是與作者有關的website。
還有一個名爲'鳳凰保護'的混淆器,發現here,它可以混淆.NET代碼,個人而言,我還沒有嘗試過,但聽起來不錯。
希望這會有所幫助, 最好的問候, 湯姆。
最起碼,你應該混淆你的DLL來防止黑客觀看,使你的代碼感&競爭對手。迷惑不是100%萬無一失的,但它在他們的道路上呈現出足夠大的障礙。
一些混淆器如Crypto Obfuscator具有在主exe文件中嵌入所有dll的功能,因此您的dll不會在磁盤上顯式可見並可用於在反向工程工具(例如Reflector)中打開。
- 1. 查找我的應用程序,已編譯的可執行代碼
- 2. 未在已部署的應用程序中執行ASP.NET代碼隱藏
- 3. 編譯器的條件隱藏代碼
- 4. 用於編譯和執行Java程序的Java代碼
- 5. 編譯器是否只編譯可以執行的代碼?
- 6. NSIS部分隱藏(編譯和執行)
- 7. 編譯並執行Qt應用程序
- 8. 編譯後無法執行Java代碼
- 9. Android的隱藏/取消隱藏應用程序圖標編程
- 10. 如何編譯TCL/shell代碼(隱藏原來的源代碼)
- 11. 隱藏桌面應用程序代碼的密碼
- 12. 運行已編譯的內部原生代碼的iOS應用
- 13. 我的代碼編譯,執行但程序崩潰到底
- 14. 無法編譯代碼的應用程序崩潰,此錯誤
- 15. 編譯並運行來自Java應用程序的源代碼
- 16. 代碼塊編譯但無法運行可執行文件
- 17. 從javascript(VB.NET)執行代碼隱藏函數/子程序
- 18. 如何執行編譯的Python代碼
- 19. SP.UI.ModalDialog.showModalDialog不執行代碼隱藏
- 20. 腳本執行但代碼隱藏不
- 21. ''隱藏''OnClick事件代碼執行
- 22. 字符串轉換爲可執行的C#代碼的代碼隱藏
- 23. 隱藏在編譯golang可執行靜態字符串
- 24. 將帶代碼隱藏的aspx頁面添加到已編譯的ASP.Net站點
- 25. 將MATLAB 2009b應用程序編譯爲Windows可執行文件
- 26. 是否可以隱藏從應用程序調用的號碼?
- 27. 編譯代碼和可執行代碼有什麼區別?
- 28. 有什麼辦法可以完全隱藏Web應用程序代碼嗎?
- 29. 可以將vb.net應用程序反編譯成源代碼?
- 30. CallMethodAction不會在Windows Phone的執行代碼隱藏方法8.1
在某種程度上,基於服務器的應用程序是反向工程的(如果甚至是單詞)。如果有足夠的時間,您可以研究其行爲並查看每個可能輸入的每個可能的答案,並最終可以創建另一個具有相同**可觀察**行爲的服務器端應用程序。 – 2010-01-25 01:52:06