dotnetCHARTING v7.0去水印记录
来源:互联网 发布:淘宝上的电棍叫什么 编辑:程序博客网 时间:2024/05/10 20:27
官网下载的dotnetCHARTINGv7.0在底部和右上部带有水印和官网的链接。尝试清除这两部分。在这里记录操作步骤。
一、Web控件和winform控件部分
Web控件和winform控件破解的步骤相同,只是具体的函数不同,以web为例说明。
1、准备ildasm和ilasm。用ildasm生成中间代码。
2、里面有两张水印图片,用ps制作成透明图片。
3、打开il文件,发现字符串被加密,无法通过查找文本定位相关代码。通过观察得知
所有字符串转为了bytearray (A2 9F A4 ED A6 F5 A8 97 ) 形式存储;
调用全局函数string a$PST06000001(string, int32) /* 06000001 */解密字符串。
4、用Reflector7.7打开dotnetCHARTING.dll文件。dll被混淆了。在全局函数部分查找到string a$PST06000001(string, int32) 的定义。但是该函数
有语义错误,无法正确解密字符串。
5、换用dotPeek打开dotnetCHARTING.dll文件。string a$PST06000001(string, int32) 的定义目测没有问题,使用该函数尝试解密一个字符串(dotPeek中反编译出来的),能够得到有意义的文字。函数string a$PST06000001(string, int32) 的string参数为dotPeek中反编译出来的字符串;int32参数在每个函数的开头定义。
6、对比dotPeek中反编译出来的字符串与il中的bytearray 。发现bytearray 中使用了unicode方式编码。改写string a$PST06000001(string, int32) 的实现部分,使其能解密bytearray 。
private string winarr(string str, int count) { str = str.Replace(" ", "").Replace("\t", "").Replace("\0",""); Char[] chartmp = new Char[str.Length /4]; string tmp = ""; for (int i = 0; i < str.Length; i += 4) { tmp = str[i + 2].ToString() + str[i + 3].ToString() + str[i].ToString() + str[i+1].ToString(); chartmp[i / 4] = (Char)int.Parse(tmp, System.Globalization.NumberStyles.HexNumber); } int num1 = 755457428 + count; int num2 = 0; int num3 = 1; if (num2 < num3) goto label_2; label_1: int index1 = num2; char[] chArray2 = chartmp; int index2 = index1; int num4 = (int)(short)chartmp[index1]; int num5 = (int)byte.MaxValue; int num6 = num4 & num5; int num7 = num1; int num8 = 1; int num9 = num7 + num8; byte num10 = (byte)(num6 ^ num7); int num11 = 8; int num12 = num4 >> num11; int num13 = num9; int num14 = 1; num1 = num13 + num14; int num15 = (int)(byte)(num12 ^ num13); int num16 = (int)(ushort)((uint)num10 << 8 | (uint)(byte)num15); chArray2[index2] = (char)num16; int num17 = 1; num2 += num17; label_2: int length = chartmp.Length; if (num2 >= length) return string.Intern(new string(chartmp)); else goto label_1; }7、按行读取il文件,把其中所有的bytearrary解密为可读的字符串。需要注意的是:需要读取每个函数开头定义的int变量的值,因为这个值是解密函数的第二个参数
FileStream fileW = new FileStream(@"D:\wintxt\1.txt", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter sw = new StreamWriter(fileW, Encoding.ASCII);//D:\当前项目使用\测试\WindowsFormsApplication1\WindowsFormsApplication1\t.cs FileStream fileStream = new FileStream(@"D:\1\w.il", FileMode.Open, FileAccess.Read); StreamReader streamReader = new StreamReader(fileStream, Encoding.ASCII); fileStream.Seek(0, SeekOrigin.Begin); String content = @streamReader.ReadLine(); int count = 0; bool isInArr = false; string arr = ""; while (content != null) { if (content.Contains("0x")) { int ind = content.IndexOf("0x"); try { count = int.Parse(content.Substring(ind + 2).Trim(), System.Globalization.NumberStyles.HexNumber); } catch { } } if (content.Contains("bytearray")) { isInArr = true; arr = content.Substring(content.IndexOf("bytearray (")+11); } if (isInArr && content.Contains("IL_") && !content.Contains("bytearray")) { isInArr = false; if (arr.IndexOf(")") > 0) arr = arr.Substring(0, arr.IndexOf(")")); string tt = winarr(arr, count); sw.WriteLine(tt); //Console.WriteLine(tt); sw.WriteLine(content);//多输出一行,便于在il文件中定位。 sw.Flush(); } if (isInArr && !content.Contains("bytearray")) { if(content.IndexOf(")")>0) content= content.Substring(0, content.IndexOf(")")); if (content.Contains("/")) { content = content.Substring(0, content.IndexOf("/")); } arr += content.Trim(); } content = streamReader.ReadLine(); }8、在新生成的文件中查找相关文本:www、development、visit。然后在il中找到使用这些文本的函数,更进一步在dotPeek中找到该函数。查找规律发现this.b5 & this.b6是条件(winform中是this.b4 && this.b5),只要改为!this.b5 & !this.b6即可去除水印。在il中具体为bool dotnetCHARTING.bj/*02000251*/::b5和bool dotnetCHARTING.bj/*02000251*/::b6;把紧跟在这两个函数后面的brfalse改为brtrue。
9、重新生成dll文件(winform中需要删除il中publickey,hash,publickeytoken,以去掉强名称)。
10、把web控件覆盖官方例子中的对应文件,在网页中查看,成功。
11、winform控件无法在官方例子中使用,因为生成时使用了高版本的ilasm。在vs2010中新建项目(注意项目使用的framwork版本,我的默认使用framwork4 client profile,不能添加到工具箱,改为framwork4 成功)。添加引用,添加到工具箱;复制官方例子中的代码;成功执行。
二、silverlight部分
这一部分没有混淆,水印类为CABand;查找调用该类的代码,进行相应处理即可。
下载地址:
http://download.csdn.net/detail/shmiluwabi666/4888867
- dotnetCHARTING v7.0去水印记录
- 去水印
- PPT 去水印
- FlashBuilder4去水印
- 去图片水印
- krpano-tools去水印
- vdWebControl.js去水印
- flex AdvancedDataGrid去水印
- Highcharts去水印
- icePDF去水印方法
- csdn博客去水印
- icepdf去水印方法
- go.js去水印
- CSDN Markdown去水印
- 关于ps去水印新方法(提高去水印效率)
- visifire 3.6.4去水印
- CSDN博客去图片水印
- python opencv去图片水印
- 快速排序
- twitter开放平台
- zoj 3165
- 生活的轨迹
- CSS BOX类型和display属性
- dotnetCHARTING v7.0去水印记录
- android 用LruCache读取大图片并缓存
- log4cplus使用帮助文档基础详解
- 用VC++制作QQ自动登陆软件
- 准备将《C/C++函数与算法速查手册》改版,欢迎大家多提宝贵意见,有什么错误欢迎指正,谢谢
- android接触
- ubuntu awesome
- ffmpeg入门学习——文档1:制作屏幕录像
- zencart 学习笔记 ——canonical标签