回答
除非您控制目標硬件,否則理論上不可能達到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. 用於編譯和執行Java程序的Java代碼
- 4. 編譯器是否只編譯可以執行的代碼?
- 5. 如何編譯TCL/shell代碼(隱藏原來的源代碼)
- 6. 隱藏桌面應用程序代碼的密碼
- 7. 運行已編譯的內部原生代碼的iOS應用
- 8. 我的代碼編譯,執行但程序崩潰到底
- 9. 無法編譯代碼的應用程序崩潰,此錯誤
- 10. 編譯並運行來自Java應用程序的源代碼
- 11. ''隱藏''OnClick事件代碼執行
- 12. 腳本執行但代碼隱藏不
- 13. SP.UI.ModalDialog.showModalDialog不執行代碼隱藏
- 14. 隱藏在編譯golang可執行靜態字符串
- 15. 將帶代碼隱藏的aspx頁面添加到已編譯的ASP.Net站點
- 16. 是否可以隱藏從應用程序調用的號碼?
- 17. 有什麼辦法可以完全隱藏Web應用程序代碼嗎?
- 18. 編譯代碼和可執行代碼有什麼區別?
- 19. 將MATLAB 2009b應用程序編譯爲Windows可執行文件
- 20. 如何隱藏Rails應用程序中的源代碼片段?
- 21. 私人代碼隱藏方法被編譯器忽略 - ASP.NET
- 22. 編譯Android應用程序源代碼+代碼檢查
- 23. 如何編寫代碼來隱藏當前的sencha觸摸應用程序?
- 24. matlab編譯程序執行代碼關閉
- 25. 在程序執行時重新編譯代碼
- 26. 隱藏/編碼我的JavaScript代碼
- 27. 從碼頭隱藏Mac應用程序
- 28. 可以通過代碼隱藏iPhone應用程序的圖標和圖標嗎?
- 29. 如何在應用程序啓動時執行彙編代碼
- 30. 用於編譯java代碼的Web應用程序
在某種程度上,基於服務器的應用程序是反向工程的(如果甚至是單詞)。如果有足夠的時間,您可以研究其行爲並查看每個可能輸入的每個可能的答案,並最終可以創建另一個具有相同**可觀察**行爲的服務器端應用程序。 – 2010-01-25 01:52:06