[本地+网络双验证]破解Multicraft控制面板 过本地验证+山寨网络验证全过程

  [复制链接]

升级   46.45%

发表于 2015-4-10 09:14:11 | 显示全部楼层 |阅读模式


前天发了一个网络验证的心得,很多人看的都不过瘾,各种追问我……
今天来点实战的吧,不修改原程序的情况下破解Multicraft的双验证!

首先,很多人要问我,Multicraft到底是个什么东西。那么,我这里先说一下软件信息,让大家直观的看一下Multicraft到底是啥。
Multicraft是一个minecraft服务器的网页控制面板。玩过minecraft的朋友应该知道,很多服务器的供应商都在使用这个系统。这个系统与虚拟主机控制面板有异曲同工之妙,不管是用来管理自己的服务器,或者是用来做服务器出租销售,都是一个很好的选择。正因为它简单、易用、直观,被多数minecraft服务器的腐竹和供应商使用。然而它并不是免费的,免费版本仅允许同时运行一个服务端,且最大人数限制在10人。(吐槽一下这个网站的org域名)


是的,multicraft是一个比较大的软件了,很多人想破解它,但是到目前为止整个google也没有相关的破解。
怎么会这样呢?因为multicraft对于老外来说,一个月2.9欧元就可以了。似乎不是很贵,但是对于我们来说……我们……手持的是RMB啊!实在是……不敢想。

那么,今天突然心血来潮,我们搞了他吧。
Warning:本文篇幅超长,过程细节+思考细节+心理活动描写详细,为避免在阅读时产生任何不适感,请路过神牛、完全无基础者、无耐心者慎看!一旦发现任何不适反应,如大爆粗口、狂躁不安、纠结费劲等不良反应,请立即点击右上角。有人问我Linux的multicraft怎么破解,我想说其实linux和windows都是一样的,因为python代码都是一样的,所以只要修改/etc/hosts来劫持域名就可以山寨网络验证
另外很多人发我私信要QQ联系我,很抱歉因为一些安全考虑不接受QQ交谈,如果对破解有兴趣而遇到困难完全可以发出来,否则同样是求破,在这里是大家都是很讨厌求破的




信息收集+初探

让我们看看这个软件到底长啥样……

没错,就是这个模样。先查下壳看看?

嗯,不错哦,没加壳。有人问我为啥两个图的文件路径不一样,我说,这整个破解过程,我是在虚拟机和真机之间交叉进行的。
风险性比较小的行为,比如填写注册码啥的,我就在本机运行。上peid、上od这类的危险行为,我们还是去虚拟机吧。
(这个软件其实根本就没有格盘这样的暗桩,只不过,这是个好的习惯)
查壳完毕,没壳,窃喜——诶,先别笑,让我们继续收集信息……运行下软件看看怎么样?

游客,如果您要查看本帖隐藏内容请回复



请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!

升级   46.45%

 楼主| 发表于 2015-4-10 09:14:58 | 显示全部楼层
大槽,这是个控制台程序,根本就没有窗口,更别说弹什么对话框提示你注册码错误了。想用od下msgbox断点?门都没有。
而且……看这个控制台里面,貌似是读取了一个叫做multicraft.key的文件,里面保存了注册码,只在刚刚启动的时候验证……
尼玛,我们遇到了典型的重启验证+无对话框了。
没办法,上OD吧。然后我耗费了一个下午+一个晚上的时间在od里面跳来跳去。
结果偶然间发现了个这东西:

于是就想到了搜字符串,然后下文件访问断点,结果发现根本不行……
字符串根本就搜索不到,文件访问断点断下的根本就回不到程序领空,而且几乎每跑一步都能断下来,单步跟也没有找到关键call,而且程序极易跑飞。
这尼玛什么情况……纠结了

等下,让我们来分析这些现实……字符串搜索不到,找不到关键call,程序极易跑飞,而且peid的时候还出现了overlay的附加数据……
最**的是,根据文件访问断点可以看出,这个文件时时刻刻都在访问文件,这到底是个什么情况……
经验告诉我们,这不会是一个用解释器写的程序吧?赶紧打开multicraft的官网看一下……

难道是真的么?赶紧再研究研究

天哪,这个程序还真的是用python2.7写的,怪不得我在bin文件夹里面找到了无数个pyd,还找到了一个python27.dll
但是,我到现在还很好奇,他是怎么把python打包进一个exe的……
祭出大绝第一招——报错法!把自带的一个pyd重命名掉让程序报错!


破解python的时候报错法实在是太好使了,直接就把这东西的核心给爆出来了。这是什么?pyinstaller2.0打包的呀!
pyinstaller2.0+无壳,窃喜,信息收集到此结束,开始搞!




失败的暴力破解

既然是pyinstaller,祭出大绝第二招——Pyinstaller exe rebuilder v1.01!反编译+硬性修改其中的python代码
python和.net是有异曲同工之妙的东西,都是可以拿到源代码然后来重建的,so,让我们来试一下

直逼验证部分……删了代码,然后写上自己的代码……

似乎这样就直接拿到Dymanic License的授权了……诶,你先别醉,让我们保存,rebuild,运行……
“啥?根本就没有修改效果!”
这程序混淆的太厉害了,看来想重建这个程序是不太可能了。
爆破也就算是失败了。




追码过程

看到程序上来先弄了个正则匹配,匹配了这样的东西:
xxxx-xxxx-xxxx-xxxx
然后中间的数据被当做十六进制来进行一定的运算,算出来了授权的版本和限制信息

算法似乎是这样的:
从这个注册码的第四部分最后两位取得解密key
然后把每个部分的前两位异或这个key作为解密,进而计算第二部分的checksum和checkbit
如果checksum和checkbit有效,那么就再取其中的部分,减去那几个magic,
最后进制转换,算出来的数值就对应注册信息
比如当edition>=60的时候就是Dymanic License

但是问题出在第二步,如何能想办法构造出来一个能过掉checksum和checkbit的注册码
一晚上下去了,毫无思路,于是把算法整理了一下,交给我们这一个数学学霸去列方程了……
结果,那个学霸同学,还真给算出来了两个能过掉这个算法的key……
两个key,其中一个能过掉本地验证,但是无法过掉网络验证,另一个能直接拿下网络验证……直接完美破解
我说,学霸同学,你实在是太厉害了了……

(至于是怎么算的,不要问我,我也不会算,毕竟这个算法太复杂了,这里只是破解python软件的一个小思路)

但是追了码,过了这个验证,也恐怕是不行的,毕竟网络验证可以随时随地封了你这个追出来的码。好吧,准备搞他的网络验证了。
(我怀疑是碰巧了,这个追出来的码和一个已付费的码相同,所以可以过掉网络验证,这概率也……)




山寨网络验证

我觉得爆破、追码啥的大家都看腻了,最喜欢看的应该就是山寨网络验证了,好吧,来个山寨全过程
本地搭建好burpsuite的http代{过}{滤}理,开始抓包……(注意要改系统全局代{过}{滤}理,整个操作系统的http全都走这个才能有效抓到,否则使用其他抓包软件)

程序一启动就抓到了一个这个,似乎访问了multicraft官网的一个version目录,看起来是一个版本检测,但是为啥带了那么多参数……不管了,forward过去看看
结果这时候直接提示授权验证失败了……但是版本验证成功
我们可以大胆的猜测,授权验证信息应该就在这些参数里面,而且这个version就是一个版本更新+授权验证的结合体
怎么办?别上来就想着山寨,大不了我们废了网络验证这个功能,直接封杀掉这个连接不就可以了么?
直接封杀?那么岂不是不能连接验证服务器了么?原理和在?
大家要看清楚,这个软件是支持本地验证的,本地验证完了再提交到服务器上进行验证。
事实证明,这个软件当本地验证了之后,就已经可以使用付费功能了,之后才拿到服务器上验证。如果验证不通过,这些功能就被再次关闭掉。
也就是说,这个软件其实是可以直接脱离网络验证的。
还有一个基于心理学的东西,那就是很多中大型软件为了防止自己的验证服务器出错而导致不能验证带来的损失,通常都会放宽网络验证。换句话说,如果无法连接到服务器,一般是不会直接视作授权无效的。PS就是个典型的例子,本地验证通过之后如果无法连接授权服务器,则不会判作你这个注册码无效。
这里的Multicraft亦是如此,如果我们屏蔽了授权服务器,除了不能及时获得软件更新之外,理论上不会有其他不良影响。


那么我们尝试直接用hosts屏蔽这个网址。
在C:\WINDOWS\system32\drivers\etc\hosts中添加如下语句:
127.0.0.1 www.multicraft.org
127.0.0.1  multicraft.xhost.ch
经过测试,这样已经不会判作你的Dymanics无效了。但是程序会一直retry,不停的在控制台输出"failed to verify license"
毕竟这是一个服务器软件,如果3秒钟出现一个日志,那么硬盘空间就危机啦!所以这招在这里不太可取。
所以说,还是山寨吧。

那么,既然要山寨,我们需要验证成功的信息,然而我又已经得到了一个能够通过网络验证的“正版”key,直接输进去然后抓包……
呃,抓到了,返回了一个<s>一串数字</s><v>1.8.2</v>
前面的一串数字不知道是什么,但是后面的1.8.2似乎就是版本号,先不管他了,我们直接开始山寨!
和之前一样,在C:\WINDOWS\system32\drivers\etc\hosts中添加
127.0.0.1 www.multicraft.org
127.0.0.1  multicraft.xhost.ch

然后这时候不要急忙打开这个软件,用一个wamp套件(百度很多,可以搜到)来搭建一个本地服务器,至于为什么要用wamp,因为它带php,为啥要带php,一会你就知道了。
然后在站点根目录下建立一个version文件夹,里面新建个index.html,然后直接把内容原封不动的复制进去……
再次打开软件……什么?Verify license failed (mismatch) ?为什么验证不通过?

这时候突然想起来刚刚传递进去的那些参数……
肯定与这些动态参数有关系,要不然要服务器是怎么判断注册码的正确性的……继续翻反编译的代码……

这句话是不是很熟悉,说明应该就在附近了,继续找找看

授权验证就在这里了!和我们的预期一样,他用正则表达式匹配了<s>xxx</s>,把这中间的一段数字做运算了
读了一下代码我们能发现:当网络验证正确的时候,这个数字的值是用sendTime除以1000的余数乘以serial
但是**问题还有,这里的sendTime和serial是从哪来的,我们在附近继续找找

可算找到了,原来参数t就是sendTime,s就是serial,把这两个关键参数发到服务器上去计算了……

还等什么……直接一句php代码送他上西天……
这里的php代码意思是
把传入的s参数转换为整数
t参数也转换为整数
然后t参数除以1000取余数(其实就是t参数的最后3位数字)
然后把得到的数乘以s参数,直接输出即可


保存,重新打开软件,发现提示301 Moved错误
这里我们要看清楚了,人家的url是/version,而我们直接新建了一个文件夹,路径是/version/,根本不一样的说
这两个是完全不同的东西,需要我们来纠正,因为我们的本地山寨是wamp包,所以可以直接写一个.htaccess做一下url重写即可
然后再打开软件……发现提示Verifyed License!


山寨成功!




总结:
遇到解释器的程序,最好的办法就是反编译找他的源码,然后在“开源”的情况下搞他,
如果想要山寨一个程序的网络验证,那么很多细节问题是一定要注意的,
最重要的是……要稍微懂一些web相关的知识,不用太多,会一点php,再来点小学信息课本学的知识,就足够了……
最后把山寨出来的服务端php和一个能直接通过网络验证的那个Dymanic License发出来吧!

Key:677D-3C64-8B93-BFFC
虽然是能通过网络验证,但是建议最好还是山寨了那个服务端,否则早晚这个Key要被列入黑名单

(源文件没发生任何改动,破解版就不发了哈,根本就没有什么所谓的破解版,注册机也没有,只能硬性搞掉网络验证,而这个服务端要自己建设的)
(Pyinstaller Rebuilder实在是太大了,发不上来,可以去sourceforge.net下载)

大牛路过轻点喷哦~

-EOF-


控制面板, 网络

请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

升级   32.33%

发表于 2015-4-10 19:34:21 | 显示全部楼层
激动人心,无法言表!
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

升级   32.33%

发表于 2015-4-10 19:34:58 | 显示全部楼层
激动人心,无法言表!
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

升级   12%

发表于 2015-4-11 23:14:00 | 显示全部楼层
哇塞亮瞎了楼主加油,我们都看好你哦。
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

2458946798 该用户已被删除
发表于 2015-8-1 20:39:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

hammer354 该用户已被删除
发表于 2015-8-3 20:51:38 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

刘雨 该用户已被删除
发表于 2015-8-24 13:49:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

升级   20%

发表于 2016-1-2 20:24:13 | 显示全部楼层
强烈支持楼主ing……
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

升级   0.08%

发表于 2016-3-9 22:15:31 | 显示全部楼层
支持!
请勿回复毫无意义的内容(包括纯字母、纯数字、乱打文字)违者将会被禁止发言!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

申请友链|Archiver|手机版|小黑屋|VIP分享网论坛

GMT+8, 2025-1-31 05:28 , Processed in 0.067926 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.