2010-03-31 27 views
1

我通常不會打擾混淆Web應用程序DLL,但現在我必須與某些可能有利益衝突並可能試圖竊取該交易的人共享某個服務器空間並反編譯它。不是我知道的理想解決方案,但嘿。混淆ASP.Net DLL打破網絡應用程序

所以我使用VS 2005,一個web部署項目(編譯成單個DLL)和Dotfuscator社區版本。當我混淆DLL的Web應用程序休息和我得到這樣

Could not load type 'Browse' from assembly MyAssembly 

一些消息,所以我搜索了一圈,發現,如果我禁用,然後重新命名它應該修復它。它做什麼。但現在,當我使用.Net反射器查看DLL時,我可以再次看到所有內容。所以這似乎毫無意義。

有沒有辦法讓這個工作? 有沒有更好的方法來保護我的DLL與我不得不共享服務器的人?

更新:

我想通了我的問題。所有的類名已經改變,但現在我所有的

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mycode.aspx.cs" Inherits="mycode" %> 

是不正確的,因爲mycode不再存在。它現在是一個什麼東西。是否有任何工具可以改變Codefile和Inherits標籤的名稱?

+1

爲什麼你不得不與可以從竊取你的代碼中受益的人共享硬件? – hunter 2010-03-31 18:21:45

+0

長話短說。也許不是最好的SO:D – uriDium 2010-03-31 19:00:02

回答

1

您已接近解決方案。 在你的情況下,我不知道在哪個上下文中使用了'Browse',但是你是否將它作爲一個字符串引用?

當您以某種方式使用它時,有些東西根本無法混淆。

例如,當您將自定義對象綁定到控件時。您已指定爲值成員的顯示成員的屬性不能被混淆。 這是因爲屬性被定義爲一個字符串。所以在設計時,控制和實際屬性之間沒有任何聯繫,但是在運行時有。 我不知道如何更好地解釋它;但這裏有一些代碼:

// custom object 
Public Class MyObject 
{ 
    string Test() { get; set; } 
} 

// here the object is bound to a combobox 

MyCombo.ValueMember = "Test"; // The Test property cannot be obfuscated because of this 'indirect' reference. 
MyCombo.DisplayMember = "Test"; 
MyCombo.DataSource = lstListOfMyObjects; 

希望它能解決您的問題。如果沒有,請告訴我。

+0

我認爲瀏覽類型是.Net類型,但它不是。這是我的哈哈。它屬於母版頁,因爲我使用了母版頁。然後我試圖排除我的母版頁類型,但是現在當我添加排除項時,我無法構建dotfuscator。 – uriDium 2010-03-31 18:36:05

+0

我認爲你必須在排除混淆的部分的情況下稍微玩一下。 – Rhapsody 2010-04-01 05:34:41

0

我從未使用Dotfuscator社區版,但嘗試查看是否只能重命名私有類型變量。這應該使它更難以看到。海事組織大多數混淆器都有問題,當你發現一個錯誤時,他們希望你發送你的代碼,以便他們能夠解決這個問題。我發現大多數商業版本的問題,但也許他們在過去幾年裏變得更好...

0

對於asp.net我不知道一個快速的出路。我發現最快的方法是Secure Team's代碼保護功能。它離開界面,但加密所有的il,並使人難以扭轉它。

Asp.net是棘手的,因爲所有的動態解析和反射使用一旦你開始改變它變得脆弱的東西的名稱,並需要整個其他輪測試,以確保一切都加載和沒有中斷。

0

我們需要類似的東西,並嘗試bitHelmet。它爲某些已知可由框架按名稱訪問的對象提供了預定義的排除,例如Web.UI.Page Descendants。它完美適用於網絡應用程序。