我这里有一个C#的代码混淆器的源码,但是看不懂是怎么实现的,程序的算法是什么也不知道怎么找,求帮助

这个是源码的下载地址,最好能分析出框架http://pan.baidu.com/s/1hq5h82K... 这个是源码的下载地址,最好能分析出框架http://pan.baidu.com/s/1hq5h82K 展开
 我来答
百度网友8e2a3c8
2014-04-16 · TA获得超过958个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:385万
展开全部

能力有限,只能说说我看到的东西。

代码混淆的触发是在函数btnGenerate_Click里面

//这里声明了一个混淆器
Obfuscator obfuscator = new Obfuscator(txtBuildPath.Text, 
                                       chkObfuscateTypes.Checked,
                                       chkObfuscateMethods.Checked, 
                                       chkObfuscateNamespaces.Checked, 
                                       chkObfuscateProperties.Checked, 
                                       chkObfuscateFields.Checked);
//这里把窗口的数据写入混淆器
foreach (TreeNode node in tvAssemblies.Nodes[0].Nodes)
{
obfuscator.AddAssembly(node.Text, node.Checked);

// Exclusions
foreach (TreeNode typeNode in node.Nodes)
if (!typeNode.Checked)
obfuscator.ExcludeType(((Type)typeNode.Tag).FullName);
}
//这一句开始执行混淆算法,并保存
obfuscator.StartObfuscation();

而具体的混淆算法在文件\Obfuscation2\Obfuscator.cs中。

详细在函数AsyncStartObfuscation中。

public void StartObfuscation()
{
Thread thread = new Thread(new ThreadStart(AsyncStartObfuscation));
thread.Start();
}

private void AsyncStartObfuscation(){...}

在这个函数里面,执行ObfuscateType、ObfuscateNamespace、ObfuscateResource等方法。而在ObfuscateType里面又分别执行ObfuscateMethod、ObfuscateProperty、ObfuscateField等方法。


具体算法怎么实现的,详细看看上面这些方法里面的代码吧。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式