sco4x0 发表于 2016-5-30 09:53

.Net破解之某关键词工具

本帖最后由 云在天 于 2019-6-7 13:12 编辑

看了@我也是个傻瓜 大大的某篇帖子后,果断选择了dnSpy,抛弃Reflector,_(:з」∠)_
本教程只能用于学习研究,不可进行任何商业用途。如有使用,请购买正版,尊重他人劳动成果和知识产权!

首先PEid查下


那么直接放到dnSpy中看一下


发现是加了混淆,用DotNet Id查一下是什么


不太清楚这一块的东西。 抽时间好好学学,直接用de4dot来脱一下看看


成功了,再用dnSpy载入发现正常了,虽然里面还有一些伪代码,但是不影响阅读了
先来看看这个程序的流程,打开后是一个登陆界面,根据提示,可以找到这个窗口对应`login1`,登陆按钮点击事件是`Button2_Click`,免费试用按钮点击事件是`Button1_Click`


直接点击免费试用进入`MainForm`,发现最上面是一个`MenuStrip`,看到里面的一些信息


最显眼的无非就是`到期日期:免费版`,那么在`MainForm`中搜索一下`免费版`这个关键字

在`MainForm_Load`中,可以看到这么一些代码





似乎仅仅是和`lblver.Text`做了比较处理?找了找控件发现`lblver`其实是`ToolStripMenuItem`,而且还做了属性封装,取值返回的直接就是一个控件,一开始还以为是能直接修改返回text的

回过头来看看,点击免费试用之后的处理



`method_21()`这个方法是得到一个`MainForm`的实例,将其中的`lblver`强制命名为免费版,那么将这里更改成专业版之后看一下



功能比对,可以发现这里很多限制都已经去掉了,但是可以发现在一些地方仍然是免费版,比如



不过这问题不大,仅仅是显示而已,可以看到功能还是专业版的功能,但是其他一些地方就是这样



这里感觉很奇怪,明明都在MainForm中,为什么验证方法会不一样呢,于是再搜索一下这些地方的验证过程是什么样的

找到两处明显不同的验证代码如下:

if (Class6.bool_10)
                {
                        goto IL_235;
                }
                IL_1E0:
                num2 = 35;
                Interaction.MsgBox("免费版不支持此功能!\r\n请升级正式版!", MsgBoxStyle.Information, "提示");
                IL_1F5:
                num2 = 36;
                int arg_22A_0 = this.Handle.ToInt32();
                string text = "Open";
                string text2 = "http://www.zhanshensoft.com/price.html";
                string text3 = "";
                string text4 = "";
                MainForm.ShellExecuteA(arg_22A_0, ref text, ref text2, ref text3, ref text4, 1);
                IL_230:
                goto IL_E55;
                IL_235:
                num2 = 39;

if (!Class6.bool_8)
                {
                        Interaction.MsgBox("免费版不支持数据自动保存和导出,且最多挖掘1000个关键词!\r\n请升级正式版!", MsgBoxStyle.Information, "提示");
                        int arg_7B_0 = this.Handle.ToInt32();
                        string text = "Open";
                        string text2 = "http://www.zhanshensoft.com/price.html";
                        string text3 = "";
                        string text4 = "";
                        MainForm.ShellExecuteA(arg_7B_0, ref text, ref text2, ref text3, ref text4, 1);
                }
                else
                {
                        Class2.Class3_0.method_2().txtNum.Text = "33";
                        Class2.Class3_0.method_2().ShowDialog();
                }

可以看到判断了`Class6.bool_8`和`Class6.bool_10`的值,而这两个值是一个bool型的静态字段,找了整个程序也没见到在哪儿有赋值,那么就自己动手来赋值好了,因为`Class6`是个类,那么在它的构造方法中将`bool_8`,`bool_10`赋值为`true`,上面那两种判断就可以避开了,来到`Class6`的构造方法,右键点击`编辑IL指令`

添加这几句指令



解释下这两条指令

`ldc.i4.1`(将整数值1作为Int32推送到计算机堆栈上)

`stsfld`(用来自计算堆栈的值替换静态字段的值)指令

这里为什么要推送1到堆栈来替换掉字段的值就不用说了,替换完成后看现在`Class6`的构造方法



再来测试一下功能是否正确

修改后的破解专业版点击导出按钮



未修改的破解专业版点击导出按钮



不懂SEO,所以这个软件根本不懂怎么用的。 所以就先搞到这里吧

原版程序下载地址:http://www.zhanshensoft.com/down/zstools.rar

本教程只能用于学习研究,不可进行任何商业用途。如有使用,请购买正版,尊重他人劳动成果和知识产权!




王美君 发表于 2016-5-30 10:38

厉害,谢谢精彩的分享

kaiterchen 发表于 2016-5-30 14:20

谢谢分享!厉害!

yelaizuozuo 发表于 2016-5-30 19:18

吾爱破解论坛有你更精彩!

wgwjifeng 发表于 2016-5-30 21:17

有用么,下载看看

lanyanshu 发表于 2016-5-30 22:12

大神,能否发个破解好的软件啊,小弟很需要这个软件,谢谢了

shiming 发表于 2016-5-31 17:10

学习学习!!!!!!

heb123 发表于 2016-5-31 18:51

谢谢分享!厉害!

763213580 发表于 2016-6-2 21:39

好贴,要顶,,,,

玲珑的账号 发表于 2016-6-6 12:20

修改好的软件能否分享下呢
页: [1] 2 3 4
查看完整版本: .Net破解之某关键词工具