程式碼混淆軟體 DotFuscator 非常嚴重的問題,放在首頁通知一下各位。

daxi1047發表於2009-12-06

版本:

我使用的開發工具是VS2005, 自帶的是 DotFuscator Community Edition. 

 

版本號是:3.0.2005.16132

S/N: 000-00-000-391

版權資訊是:2002-2005 PreEmptive Solutions

 

問題簡要描述:

線上程中操作的物件會突然消失。 非常非常的嚴重。簡單可以看下面一個模型:

class Person

{

 private Tools tool;

在一個內部類person裡面,有一個內部域(Field) tool。如果這個類放在一個不斷迴圈的執行緒裡面,那麼tool會不定期、沒有原因的消失。

這種執行緒包括了:asp.net的連結操作、Thread操作、非同步操作。 


問題發現過程

開始的時候我以為是自己的水平問題,程式碼沒有寫好,但是反覆的debug並沒有發現任何問題。

 

後來我嘗試使用沒有混淆的程式碼和混淆的程式碼,明顯混淆的程式碼經常報空指標的錯誤。

天啊!!!是空指標!!這個是debug裡面最噁心的錯誤! 我看見NullPointReference的錯誤,每位程式設計師都會感到噁心的。

 

後來為了驗證問題,我使用了AOP,對一個類的所有public方法進行了檢視,每次呼叫除了列印傳入、傳出引數,還列印類內部的field值。

經過1小時的日誌跟蹤,發現:

1. 如果這個類沒有被操作,那麼內部資料不會丟失。 

2. 如果出現了新的執行緒(以上所說的)後,內部物件丟失。

3. 如果執行緒是一個長時間的操作(例如插入10w條資料記錄) ,大概在3000條的時候會不定期的發生內部物件丟失。


 

因此再次告訴各位程式設計師,千萬千萬不要使用dotfuscator,後果非常的嚴重!!!!!已經導致我的業務資料丟失了幾次了。損失慘重!

 

也希望如果有好的程式碼混淆軟體,推薦一下。畢竟,客戶端部署在外部,內部的加密演算法是不能夠隨便暴露的。

 

備註一下:

我現在正在和 PreEmptive 公司聯絡,希望他們對這個問題做出正確的解釋。有資訊會立刻放上來。

 

轉載於:https://www.cnblogs.com/zc22/archive/2009/12/06/1617871.html

相關文章