ningmou

ningmou

telegram

某壁のクライアント研究

image

構造分析#

一目でわかる Electron
image
なので、resources を開いてみる

image
そして、クラシックな構造とは少し違いますが、通常、ソースコードは app.asar にパッケージ化されるべきですが、これは少し違います。直接露出していますが、ちょうどいいですね。

研究プロセス#

package.json を開く

image

image
まず、言っておくと、このプロジェクトではいくつかの一般的なパッケージ管理プログラムが使用されています。json ファイルには npm yarn と書かれており、フォルダには pnpm もあります。単に 1 つだけを使っているだけで、これほど多くを統合し、正常に実行できるのはすごいですね。

次に、メインファイルを調べましょう。
暗号化されていませんが、コードは圧縮されているだけで、整形すれば OK です。
次に、作者の素晴らしい操作に移ります。

image
依存関係には ob 混淆があり、使用されていないことがわかります。どうやって参照するかわかりません。
vue は開発依存関係だと思いますが、これは直接最終パッケージに詰め込まれています。
その結果、依存関係はほぼ 100M になります。
次にメインファイルに戻ります。

截屏 2024-04-01 20.48.24_副本

私はこの 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 のクライアントしか見ていませんが、コードの品質と実装方法を見る限り、バグはかなりあると思います。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。