前書き#
v2board の作者が連行されたという噂が広まり、クライアントパネルのパッケージ化が使用できなくなりました。そのため、クライアントを分析して、何か得ることができるか見てみましょう。
構造#
クライアントは Electron で書かれているため、\resources に移動して app.asar を解凍するとソースコードが表示されます。
処理#
分析を容易にするために、app.asar を解凍し、解凍された内容を同じ名前のフォルダに配置します。
メインプロセスの main.js は、難読化などの処理は行っておらず、ロジックを直接見ることができます。分析によって、作者はサンドボックスなどのセキュリティ対策を無効にしていることがわかります。
メインページは./dist/index.html です。
上記の画像は、変更後のコードのスクリーンショットです。
デバッグを容易にするために、まず devtools の制限を解除し、アプリケーションの上部メニューバーを有効にします。
ページの中の umi.js は暗号化されており、デベロッパーツールのブロックなどの機能が備わっています。この暗号化スタイルはjsjiami.comの暗号化ツールによるものであり、大きな配列が先頭にある暗号化方法です。
一部のデバッグ防止措置を削除するために処理を行います。ただし、分析のためには JavaScript を復号化する必要があります。
私のスキルが限られているため、完全に復号化することはできませんので、復号化後のコードは掲載しません
分析#
クライアントは最初に API をリクエストして v2b パネルのアドレスを取得し、JSON 形式で返します。
そして、パネルのアドレスをグローバル変数に保存します。
その後、v2b パネルをリクエストしてウェブサイトの名前などの情報を取得します。
ログインに成功すると、使用できるようになります。
クラック?#
クラックの核心は umi.js ファイルの復号化ですが、私の試みでは非常に時間がかかり、同じものを作り直すのと変わりませんでした。
私が復号化した JavaScript を分析した結果、いくつかの盗作防止措置があり、盗作の情報を報告します。ただし、現在、報告先のアドレスに正常にアクセスできず、500 が返されます。盗作防止措置は研究によって回避できますが、正規版をサポートするために公開しません。
しかし、作者の行方がわからないため、盗作防止措置を無視して直接攻撃することができます。
アイデア#
ここでは、簡単なアイデアを提供しますが、このアイデアは盗作防止措置を引き起こす可能性があり、ユーザーが使用するとアプリケーションが突然終了するという具体的な表現になりますが、トリガーの確率は非常に低いです。だから...
具体的な原理は、fetch リクエストをインターセプトし、リクエストを変更することです。ここでは、Index.html に fake.js を追加します。以下はその内容です。
const originFetch = fetch;
Object.defineProperty(window, "fetch", {
configurable: true,
enumerable: true,
get() {
return (url,options) => {
//パネルのアドレスを取得するAPIをインターセプトし、自分のアドレスに置き換える
if(!url.includes("api/v1")){
url = "http://自分のアドレス/config.json"
}
//盗作防止措置を阻止する
if(url.includes("fake")){
alert(url);
while(1){}
}
return originFetch(url,options)
}
}
});
//ログインページのタイトルとアプリケーションの実行時の名前を変更する
window.addEventListener('DOMContentLoaded',()=>{
document.querySelector("title").innerText="久世凝眸"
})
その後、指定された場所に再パッケージ化して asar を配置すると使用できます。
アイコンなどもツールを使用して変更することができますが、ここでは説明しません。
その他#
CSS は変更できますが、色などを変更することができます。下の画像は、lightpink の色に変更した例です。