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.PyYEW
和 I.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 | location / { |
为了安全考虑,毕竟是混淆的代码,谁知道在哪里加了点上传的功能,毕竟自己都是破解的,也没付钱,所以,就还需要在当前站点的nginx配置中,丢弃所有post请求。
1 | if ($request_method = 'POST') { |
最后给原作者的建议
想要完全不被破解,还有个办法,那就是加一个中转接口。
这样的好处,第一是,防封,可以把官方的接口命名规则全部改掉了,所有的json请求做二次加密,彻底去掉特征码,没错,开发app的时候,本人做了一套现成的中转接口。
第二则是,静态文件很难做验证,就像上文一样,把文件拖到本地,就很容易强行破解,破坏肯定比建设来的更容易。
但是,在接口里做动态验证,数据库里没有就是不给用。
第三则是,这样才能持续不断的收费啊,卖的是防封服务,大兄弟。
所以,大兄弟,如果看到了,尽快联系我,不然就公开代码了。
最后,我的联系方式,可以添加我的频道telegram。