結構分析#
一眼 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 應該不少。