image.png (102.77 KB, 下载次数: 0)
下载附件
2023-5-16 11:08 上传
进入bin目录先启动BES服务后,根据BES的相关文档
image.png (107.32 KB, 下载次数: 0)
下载附件
2023-5-16 11:09 上传
执行查看许可命令,可以看出默认许可文件生成的许可是半年期的,结果如下:
image.png (105.59 KB, 下载次数: 0)
下载附件
2023-5-16 11:09 上传
我们可以修改电脑操作系统时间为2024年,此时许可就是过期的,启动如下:
image.png (19.44 KB, 下载次数: 0)
下载附件
2023-5-16 11:09 上传
这时候使用命令查看许可过期时间,如下:
image.png (162.73 KB, 下载次数: 0)
下载附件
2023-5-16 11:10 上传
看来是过期的不可以使用了
那么接下来破解该许可,达到许可永久,或者自定义发布永久许可。找到lmadm命令,看看工具程序入口:
image.png (121.41 KB, 下载次数: 0)
下载附件
2023-5-16 11:10 上传
可以找到对应许可的bes-license.jar,使用反编译工具打开,一堆混淆的class,看来就是它了
image.png (318.55 KB, 下载次数: 0)
下载附件
2023-5-16 11:11 上传
接下来,我们只要分析该class的许可逻辑,分析许可文件的制式,找到公钥,就可以自定义发布永久许可文件。 在这个过程中,分析许可逻辑,虽然我们可以静态分析代码逻辑,但最好的分析还是一个动态调试许可信息的环境,这样方便我们调试程序,更加能快速的分析与破解。 这时候我们可以使用eclipse新建一个java工程,导入相关的jar进行分析(eclipse安装了多种java反编译的工具),看看lmadm命令的主要参数逻辑,可以先分析下许可文件的加载逻辑,然后分析许可文件的制式,找到公钥
image.png (160.56 KB, 下载次数: 0)
下载附件
2023-5-16 11:11 上传
一个LicData类,里面的成员变量都是一些混淆的字母,但这个toString()方法又等于告诉了我们这些字母是什么信息
image.png (114.8 KB, 下载次数: 0)
下载附件
2023-5-16 11:11 上传
在静态分析代码时候,发现了一个获取过期日期的参数,
image.png (102.17 KB, 下载次数: 0)
下载附件
2023-5-16 11:12 上传
可以修改lic.properties文件的参数值,到这里,我很想先试试,如果可以直接修改了,那么把这个值修改为99999….不就是永久了嘛!(我想起永久试用,也是破解,当然我们可以先尝试玩玩,本文主要是逆向分析许可算法逻辑,注册原理,肯定要达到自定义发布许可的)
image.png (183.47 KB, 下载次数: 0)
下载附件
2023-5-16 11:12 上传
很遗憾,修改后是无效的 同理,静态分析又发现一个s类定义了许可信息(注释是根据toString()方法的信息加的)
image.png (214.17 KB, 下载次数: 0)
下载附件
2023-5-16 11:12 上传
以下可以看出许可bes.lic文件是由s类对象序列化的文件,所以使用了java对象流
image.png (288.63 KB, 下载次数: 0)
下载附件
2023-5-16 11:13 上传
我们这时,可以修改该s对象写出一个文件替换试试,以下就是写出的方法
image.png (230.31 KB, 下载次数: 0)
下载附件
2023-5-16 11:13 上传
修改后,再次读取许可发现如下:
image.png (160.1 KB, 下载次数: 0)
下载附件
2023-5-16 11:14 上传
跟踪调试发现,s.j是一个完整性签名,
image.png (68.52 KB, 下载次数: 0)
下载附件
2023-5-16 11:14 上传
那么重新生成过一次
image.png (175.24 KB, 下载次数: 0)
下载附件
2023-5-16 11:14 上传
启动BES服务,进入页面查看许可
image.png (188.45 KB, 下载次数: 0)
下载附件
2023-5-16 11:15 上传
命令查看许可如下:
image.png (109.62 KB, 下载次数: 0)
下载附件
2023-5-16 11:15 上传
修改操作系统时间,启动BES发现服务正常启动,没有过期。到这里,我们已经实现了永久许可了。和我想象的许可不一样,之前我们有破解过tongweb7,myeclipse2022,之类的许可都需要私钥公钥签名,这个BES看来太简单了。 我们还需要完善注册机代码,因为我们是直接生成,经过分析逆向,其实BES的许可控制逻辑主要是以下三个文件,我们前面只是替换了bes.lic文件(有点类似直接修改内存),实现了永久许可。
image.png (57.22 KB, 下载次数: 0)
下载附件
2023-5-16 11:15 上传
Installtime文件的逻辑验证如下:
image.png (138.58 KB, 下载次数: 0)
下载附件
2023-5-16 11:16 上传
那么我们解析来需要实现自定义发布,bes.lic.txt文件,看看该文件内容
image.png (98.55 KB, 下载次数: 0)
下载附件
2023-5-16 11:16 上传
其实就是分析许可导入时候的逻辑了,如何读取该文件,如下所示分析该文件:
image.png (161.31 KB, 下载次数: 0)
下载附件
2023-5-16 11:16 上传
读取bes.lic.txt文件,行读取,可以看见#号的注释的相关都不要
image.png (175.02 KB, 下载次数: 0)
下载附件
2023-5-16 11:16 上传
再来一张图,终于调试到该行了
image.png (228.87 KB, 下载次数: 0)
下载附件
2023-5-16 11:17 上传
发现不进分支,所以代码可能反编译有错,所以再次修改代码如下:
image.png (140.8 KB, 下载次数: 0)
下载附件
2023-5-16 11:17 上传
继续跟踪,其实解析这串许可信息的方法如下:
image.png (165.29 KB, 下载次数: 0)
下载附件
2023-5-16 11:17 上传
可以看出,整个序列串的信息组成,且解密过程
image.png (140.67 KB, 下载次数: 0)
下载附件
2023-5-16 11:17 上传
Base64解码后 的数据
image.png (128.49 KB, 下载次数: 0)
下载附件
2023-5-16 11:18 上传
那么bes.lic.txt的文件生成代码逻辑验证如下:
image.png (247.06 KB, 下载次数: 0)
下载附件
2023-5-16 11:18 上传
看来逻辑是对的,那么只要修改相关的信息,就可以自定义发布许可了 继续完善注册机算法(这里只修改了过期日期,其实其他参数也可以修改),代码如下:
image.png (392.61 KB, 下载次数: 0)
下载附件
2023-5-16 11:19 上传
看,我们已经生成许可了,且修改了许可过期日期
image.png (223.23 KB, 下载次数: 0)
下载附件
2023-5-16 11:19 上传
替换到BES的许可目录,启动,查看许可命令,已经成功了
image.png (215.65 KB, 下载次数: 0)
下载附件
2023-5-16 11:19 上传
在登陆BSE管理页面查看许可,如下:
image.png (189.69 KB, 下载次数: 0)
下载附件
2023-5-16 11:20 上传
到这里破解,自定义发布许可就已经结束了。结语: 好像比意料之中的简单,与之前破解的Tongweb7,myeclipse2022相比,BES的许可控制相较于简单,少了非对称密钥签名等算法逻辑。但许可这种就是防止君子不防止小人的,请大家支持正版。 其他许可相关分析:下图,是对容器服务的支持,许可需要修改对应的信息,可以修改ALL
image.png (124.33 KB, 下载次数: 0)
下载附件
2023-5-16 11:20 上传
下图应该是版本描述类型信息,可以修改许可内容
image.png (115.04 KB, 下载次数: 0)
下载附件
2023-5-16 11:20 上传
我们分析的许可时候,建立的工程结构
image.png (164.38 KB, 下载次数: 0)
下载附件
2023-5-16 11:21 上传