v2board前端Zero Theme 付费主题破解过程

开发app时遇到的一个问题,v2board官方默认的前端支持快捷登录(不需要输入账号密码的登录方式),后端代码用的是token2Login方法。

而大部分的三方主题是不带这个功能,好不容易找到一个支持的v2board前端主题,结果要价 200U

有一说一,这个代码值这个价,为了防墙,前端是独立站点,利用配置文件的api_base值,向v2board的真实站点请求数据。

哪怕后端域名墙了,改一下对应的api_base对应值就满血复活了。

源码地址:https://github.com/amyouran/v2board-Zero-Theme

有钱的朋友可以去支持,反正我没钱,何况甲方也不出这个钱。

如下就是破解这个200U的付费前端主题的过程。

主题破解原理

根据计算机原理,所有的网页的交互功能都是js实现的。

而网页的前端代码都是会下载到本地上,不像其他exe,apk这类字节执行文件,而js的本地代码是可以自行修改的。

破解过程

第一步,首先是下载代码到本地。

这个很简单,本地配置一个web的开发环境,chrome,F12,把对应的网页文件下载到本地对应的目录。

修改了对应的配置文件之后,出错了。

下面就是要一步步的去掉对应的验证功能。

首先肯定是先F12,看看代码的执行过程。

不出意外的是,肯定就出意外了。强制循环跳出debug,跟个小姑娘一样,不给看。

不给看,那就强行看呗。

跳出debug的地方是在对应的代码,可以看到是什么代码调用了这个循环的debug

而对应的代码是

1
constructor(I.MEtYM + V(-188 * -17 + 9290 + 6197 * -2, 9206 + 6327 + -15443, 73 * 37 + 8779 + -11350, 6826 + -15 * -255 + -10512, -9557 + 6190 + 3562)).call(I.PyYEW);

在对应的 index.9ea5738c.js 直接把 I.PyYEWI.MEtYM + V(-188 * -17 + 9290 + 6197 * -2, 9206 + 6327 + -15443, 73 * 37 + 8779 + -11350, 6826 + -15 * -255 + -10512, -9557 + 6190 + 3562) 在源代码里删除掉,代码就无法调用对应的函数,无法调用不就可以看代码执行了呗。

至于它是干什么用的,略微的功能猜也能猜出来,是构造了一个方法并且调用这个方法。

删除之后是这样的。

1
constructor().call();

再次刷新页面,还是出现了debug,不过是在另外一个位置,既然说明了有效果,那就按照刚刚的操作,继续删代码。

处理掉浏览器的debug方法,终于到了错误提醒框。

然后就很尴尬,不点击这个弹窗,无法操作chrome,点击这个弹窗,会立马清空chrome的url。这就造成了,还没看到对应的代码,chrome就更新了,开发编辑器的内容也被一起清空了。

就在被这个操作搞的无语的时候,忽然灵光一闪,弹窗就一定有对应的代码。

然后在对应的代码里,搜索 alert,也就是js的弹窗代码。

一一分辨对应的执行代码。

只有一个alert代码后面紧跟着一个 window.location.href,也就是刚好满足提到的操作实现(弹窗之后修改当前chrome的url)。

二话不说,继续删。

再次刷新,终于没有付费的弹窗。

破解之后

破解之后,部署上线,还需要对nginx做一个配置。

1
2
3
location / {
try_files $uri $uri/ /index.html;
}

为了安全考虑,毕竟是混淆的代码,谁知道在哪里加了点上传的功能,毕竟自己都是破解的,也没付钱,所以,就还需要在当前站点的nginx配置中,丢弃所有post请求。

1
2
3
if ($request_method = 'POST') {
return 403;
}

最后给原作者的建议

想要完全不被破解,还有个办法,那就是加一个中转接口。

这样的好处,第一是,防封,可以把官方的接口命名规则全部改掉了,所有的json请求做二次加密,彻底去掉特征码,没错,开发app的时候,本人做了一套现成的中转接口。

第二则是,静态文件很难做验证,就像上文一样,把文件拖到本地,就很容易强行破解,破坏肯定比建设来的更容易。

但是,在接口里做动态验证,数据库里没有就是不给用。

第三则是,这样才能持续不断的收费啊,卖的是防封服务,大兄弟。

所以,大兄弟,如果看到了,尽快联系我,不然就公开代码了。

最后,我的联系方式,可以添加我的频道telegram