彻底破解Dotfuscator

破解

前阵子有网友叫我帮忙破解一个控件.用Dotfuscator混淆了的,字符串也加密成这种形式
IL_2b19: ldstr bytearray (9F FA 9A FC 9E FE 8B 00 6E 02 71 04 ) // ........n.q.
IL_2b1e: call string a$PST06000001(string)

.net软件的保护方法无非就是限试用时间,限访问IP,用license key,运行时显示版权提示这几种.
限时间或IP是最容易搞定的,不论有没有被混淆,他都要调用framework的东西,而framework里的东西无法混淆,所以查找DateTime, Request之类的字眼,几下就搞定.
如果用key,也容易跟踪,起码他对外曝露了一个类来接收key.如果控件在检查到在非法使用时抛出个异常,那是个更愚蠢的做法,因为.net会提供出错时的调用堆栈,方便我跟踪.显示版权提示而且字符给混淆的就最难办了(没混淆的倒是容易,查找就是了)因为他从来不会像正式版那样工作.
唯一难倒我的控件是Intersoft WebGrid.net 3.5,因为他用Remotesoft Protector处理过.这Protector不算混淆器,他是把.net的代码做成win32镜像,只把元数据保留.破他处理过的控件和破加了密的win32程序一样难,我没这样的本事.当然使用这东西的软件也很少,因为太贵了,要上千美金
这次破的是一个Chart控件的试用版,他在渲染图表时留下了淡淡的声明版权的水印.要破他只能从他混淆字符串的函数入手了,就是string a$PST06000001(string).要写个逆运算的函数
用反编译器反编译了这个函数:
private static string a(string A_0)
{
char[] chs = new char[(uint)A_0.Length];
int i = 732379897;
for (int j = 0; j < (int)chs.Length; j++)
{
char ch = A_0.Chars(j);
byte b1 = (byte)(ch & '\u00ff' ^ i++);
byte b2 = (byte)(ch >> '\b' ^ i++);
chs[j] = (ushort)(b2 << 8 | b1);
}
return string.Intern(new string(chs));
}
第一眼看来,好像很难下手.混淆过程竟然又AND又移位又XOR又OR,还有两个中间变量,然后又混在一起...但是这个算法一定是可逆的,不然他怎么能被加密然后解密.果然,仔细一看,里面有很多地方是吓唬人的.本来AND和OR根本是不可逆的,可以肯定相关的运算是废的:
第一句byte b1 = (byte)(ch & '\u00ff' ^ i++);b1是8位整数,所以ch & ff根本不会改变什么,于是可以简化为(byte)(ch ^ i++)
第二句byte b2 = (byte)(ch >> '\b' ^ i++);没看到什么不妥,ch是16位的,右移8位可能会有影响
第三句chs[j] = (ushort)(b2 << 8 | b1);又在唬弄人了,b2是8位,右移8就是0了,0|b1就是b1
好了,简化后的函数是
private static string a(string A_0)
{
char[] chs = new char[(uint)A_0.Length];
int i = 732379897;
for (int j = 0; j < (int)chs.Length; j++)
{
char ch = A_0.Chars(j);
chs[j] = (byte)(ch ^ i++);
i++;
}
return string.Intern(new string(chs));
}

这下就简单了,^的逆运算就是^,他本身就是加密方法!我可以根据水印的字符去il里查找了,不过这里还有个唬人的地方,因为这函数用byte来处理,所以混淆后的高8位应该是0,但是il里混淆的字符串高8位还有东西,明显是随机加上去的,对解密结果没影响.于是,我把加密后的字符用通配符来查找,例如9F ?? 9A ?? .找到了显示版权信息的函数了,把它清空,搞定!
这竟然还是ms推荐的混淆器...

Posted by Yok at September 7, 2004 09:48 PM | TrackBack

Comments
Yok 竟然成为 .Net 破解高手了?

时间: 2024-08-04 09:01:36

彻底破解Dotfuscator的相关文章

如何保护.net中的dll文件(防破解、反编译)

.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行.中间语言很容易被反编译,所以研究下如何有效的保护dll文件. 我大致的方法为 :强签名+混淆+加密. 强签名 强命名程序集,可以确保你的程序集唯一,而不被篡改.冒用等:即使相同名字的程序集如果签名也会不同. 强签名很简单,本站另一文章已经详细进行了讲解,请参考:http://www.cn-web.com/shtml/article/net /fxsj/2009

利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)

原文:利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)      Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还可以修改已有的程序集,并且它支持多个运行时框架上例如:.net2.0/3.5/4.0,以及silverlight程序 官方地址:http://www.mono-project.com/Cecil      首先,我先假想有一个这样的商业组件,该组件满足了以下条件: 1. 该程序集的代码被混

C#使用Dotfuscator混淆代码以及加密

原文 http://www.cnblogs.com/tianguook/archive/2012/10/06/2713105.html C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用Dotfuscator可以实现混淆代码.变量名修改.字符串加密等功能. 这里介绍的是DotfuscatorPro_4.9.7750_2.0 版本,有需要的可以到网上搜索下载https://skydrive.li

用dotfuscator混淆器混淆后的dll,怎么调用不了??急!

问题描述 用dotfuscator混淆器混淆后的dll,怎么调用不了??急!混淆后的dll里面的类名,方法名都变了,可是程序也调用不了这个dll了,要这样的混淆器有什么用呀.请教一下,怎么解决这个问题. 解决方案 解决方案二:还没混淆破解的人先把自己混淆了...解决方案三:估计是混淆的时候勾选了混淆方法名吧你在看看混淆的设置解决方案四:混淆本来就很多问题.你需要混淆exe关联这些dll.一般混淆的东西,你过多使用反射的情况下都有问题.解决方案五:引用1楼的回复: 还没混淆破解的人先把自己混淆了.

C#用Dotfuscator混淆器加密代码的方法

C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用VS自带的Dotfuscator可以实现混淆代码.变量名修改.字符串加密等功能. 我使用的是 Dotfuscator 4.2 PRO 版本,有需要的可以到网上搜索下载 Dotfuscator Professional Edition 4.9破解版本.安装 Dotfuscator 好 打开界面,有几个需要配置的地方: Options.Input.

破解NET的四大神器(转)

原文地址 原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了.而我竟然在发现这神器组合后推迟了一周才分享与大家!        在开始分享之前,还是要说明一点,说是神器到目前为止也仅仅是对我自己而言,至于这四大神器会不会成为对各位而言的神器就不得而言了,因此当有哪位亲拿到这四大神器后仍然感到破解NET程序存在很大困难,请拍砖.        先介绍一

无线路由器的密码可以破解?

1.首先很多网友会想到的就是那些在淘宝上卖的那种蹭网卡.个人觉得这些蹭网卡到底有没有用都不知道,它们是通过这些BT3.BT4等破解工具结合蹭网卡来实现密码破解.电但是这些蹭网卡需要几百块钱去买就有点划不来.而且这些去一些违法侵权的行为,虽然造成不了严重的伤害及危害.但是小编个人建议最好还不要用蹭网卡的好. 2.当然除了那些蹭网卡可能可以破解无线密码的话,还是可以通过一些工具来破解无线路由器密码.目前常见的无线路由器上网密码破解主要是采用BT3.BT4等破解工具结合蹭网卡来实现.只能破解WEP.W

防止暴力破解Win8系统密码的方法

  1.使用图片密码登录windows8系统时,可以先将鼠标指针移动到屏幕右侧,弹出Charms控制面板,选择"设置"选项后,按下最下方位置的"更改电脑设置"按钮,进入电脑设置更改页面.从该页面的左侧列表中,点击"用户"标签. 2.其次在该页面的"登录选项"位置处,点击"创建图片密码"按钮,弹出图片密码创建向导对话框,按照提示首先输入旧的登录密码,再选择一种自己很熟悉的图片,建议大家尽量选用比较规整的,或者

[华为机试练习题]4.简单密码破解

题目 描述: 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码. 他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6,