2010-07-13 67 views
5

我正在尋找方法來混淆下面的C#/ Silverlight的源代碼:我正在尋找方法來混淆下面的C#/ Silverlight的源代碼

if (searchBox.Text.Equals("string literal")){ 
     MessageBox.Show("another string literal"); 
    } 

到目前爲止,所有我可以拿出來隱藏它正在編碼的字符串ascii數組...

我想要的是源代碼是不可讀的,這是一個復活節彩蛋。安全對我來說並不重要。謝謝。

我不想讓復活節彩蛋出現。我試圖混淆程序流,因此不會出現像有一種類似的代碼

if (specialcase) 
    doEasterEgg(); 

行我看到的東西上,如模糊ç競賽,世界你好變成globbidy對韓國人。類似於人們對c#的瞭解嗎?

+2

讓我猜猜:''字符串文字「'是祕密後門密碼? – dtb 2010-07-13 15:53:31

+1

@dtb:它在我看來更像是一個搜索框控件... – 2010-07-13 16:00:44

+1

@Mike Atlas:這只是爲了混淆反編譯代碼的讀者。 :-) – dtb 2010-07-13 16:24:34

回答

4

你想防範什麼?

  • 將控件的文本值傳輸到您的服務器?在這種情況下,任何非加密技術的「混淆」都會被攻擊者輕易克服。您應該查看encrypting your strings,而不是混淆它們。

  • 如果你想混淆你的源代碼本身,你真的應該讓a third party tool handle it。你自己發明的任何東西都可能很容易被逆向發明。

  • 編輯:如果你只是想隱藏一個復活節彩蛋,怎麼樣使用ROT13

  • 編輯2:如何分配它們誤導常量和引用他們在一個錯誤地命名的不同的靜態類?

// in other source file ValidateInput.cs 
public const VALID_STRING = "secret"; 

public class ValidateInput { 
    public static bool Validate(string srcText) 
    { 
     return srcText == VALID_STRING; 
    } 
    public static void LogicValidSearch() 
    { 
     return; 
    } 
} 

//In your main application 
if (ValidateInput.Validate(searchBox.Text)) { 
    ValidateInput.LogValidSearch(); 
} 
+0

那麼我知道一串加密字符串文字的方法,我參加了一個密碼學課程。但我不想讓任何人知道那裏是復活節彩蛋。所以我不能有一行代碼,看起來像 如果特殊情況: 做復活節彩蛋 有無論如何混淆該程序流?例如,像寫一個函數,並以某種方式把它放入一個DLL或任何東西?我實際上並不知道這意味着什麼,但我聽說它被拋棄了。謝謝 – NickHalden 2010-07-14 18:52:45

+0

看到我的新編輯... – 2010-07-19 15:05:52

+0

啊,是的,這就是我一直在尋找...迄今爲止最好的答案! – NickHalden 2010-07-20 13:06:44

1

這裏沒有足夠的代碼來有效地進行混淆。你唯一的選擇是散列「string literal」的值並加密「另一個字符串文字」的值。這種技術不安全,因爲你必須公開你的加密方法。