2010-05-05 76 views
4

我今天在使用.Net反射器,並意識到Miicrosoft的整個Expression套件都是用.Net編寫的。因此,我幾乎可以看到表達式的底層代碼。這使得它比二進制更容易打破複製保護。我認爲這是一件大事。通常建議在.Net中製作商業軟件,在源代碼中可以很容易地看到變量名稱?我感到驚訝的是,微軟至少沒有公開點名。謝謝將.Net用於商業軟件是一個好主意嗎?

+0

事實上,大多數情況下重寫將比反向工程更容易,除保護複製方案外,還有其他機制可以保護知識產權。 – CurtainDog 2010-05-05 01:58:19

回答

4

我會考慮能夠將所有方法反轉回變量名稱(也許是評論)的一個功能。 .NET Reflector和Java Decompiler相當不錯。

即使它是用C或C++編寫的,對於RCE來說也沒有任何意義。人們在閱讀大會的時候剪下牙齒,用OllyDBG,IDA Pro等修補它們。微軟也提供了自己的工具來翻轉原生代碼。考慮到商業Java和.NET軟件已經存在多少(以及它的反編碼是多麼容易),我懷疑使用.NET,通過Java,通過C++,C或彙編比較起來會有多大的不同它是要找回原始的源表單。儘管如此,我遇到的大多數商業.NET軟件都將其程序的核心寫入(似乎是)C++庫,然後通過.NET應用程序與其進行交互。

5

任何值得購買的應用程序 - 尤其是像Expression這樣的大型應用程序 - 都沒有任何一項功能,如果拆解和複製會降低其競爭優勢。

另一個極端是,反彙編和複製整個代碼庫是毫無意義的 - 因爲這會非常明顯。

簡而言之,我們在這裏不是在說助熔電容器。

+1

我只是提到繞過許可 – jmasterx 2010-05-05 02:03:04

2

你在反射鏡中看到的東西被反編譯IL。除了更改標識符名稱之外,沒有實際的方法來對其進行混淆。

無論您是否對其進行混淆處理(混淆或二進制代碼只需要更長的時間來進行反向工程),確定的黑客總是會對您的代碼進行反向工程。許可算法也一樣。

-1

是的,.NET是一個可行的商業平臺,但我們(意思是我共同創立的公司OffByZero)強烈建議您在.NET和Java中使用混淆器來實現敏感代碼。從Developing for Software Protection and Licensing

如果您在.NET或Java, 正在開發航運是非混淆的應用 幾乎等同於航運 源代碼形式。如果您擔心 關於知識產權 您的代碼(尤其是如果您是 與可能暴露商業機密的時尚 連接的設備),那麼您需要使用質量混淆器(012f)。

...

要注意,沒有 軟件保護解決方案可以 保證100%牢不可破是很重要的; 從根本上說,一旦你的二進制文件在 另一臺機器上,你已經放棄了 完全控制它。我們的目標應該是 結合使用高品質的軟件 許可證制度 混淆,以使它很難& 耗時要破解軟件, 從而提高了吧足夠 高,以保護您的收入。

相關問題