2010-07-13 58 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”的值并加密“另一个字符串文字”的值。这种技术不安全,因为你必须公开你的加密方法。