構造分析#
一目でわかる Electron
なので、resources を開いてみる
そして、クラシックな構造とは少し違いますが、通常、ソースコードは app.asar にパッケージ化されるべきですが、これは少し違います。直接露出していますが、ちょうどいいですね。
研究プロセス#
package.json を開く
まず、言っておくと、このプロジェクトではいくつかの一般的なパッケージ管理プログラムが使用されています。json ファイルには npm yarn と書かれており、フォルダには pnpm もあります。単に 1 つだけを使っているだけで、これほど多くを統合し、正常に実行できるのはすごいですね。
次に、メインファイルを調べましょう。
暗号化されていませんが、コードは圧縮されているだけで、整形すれば OK です。
次に、作者の素晴らしい操作に移ります。
依存関係には ob 混淆があり、使用されていないことがわかります。どうやって参照するかわかりません。
vue は開発依存関係だと思いますが、これは直接最終パッケージに詰め込まれています。
その結果、依存関係はほぼ 100M になります。
次にメインファイルに戻ります。
私はこの 2 つの文字列を一目で見ました。おそらく最初に oss のアドレスを取得し、次にパネルのアドレスを取得しています。明らかに 2 つの暗号化された文字列で、後ろには 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()
}))
アドレスは、上記の手順で取得した gitee 内の base64 で暗号化された json を置くだけです。形式は上記のものですので、自分で解読して置き換えてください。
その他#
パッケージの取得方法は、わかる人にはわかるでしょう。gitee は提供しています。
正直に言うと、私は Win のクライアントしか見ていませんが、コードの品質と実装方法を見る限り、バグはかなりあると思います。