记录一次破解经历:seafile-pro-6.3.9 破解试用人数上限

反汇编 汇编 IDA seafile

[TOC] 本文为Hurray([https://hurray0.com/menu/117/](https://hurray0.com/menu/117/))原创,如需转载,请备注本站地址。 > 本人作为`seafile`长期使用用户,一直对这款私人网盘情有独钟。个人在阿里云上搭建网站,存储使用阿里云OSS,日常备份超过300GB,费用大致为0.01元/小时/100GB,也就是每个月21.6元。杜绝了市面上网盘资源泄露的风险,同时网盘本身功能也很完善(各终端的客户端、分享链接、文件加密等等)。个人一直使用的seafile-pro版本,免费使用限制用户数为3。前一段实在是想增加几个用户,所以动起了破解的念头。__本文只为学习技术,还请各位读者不要将技术用于违法的地方。__对于公司而言,还是用正版的靠谱。 ## 破解开始 首先选用的版本为目前(2019.01.17)最新版本`seafile-pro-6.3.9`。通过查看代码,可以发现项目是利用`python-django`作为网站框架的,而真正底层的操作,例如数据库操作等是c封装成库,利用rpc调用的。本文使用`IDA`对c封装库做修改。 ### python部分 首先根据关键词`license`搜索.py文件: ```bash find . -name "*license*.py" ``` 找到嫌疑文件`./seahub/seahub/utils/licenseparse.py`。 查看文件后果然发现了用户限制相关的代码: ```python def user_number_over_limit(new_users=0): logger = logging.getLogger(__name__) if is_pro_version(): try: # get license user limit license_dict = parse_license() max_users = int(license_dict.get('MaxUsers', 3)) # get active user number active_db_users = ccnet_api.count_emailusers('DB') active_ldap_users = ccnet_api.count_emailusers('LDAP') active_users = active_db_users + active_ldap_users if \ active_ldap_users > 0 else active_db_users if new_users < 0: logger.debug('`new_users` must be greater or equal to 0.') return False elif new_users == 0: return active_users >= max_users else: return active_users + new_users > max_users ``` 将其中的`3`改成尽可能大的数即可。 ![](https://file.hurray0.com/uploads/menu/117/b82615cc0b5408dca1018737b67a0bb5.png) ### c部分 经过IDA逐个检查,最终确定用户相关的代码就在`/seafile/bin/ccnet-server`中。由于这是个二进制的文件,因此只能只能通过反汇编的方法将二进制文件转换成汇编代码。公司通过只发布二进制文件而不开源这部分代码的方法来尽可能保证不被破解。 使用`IDA64`打开`ccnet-server`,通过多次搜索`license`关键字,最终定位到目标位置。 当然,汇编代码不好读懂,也可以使用`IDA`先将其转换成c代码,例如: ![](https://file.hurray0.com/uploads/menu/117/83e41750ab86f4556cfb8fc9e829b5bf.png) 转换成c语言之后,代码逻辑清晰了很多。代码中,当找不到license文件时,设置几个参数都为3。因此我们需要在汇编代码中修改这几个3的值。 这里我将其改为_5B25H_,也就是_23333_(这里最好是直接改二进制格式,不容易出错): ![](https://file.hurray0.com/uploads/menu/117/a8c4ef821bbe9f3b2c135aa40d37b328.png) ### 验证 保存至`ccnet-server`后,替换服务器原来位置的文件,添加可执行权限(`chmod +x`),重启服务器`./seafile.sh restart`和`./seahub.sh restart`。可以看到人数限制变大了(下面的16735013是0xFF5B25,是我之前的一次修改值): ![](https://file.hurray0.com/uploads/menu/117/b56a6dbbb0e0f703166e03dde34685cc.png) 从网页端进入管理页面,添加用户,也突破了3人的上限,经过验证破解可以正常使用: ![](https://file.hurray0.com/uploads/menu/117/e1e6d0a0d823a33512cdd88134a26aec.png) ## 后记 为防止过量破解充斥市场损害原产品公司利益,这里不再放出整个`seafile-pro-6.3.9`安装包。放出`ccnet-server`文件__仅供学习__使用[ccnet-server](https://file.hurray0.com/uploads/menu/117/454471fb09cf359a4f8ab19c6d0a1173)(请自助重命名)。还请各位读者不要在网络散布完整破解安装包。 第一次真正自己破解还是颇有成就感的,以前的汇编终于没有白学(笑 最后祝`seafile`越来越好。 违规转载必究。