3
A
回答
9
一般來說,像Java,C#和VB.NET這樣的語言相對易於反編譯,因爲它們被編譯爲中間語言,而不是純粹的機器語言。在他們的IL形式中,它們保留比編譯爲機器語言時的C代碼更多的元數據。
從技術上講,你並沒有得到原始的源代碼,而是一個源代碼的變體,當編譯時,它會給你編譯的代碼。它與源代碼不一樣,因爲註釋,註釋和編譯器指令等內容通常不會被轉入編譯後的代碼中。
1
.NET很容易反編譯。最好的工具是RedGate最近收購的.NET reflector。
0
大多數語言都可以反編譯,但有些反編譯比其他語言更容易。 .Net和Java在可執行文件中提供了關於原始程序的更多信息(方法名稱,變量名稱等),以便您獲得更多原始信息。 (例如,我知道這是一個粗略的簡化),所以反編譯器不會知道什麼東西被調用。但是,儘管如此,你仍然可以獲得程序的一些結構。
0
4
託管語言可以很容易反編譯,因爲可執行必須包含大量元數據才能支持reflection。
像C++這樣的語言可以編譯爲本地代碼。在編譯\翻譯過程中,程序結構可以完全改變。
編譯器可以輕鬆替換\ merge \刪除部分代碼。原始和編譯(本地)代碼之間沒有1對1的關係。
相關問題
- 1. SqlCipher編譯爲Win可執行文件
- 2. 從.pro編譯可執行文件
- 3. image.get_serving_url()可以提供哪些類型的文件?
- 4. 可用的ELF可執行文件需要哪些部分?
- 5. gcc用「-static」編譯的可執行文件中包含哪些函數?哪些功能不是?
- 6. 將模型編譯爲可執行文件以實現更快的推理?
- 7. ,可執行編譯在編譯時
- 8. 編譯器是否只編譯可以執行的代碼?
- 9. 我可以混淆編譯的.NET可執行文件/程序集嗎?
- 10. 哪些常見的文檔類型可以在其中包含可執行代碼?
- 11. 關於multimap,可以成功編譯以下哪些內容?
- 12. 從哪裏可以獲得可執行文件在linux上
- 13. 將靜態文件編譯爲可執行文件
- 14. 如何將C文件編譯爲可執行文件(.exe)?
- 15. 運行與py2exe編譯的可執行文件時出錯
- 16. 在哪裏可以找到Visual Web開發人員2010中的asp.net編譯可執行文件快遞
- 17. 哪個C編譯器生成最小的本機Windows可執行文件?
- 18. 水銀執行某些文件類型
- 19. 在Mac上編譯簡單的C可執行文件以在Windows上運行?
- 20. Eclipse JDT編譯器可以增量編譯Java Source並通知編譯了哪些類?
- 21. 可執行文件是否可以將某些內容返回給其他可執行文件?
- 22. 是否可以輕鬆完全反編譯python編譯(* .pyc)文件?
- 23. 是否可以反編譯Android .apk文件?
- 24. 我們可以使用Android中的PDF文件執行哪些功能?
- 25. 是否可以在運行時創建「反彙編」類型?
- 26. 找出哪些可執行文件引用了.NET dll?
- 27. 如何知道可執行文件中有哪些功能?
- 28. 用C++編寫的Mozilla/GoogleChrome插件可以反編譯嗎?
- 29. 關於我和我的系統的哪些信息會使編譯器添加到可執行文件中?
- 30. 編譯「壓力ng」包的靜態鏈接可執行文件