来源:蜘蛛抓取(WebSpider)
时间:2015-12-03 05:44
标签:
maxtocode
&&&&maxtocode 3.5.0.705 专业版 完美破解版.rar
maxtocode 3.5.0.705 专业版 完美破解版.rar
完美破解,你懂的,本人亲测可用,
.NET 3.5你要勾下VS2008才行
若举报审核通过,可奖励20下载分
被举报人:
jiangliang57
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行MaxtoCode对.Net程序加密的原理及解密探讨(图)
日06:43 来源:
上一回我们试验了通过反射的方式获取method的源代码。 上一回我们试验了通过反射的方式获取method的源代码。 这次我们就用一个实例来演示dump一个程序集中的所有类型和方法的IL源代码。 首先打开VS2005 新建一个C#的windows程序: 在窗体添加添加一个2个button,2个label,一个textbox,一个checkbox,一个savefiledialog。 界面如下:事件代码如下: 1 public class Form1 : Form 2 3 // Methods 4 //选择IL字节码保存文件 5 private void button1_Click(t sender, EventArgs e) 6 7 if (this.saveFileDialog1.ShowDialog() DialogResult.OK) 8 9 this.textBox1.Text = this.saveFileDialog1.FileN 10 11 12 //点击开始dump。 13 private void button3_Click(t sender, EventArgs e) 14 15 this.button3.Enabled = 16this.DumpAssembly(Assembly.GetExecutingAssembly(),this.textBox1.Text); 17 MessageBox.Show("dump ok"); 18 this.button3.Enabled = 19 20 //这个函数将一个Assembly全部dump到path中。 21 private void DumpAssembly(Assembly ass, string path) 22 23 StreamWriter writer1 = new StreamWriter(path, false); 24 Type typeArray1 = ass.GetTypes(); 25 for (int num1 = 0; num1 & typeArray1.L num1++) 26 27 this.DumpType(typeArray1[num1], writer1); 28 29 writer1.Flush(); 30 writer1.Close(); 31 32 33 //dump单个类型,由dumpassembly调用 34 private void DumpType(Type tp, StreamWriter sw) 35 36 BindingFlags flags1 =BindingFlags.NonPublicBindingFlags.Public BindingFlags.StaticBindingFlags.InstanceBindingFlags.DeclaredO 37 string text1 = tp.ToString(); 38 sw.Write("TYPE: " + text1 + "\r\n"); 39 if (tp.IsEnum) 40 41 sw.Write("IsEnum "); 42 43 if (tp.IsImport) 44 45 sw.Write("IsImport "); 46 47 if (tp.IsNested) 48 49 sw.Write("IsNested "); 50 51 if (tp.IsClass) 52 53 sw.Write("IsClass"); 54 55 sw.Write("\r\n"); 56 if ((text1 != "InFaceMaxtoCode") !this.checkBox1.Checked) 57 58 sw.Write("**********Begin MrInfo**********\r\n"); 59 MrInfo infoArray1 = tp.GetMrs(flags1); 60 for (int num1 = 0; num1 & infoArray1.L num1++) 61 62 MrInfo info1 = infoArray1[num1]; 63 sw.Write(info1.MrType.ToString() + "\t"+infoArray1[num1].ToString() + "\r\n"); 64 if ((info1.MrType MrTypes.Method)(info1.MrTypeMrTypes.Constructor)) 65 66 this.DumpMethod((MethodBase) info1, sw); 67 68 69 sw.Write("********** End MrInfo**********\r\n"); 70 sw.Write("\r\n\r\n"); 71 72 73 74 75 76 //dump单个方法,由dumptype调用 77 private void DumpMethod(MethodBase mb, StreamWriter sw) 78 79 MethodBody body1 = mb.GetMethodBody(); 80 if (body1 != null) 81 82 byte buffer1 = body1.GetILAsByteArray(); 83 try 84 85 sw.Write("\tMaxStackSize: "+body1.MaxStackSize.ToString()); 86 sw.Write("\tCodeSize: " + buffer1.Length.ToString()); 87 sw.Write("\r\n"); 88 89 catch (Exception exception1) 90 91 MessageBox.Show("1:" + mb.ToString() + "\r\n"+exception1.ToString()); 92 93 foreach (LocalVariableInfo info1 in body1.LocalVariables) 94 95 sw.Write("LocalVar: " + info1.ToString()); 96 sw.Write("\r\n"); 97 98 sw.Write("\r\n\r\n"); 99 StringBuilder builder1 = new StringBuilder(); 100 foreach (byte num1 in buffer1) 101 102 builder1.Append(num1.ToString("X2")); 103 104 sw.Write(builder1.ToString()); 105 sw.Write("\r\n\r\n"); 106 foreach (ExceptionHandlingClause clause1inbody1.ExceptionHandlingClauses) 107 108 sw.Write(clause1.ToString()); 109 sw.Write("\r\n"); 110 111 sw.Write("\r\n"); 112 113 114 115 116 117 118 119 120 121 编译这个程序,运行,dump出il字节码, 然后拿 maxtocode加密。再运行,dump出il字节码,然后找一个method如button1_click,比较一下他们的IL字节码是否一样。 当然结果应该是一样的。 这里主要有三个关键函数 private void DumpAssembly(Assembly ass, string path); private void DumpMethod(MethodBase mb, StreamWriter sw); private void DumpType(Type tp, StreamWriter sw); 这三个就是一个例子演示如何dump整个程序集。
【作者:佚名 来源:】
(责任编辑:和讯网站)
05/18 11:1505/13 10:2505/13 10:2505/13 10:2505/05 10:14
感谢您的参与!查看[]
script src="/track/track_xfh.js?ver="> 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
MaxtoCode对 Net程序加密的原理及解密探讨
下载积分:400
内容提示:这里研究的对象是MaxtoCode 3 1试用版 这里只探讨程序代码的加..
文档格式:PDF|
浏览次数:171|
上传日期: 16:32:55|
文档星级:
该用户还上传了这些文档
MaxtoCode对 Net程序加密的原理及解密探讨
官方公共微信MaxtoCode对.Net程序加密的原理及解密探讨二-中国学网-中国IT综合门户网站
MaxtoCode对.Net程序加密的原理及解密探讨二
来源:互联网 更新时间: 15:32:04 责任编辑:鲁晓倩字体:
MaxtoCode对.Net程序加密的原理及解密探讨二&自上次写第一篇文章到现在不知不觉两个月过去了,这篇文章我们将介绍怎么获取解密后的IL字节代码。我们先回顾一下前文,在上一回我们提到&InFaceMaxtoCode.Startup&正常启动后,在整个程序集中只会运行一次。&。当时这种说法是很武断的,如果&&InFaceMaxtoCode.C______(num2,&num3)&&的返回值总是&false的话,该函数就会被执行多次,不过根据后来动态调试的结果,我们证实了&InFaceMaxtoCode.C______(num2,&num3)&&的返回值为&true,因此上次的说法是正确的。现在言归正传,怎么取得解密后的代码呢?大概两个方向,1.正面交锋,直接攻破maxtocode的运行库。这就将问题直接回到了传统的win32层面,不过这个东西是业内人士写的在这方面的保护工作做得很好,像我这样的菜鸟就很难直接攻破了。我曾有一个设想,就是通过分析运行库找到解密函数的入口,然后弄一个stub&dll,hook这个地方,把解密后的il代码dump出来。实际跟踪几次后我就放弃了。从跟踪到的信息来看,我猜测,运行库是通过&mscorwks.dll&挂接到&jit,在jit的前面实时解密代码。理论上我们也可以挂一个到jit前面,在那里dump解密的il代码,不过这个实现的方式,还不清楚,如果弄明白了,也就能写一个同样原理的加密软件了。这个难度比较大,所以我最终放弃了这个方案。2.避开运行库,我们直接利用dotNet&2.0的特性获取IL代码。如是我就试着用2.0写了一个winform程序,加密,运行,发现报错。maxtocode3.1不支持2.0的winform程序,这就使我的这个方案实验夭折了。两个月过去了,发现maxtocode升级到3.11了修正了这个bug,今天终于可以继续实验了。我们来建一个简单的winform程序。一个窗体,然后一个按钮。代码如下:&1&using&S&2&using&System.Collections.G&3&using&ponentM&4&using&System.D&5&using&System.D&6&using&System.T&7&using&System.Windows.F&8&using&System.R&9&using&S10&namespace&Test511&{12&&&&&public&partial&class&Form1&:&Form
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号