我这里有一个C#的代码混淆器的源码,但是看不懂是怎么实现的,程序的算法是什么也不知道怎么找,求帮助
这个是源码的下载地址,最好能分析出框架http://pan.baidu.com/s/1hq5h82K...
这个是源码的下载地址,最好能分析出框架http://pan.baidu.com/s/1hq5h82K
展开
1个回答
展开全部
能力有限,只能说说我看到的东西。
代码混淆的触发是在函数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等方法。
具体算法怎么实现的,详细看看上面这些方法里面的代码吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询