本帖最后由 jixun66 于 2015-5-24 22:00 编辑
和 [本地+网络双验证]破解Multicraft控制面板 过本地验证+山寨网络验证全过程 帖子的破解稍微有些不同,这个直接爆破验证函数。
感谢 Angelic47 对文件做出的分析 如果没有之前的分析会浪费很多时间 /w\
【软件名称】: Multicraft 1.8.2
【下载地址】: http://www.multicraft.org/site/page?view=download
【验证方式】: 本地+联网序列号验证
【开发语言】: Python 2.7
【破解目的】: 绕过序号检查、去除联网验证,实现无码注册。
【作者声明】:
只是出于对破解感兴趣,请勿用于商业用途;如果你喜欢该软件请购买支持正版。
可能有的地方有错,还请各位看官指出修正,谢谢。
首先就是手动提取相关文件。文件数据是贴在 exe 末端的“PKZ”字符开始的数据。
最开始我还以为只是一个 PKZ 包,结果搞了半天才发现,这东西是 pyinstaller 自创的 CArchive 格式 (识别代码在结尾)…
于是跑到官方拖一份最新的 pyinstaller 源码下来,然后根据源码逆推相关提取/打包代码。
脚本的相关代码请参见附件:
pyinstaller-压缩包处理脚本.zip
(4.11 KB, 下载次数: 133)
CArchive 解出来的文件名大概是这样的:001_0zout00-PYZ.pyz
002_1miu
003_1mstruct
004_1marchive
005_1s_pyi_bootstrap
006_1scarchive
007_1spyi_rth_encodings
008_1smulticraft
009_0oO
前面三个数字是序号, 下划线右边的数字表示是否需要压缩处理 (1: 压缩, 0: 不压缩)
后面的第一个字符含义可以在源码中获得;就目前来说只需要知道 s 表示会被直接执行的脚本就行了。
就如你所想的那样:我们要对 008_1smulticraft 这个文件进行更改。(其实我试过直接对 pyz 包进行处理去掉相关验证代码,但是打包出来的会提示找不到 AES 模组… 怀疑打包的 pkz 有点问题, 求指导)
在此之前,「破解Multicraft控制面板」的这个帖子已经介绍了相关验证函数的位置,不需要满世界去找破解点了,于是我就只放出自己的处理方案。
首先在最上面插入一个破解内容的函数,避免命名冲突,然后立马调用:
[Python] 纯文本查看 复制代码
def loader_patch():
# 序号检查函数, 尽可能模拟原版
def custom_load(self):
self.key = '1111-2222-3333-4444'
return True
def custom_parse(self):
self.serial = 9999
self.customer = 9999
self.edition = 62
self.valid = True
self.licenseOk = True
return True
license.License.load = custom_load
license.License.parse = custom_parse
# 破解网络验证 (+ 远端版本检查)
import threaded
def custom_read(self, params, sendTime, url):
Global.disabled = False
return (True, False, '<p>Cracked By Jixun :)</p>')
threaded.PeriodicQuery.read = custom_read
loader_patch()
调试的时候却发现,这破解没用啊,还是读取原来的函数 orz
然后就是偶然间发现了一个可疑的地方 (更改前的 586 行):
[Python] 纯文本查看 复制代码
sys.modules[Parser.decode('bGljZW5zZQ==')].__dict__[Parser.decode('TGljZW5zZQ==')] = \
sys.modules[Parser.decode('X19tYWluX18=')].__dict__[Parser.decode('UGFyc2Vy')]
文字是 base64 加密,解开看看:
[Python] 纯文本查看 复制代码
sys.modules["license"].__dict__["License"] = sys.modules['__main__'].__dict__['Parser']
大概是和授权方面有关系,不管他,直接干掉 (求指导,这句我也没怎么懂 orz)
重新打包,果然可以了。扔张图上来 /w\
* 提取脚本需要确保输出目录存在
** 打包脚本不会检查输出文件是否已经存在,记得备份
*** 提取脚本不能直接从 exe 提取数据,逻辑没写好 orz
破解后的文件下载:http://pan.baidu.com/s/1bnffP6n (提取 6666) |