结构分析#
一眼 electron
所以打开 resources 瞅瞅
和经典的结构不太一样,正常来讲源代码应该打包到 app.asar 里面,但是这个不太一样,直接裸露在外面了,正好也省事了。
研究过程#
打开 pacakage.json
首先来说有个很难崩的一点是,这个项目用到了好几个常见的包管理程序。json 文件里面写的是 npm yarn,文件夹里还有 pnpm,直接单走一个 6。能融合这么多还能正常跑,也是个人才。
下面直接研究主文件就行
也没加密,只是压缩了代码,格式化一下就 ok。
下面来到了作者的精彩操作。
依赖里有 ob 混淆,然后没用,不知道引用干啥。
vue 应该是开发依赖吧,这直接全部塞进最后的包里了。
导致最后仅依赖就将近 100M
下面返回主文件。
我一眼就看到了这两个字符串,一看就是先获取 oss 之类的地址,再获取面板地址。明晃晃的两个加密字符串,后面还有 base64 的 ==,这不明白着告诉你我是加密信息吗。
console.log(w().replaceAll("}", ""));
直接把相关函数单独拿出来,输出就能看到地址,是 gitee 的。
https://gitee.com/wepc_1_0/appconfig
然后拿到内容,修改一下 x 函数,直接输出就行。
function x() {
var n = f;
console.log(n)
}
var data = "gitee拿到的内容";
var n = new Buffer(data, "base64").toString("UTF-8");
m(n);
x();
内容大概是这样的,自己解去吧,太长了就不放出来了。
{
apiUrl: 'https://.',
crispId: '',
siteName: '',
website: 'https://',
tgGroup: '',
invite: '',
inviteIntroduce: '',
affText: '邀请链接: ',
payMethod: '1',
...........
用法#
修改下面这段代码就行了
await c().get("获取地址").then((e => {
var n = new Buffer(e.data, "base64").toString("UTF-8");
m(n), x()
}))
然后地址哪里放 base64 加密后的 json 就行,格式就在上面几步获取的 gitee 里,自己解一下换上就行。
其他#
包怎么获取,懂的都懂,gitee 都给你了。
有一说一,这客户端我只看了 win 的,呃,咋说呢,看着代码质量和实现方式,我觉得 bug 应该不少。