我正在和一位知道C#的朋友一起寫應用程序。 我想在最難以反編譯的代碼中編寫代碼。 C#和C++之間的安全區別是什麼? (在一個編譯的可執行文件查看代碼的條款)C#與C++安全性
回答
很短,簡單的解釋,假設發行版本沒有調試信息:
C/C++:
你會得到的彙編代碼,就是這樣。基於一個反編譯的知識,這可能相當容易理解或根本不可能。這裏沒有一般的答案,因爲這也取決於代碼本身的複雜性(即「它實際在做什麼?」)。
C#:
至於所有.NET語言的反編譯都要容易得多,因爲生成的二進制本質上只包含直接語言代碼,您可以將其反編譯爲可讀代碼。這不一定會導致代碼中的第一位(變量名可能會丟失,沒有註釋和優化可能會掩蓋某些代碼),但最終理解和修改起來要容易得多。
有代碼混淆器可用,使閱讀反編譯的.NET代碼更難理解,但總的來說,你應該總是假設總是有人能夠理解和反向工程你的代碼,即使你的代碼只是一個黑色框。
還有像SafeNet這樣的專業安全套件,例如Scramble/crypt native binary exe和DLL。 – alexbuisson
真的不建議使用這些:某些防病毒程序可能會將其代碼/活動標記爲可疑(試圖隱藏代碼),特別是當您無法快速建立巨大聲望時(例如大型/流行遊戲或類似被接受你的程序的用戶列入白名單)。如果您擔心盜版問題,請儘量做出公平定價,提供人們想要付費的東西。如果我們正在談論某種服務器/客戶端的事情,請仔細檢查服務器端的所有內容,不要只信任客戶端。 – Mario
如果我編譯它在單聲道? – CappyT
- 1. C++與C#類型安全
- 2. C/C++ tmpnam的線程安全性?
- 3. C# - 安全`sockets`與SSL
- 4. C# - InternalsVisibleTo屬性的安全問題
- 5. WCF - 在nettcpbinding中禁用安全性(c#)
- 6. 線程安全性 - 目標C
- 7. C#線程安全
- 8. C++常量安全
- 9. C安全手柄#
- 10. C#混合不安全/安全庫
- 11. 什麼是C/C++中的「安全」和「不安全」代碼?
- 12. Pro * C/C++通信是否安全?
- 13. 函數C++到C#(安全碼)
- 14. popen與KornShell安全性
- 15. Java安全性與ESAPI
- 16. 網站安全性與服務器安全性有多大?
- 17. Objective-C安全鑄造宏
- 18. C#枚舉類型安全
- 19. C#+ =線程安全嗎?
- 20. objective c安全頭文件
- 21. C#SSL安全套接字
- 22. C++線程安全和notify_all()
- 23. C++線程安全整數
- 24. 加密安全PRNG在C
- 25. 2D安全數組C++
- 26. C#變量線程安全
- 27. XML安全目標-c
- 28. OPC UA安全連接C#
- 29. C++線程安全映射
- 30. 安全.NET MVC C#,FormsAuthentication
「在查看編譯的可執行文件中的代碼方面」,C#.NET不會幫助您隱藏它。 –
我不明白這個奇怪的混淆二進制文件的迷戀。 對於什麼?有大量的開源項目的評論和所有被他們的作者放棄的 ,沒有人想要拿起它們。 不是他們是不好的項目,例如Gnome Do是好的,只是沒有人對此感興趣。 相信我,當有人感興趣足以反編譯一個二進制文件 - 沒有什麼會阻止他們。 但很可能沒有人會嘗試。 如果您通過默默無聞的方式來實現安全,那麼有更多更好的方法可以去。 –
第一:這個問題不是關於實際的代碼,對於StackOverflow太模糊;它應該被關閉。第二:如果你不希望用戶能夠反編譯你的超級祕密令人敬畏的代碼,而沒有其他人能拿出來,**首先不要給你的客戶二進制文件**。將代碼保存在您的服務器上並提供服務。然後,你必須防範的是服務器攻擊。反編譯任何語言都很容易,並且**大量的人可以讀取機器代碼**。這不像機器代碼的祕密。 –