关于XenoCode加密的问题 我的dll,exe文件运行没有问题。但是当被xenocode加密后,就出现了空类型的错误,如:this.GetType().Assembly.CreateInstance(typename)。在为加密的时候返回是正确的。加密后就是null。请问有谁遇到过这个问题,怎样解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 混淆后那个类型已经变成一个没有意义的字符串了如果对使用了大量反射的程序集进行混淆的话,会出很多问题的,要解决也比较麻烦>_< 解密XenoCode加密的字符串:XenoCode会使用一个插入的类对程序集中的字符串进行保护。本文将结合 Reflector 和反射技术解密程序集中被加密的字符串。首先,我们使用 Reflector 对原程序进行 Disassembler,找到我们要解密的字符串代码。如: this.x80bb7e5ddf294933.SerialNumber = string.Intern(x1110bdd110cdcea4._d574bb1a8f3e9cbc('\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61', 0x555ddb55));找到要解密的字符串以后,开始编写反射调用代码。 class Program { public static void Main() { // 载入程序集,test.exe 为被混淆的程序集文件名。 Assembly asm = Assembly.LoadFrom(@'test.exe'); // 获取XenoCode插入的解密类型(包含其namespace),对应上面字符串前面的类名,每次混淆结果可能都不同。 Type type = asm.GetType('x293b01486f981425.x1110bdd110cdcea4'); // 字符串参数和解密参数 object[] parameters = {'\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61', 0x555ddb55}; Type[] paramTypes = new Type[parameters.Length]; for (int i = 0; i < parameters.Length; i++) paramTypes[i] = parameters[i].GetType(); // 调用解密方法 BindingFlags flags = BindingFlags.Public | BindingFlags.Static; MethodInfo method = type.GetMethod('_d574bb1a8f3e9cbc', flags, null, paramTypes, null); object result = method.Invoke(null, parameters); // 显示解密结果 Console.WriteLine(result); Console.WriteLine('Press Enter key to exit...'); Console.ReadLine(); } } 不过我觉得这样做相当多余的>_<如果你只是为了保护源代码的话,可以用其它方式的加密来代替混淆。 谁在MonoDevelop平台用C#作开发的,现在要连接mysql 不知道怎么样在ubuntu下安装mysql,谁知道? 菜鸟求助 MS SQL 保存byte[] 到Image 关于Webservice的问题 C#怎样实现换肤功能 C#中的反射 为什么闪烁得这么厉害呢? 打包的问题多多,,,顶者有粪。 在线等,求救~~!!20分,解决就结贴~!! 第二次点击按钮时怎样开始线程? 怎样在SQL Sever中实现交叉表 TextBox的问题,简单。 估计没人能解决,欢迎挑战自我者进入:VS2005 显示报表reportViewer1 and 报表Report1.rdlc
本文将结合 Reflector 和反射技术解密程序集中被加密的字符串。首先,我们使用 Reflector 对原程序进行 Disassembler,找到我们要解密的字符串代码。如: this.x80bb7e5ddf294933.SerialNumber = string.Intern(x1110bdd110cdcea4._d574bb1a8f3e9cbc('\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61', 0x555ddb55));
找到要解密的字符串以后,开始编写反射调用代码。
class Program
{
public static void Main()
{
// 载入程序集,test.exe 为被混淆的程序集文件名。
Assembly asm = Assembly.LoadFrom(@'test.exe'); // 获取XenoCode插入的解密类型(包含其namespace),对应上面字符串前面的类名,每次混淆结果可能都不同。
Type type = asm.GetType('x293b01486f981425.x1110bdd110cdcea4'); // 字符串参数和解密参数
object[] parameters = {'\udbac\ue2b7\ue9bb\uf0af\uf7b8\ufeb3\u05a8\u0c61', 0x555ddb55};
Type[] paramTypes = new Type[parameters.Length];
for (int i = 0; i < parameters.Length; i++)
paramTypes[i] = parameters[i].GetType(); // 调用解密方法
BindingFlags flags = BindingFlags.Public | BindingFlags.Static;
MethodInfo method = type.GetMethod('_d574bb1a8f3e9cbc', flags, null, paramTypes, null);
object result = method.Invoke(null, parameters); // 显示解密结果
Console.WriteLine(result); Console.WriteLine('Press Enter key to exit...');
Console.ReadLine();
}
}