2015会计从业题库M7.01 / Crack

最近电脑坏掉,正维修中今天告诉我登录不到系统 告诉对方密码

也没有办法进入系统,只有重装了哎,内存注入及几个重要函数

远过程汇编调用包括截包方面的代码是白写了 不过也没办法,

好了不谈那些 今天我介绍如何软破解一款《2015会计业题库

M7.01》的.NET软件 方法是“软破” 

我们去下载这个软件 http://pan.baidu.com/s/1i3o8dsL

在把它安装上,这里的步骤我就不说明了


把软件安装上后,在桌面或开始中会出现在这个图标,我们双击它

运行,会发现


一个对话框,要求我们输入产品秘钥 但是我们没有却需要用它怎么

做呢?只有去破解它才可以了。

右键它的快捷方式,属性,查找目标


我们看到它与桌面上快捷方式的图标不一样,但是不管他

总之目标文件就是它没错


右键“会计从业资格考试.exe”文件,如果你安装有.NET Refector

那么则会出现这个右键选项,我们单击它进去


咦,在.NET Refector中混淆过该程序引发“索引超出了数组界限”

的错误,那么可以判断该软件被混效过而且很大可能性是由

“.NET Reactor”混淆的,那么我们可以使用ILSpy去反汇编


由ILSpy打开“会计从业资格考试”后,我们发现好多命名空间有些是

不清楚的东西,那么我们怎么看呢?找有意义的命名,上面则有两个

一个“passwordCode”一个“会计从业资格考试”,所以我们先去看看

在“会计从业资格考试”命名空间中有什么


呀,一进去全是各种奇怪的命名 容我小小吐糟一下 那么到了这里

该怎么做,我们不可能一个一个分析 而由于该软件已被确定被混

淆过所以没办法使用搜索功能去搜索文本常量


我们只有粗滤通过命名估计是哪个,这个“CheckForm / 检查窗体”

相当可疑,所以我们先进去看看它的代码


上面的代码被混淆过,很难看出个具体 既然无法搜索文本常量

那么就在这个代码中找“窗体控件”的位置代码然后在比较一下


我们随意使用一个“窗口Spy"的工具,如上“彗星小助手”吧

窗口位置是“左边:24 顶边:48 尺寸:77x12”好的,现在我们

在ILSpy反编译CheckForm类中查找(CTRL+F)这个大小,

我们按照窗体设计器自动生成代码的格式“new Point(24, 48)”


填写在编辑框内,点击右光标键按钮 如上图找到了一个

相同的位置,那么基本可以确定我们要找的验证窗口在

这里,那么我们知道是通过“点击按钮”进行验证的而

窗口上只有一个Button而CheckForm的代码中也只有一

个Button那么可以确认它就是验证功能的按钮 我们需要

找到他连接的事件响应函数


但是很容易,熟悉VS/WinForm开发的人一定能很快的

反应过来确定就是这个button1_Click,那么我们看看

它的代码结构 很明显是一个简单的验证 验证成功后

把“注册码”保存下来,但是它的验证条件是

passwordClass.decode(“textBox2 / 注册码”)==“textBox1 / 机器码”

所以找到问题,那么我们就去点击“passwordClass.decode


现在我们需要打开VS了,新建一个项目ARECrack 可能有人问

passwordClass.encode 会有加密代码?那不可能啊 否则谁都给

它轻松破了对吧 这软件的Key别人花钱150一个...扯淡


它的解密算法原理相当简单,它如何解得我们就怎么加

加与解通常是相反的操作,它的解密有伤部分是 

text += str[i] - '\n' + '\u0005';

我们就修改成

 text += str[i] + '\n' - '\u0005';

好的把调试板的value的值复制到“你的执行码”编辑框

中在点击“点击验证”按钮


但是出现“你的机器码输入不正确,请联系管理员。”信息框

激活失败了,那么肯定是加密的代码有点小错误 怎么修改呢

我们观察它的 解密有伤部分 

text += str[i] - '\n' + '\u0005';

是上面的方式,那么会不会加密是有伤部分需要修改成

 text += (char)(str[i] + '\n' - '\u0005');

呢,好吧我们试试 


好的把调试板的value的值复制到“你的执行码”编辑框

中在点击“点击验证”按钮


破解成功,那么可以得出它的正确加密算法是

        static string encode(string str)
        {
            string text = "";
            for (int i = 0; i < str.Length; i++)
            {
                text += (char)(str[i] + '\n' - '\u0005');
            }
            return text;
        }

而它的正确解密算法是

        static string decode(string str)
        {
            string text = "";
            for (int i = 0; i < str.Length; i++)
            {
                text += (char)(str[i] - '\n' + '\u0005');
            }
            return text;
        }
.NET反编译软件都具备一定的缺陷,我们需要了解

上面的例子则很清楚 如果我们不动脑袋去思考的话

这个问题可能会困绕到很多人,但是我们努力去思

考去探索那么则一切都有可能、





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值