2013-01-09 22 views
1

我使用Microsoft Visual Studio 2012,我想用本地C++編寫應用程序。我不希望使用Manged Code(.NET)的原因是因爲我不希望我的應用程序使用.NET Reflector等工具反編譯回源代碼,但如果我仍然可以使用它UI(CLR Windows窗體)在我的應用程序中。這個C++項目可以用像.NET Reflector這樣的工具來反編譯嗎?

但是,當我加入UI(CLR Windows窗體)到我的Win32項目此彈出消息:

message

這是否意味着,從現在起我所有的項目將不會被編譯成本地代碼,並有可能反編譯整個我的應用程序與像.NET反射器這樣的工具?

或者它將被「混合」(本地代碼+託管代碼)項目螞蟻將不能反編譯整個應用程序與像.NET反射器這樣的工具只有它的一部分負責UI?

P.S. 是的,我知道任何應用程序都可以被反編譯(!!!),但是我正在詢問有關基於.NET的應用程序的反編譯工具。使用.NET Reflector,您可以從.NET應用程序中「獲取原始源代碼」。所以我的問題是,是否有可能從這個應用程序中「獲取原始源代碼」,或者它會以某種方式「混合」代碼(manged + native),並且不可能將其反編譯回原始帶有.NET Reflector這樣的工具的源代碼?

+7

永遠不要忘記,如果機器可以運行一個程序,有人可以反編譯你的程序。 – Bestter

+0

這將是一個混合項目。 – slugonamission

+1

除非我錯誤地誤會,否則它會告訴你(如果你批准),它會將C++編譯爲C++/CLI。 IOW,如果你點擊「是」,它就會完成你想要避免的事情。 –

回答

3

如果「反編譯」menas「返回原始源」,在可執行文件中沒有任何符號表的情況下,將不可能。

如果「反編譯」的意思是「獲取與原始語義等價的用戶可修改代碼並且可以編譯回可執行程序」,這總是可能的(即使通過直接修改機器代碼本身:理解它!)。這對於大型觀衆來說是如何可以理解的,這就是另一回事。

營銷的一般規律說:「唯一不能複製的是永遠不會被銷售的東西!」這與軟件的物理性質有關。沒有解決方法(除了另一個宇宙)

+0

是的,我知道任何應用程序都可以被反編譯,但是我正在詢問有關基於.NET的應用程序的反編譯工具。使用.NET Reflector,您可以從.NET應用程序中「獲取原始源代碼」。所以我的問題是,是否有可能從這個應用程序中「獲取原始源代碼」,或者它會以某種方式「混合」代碼(manged + native),並且不可能將其反編譯回原始帶有.NET Reflector這樣的工具的源代碼? – user1961297

+0

您的應用程序的託管部分可以通過.NET工具(如Reflector)進行反編譯。您的應用程序的本地部分不能(但可以通過其他工具進行反編譯,儘管結果不像原始源代碼那麼接近) – jalf

+0

@jalf因此,管理和本機代碼將以某種方式混合並存儲在單個文件中(如果我將選擇將其編譯到單個EXE中)。NET反射器將能夠只採用託管代碼的飲用水?如果這是真的,那對我來說聽起來不錯。 – user1961297

相關問題