微信小プログラムソフトウェアのリバースエンジニアリング#
0x01#
最近、WeChat 小プログラムの逆コンパイルが必要になり、ツールを使用してみましたが、数日後に有料要求が表示されました。検証はかなり簡単だと感じました。解読してみましょう。
プログラムを実行すると、これはウィンドウ上のものですが、私は逆コンパイルに詳しくありません。私の理解に基づいて、このウィンドウを push できるかもしれないと思います。
0X02#
フォルダ内の pdb と DLL を見ると、おそらく C# で書かれていると推測できます。シェルについて調べてみました。#
dnspy に投げて見てみましょう、
このソースコードとインターフェースは明らかに混乱しています。Net Reactor のシェルに非常に似ているように思えます。アンシェルを試してみましょう。
一般的な Net Reactor のアンシェルソリューションを使用してアンシェルに成功し、メインプログラムを再度ロードしてみましょう。
これでコードは正常になりました。
最初はメインプログラムで更新部分のコードを見つけられませんでしたが、後で Common.dll で見つけました(同様に混乱しているため、アンシェルが必要です)
ブレークポイントを設定してコードを実行し、終了時にどこで中断されるかを確認します。
多くのデータがサーバーにアップロードされることがわかりました。BIOS USER ネットワークカード ID マザーボード番号 CPU モデルなどの情報が含まれているため、おそらく支払い後の状態確認に使用されていると推測されます。
支払いページを開くと、変数は true になります。直接終了すると false になります。このメソッドを検索して、そのコードを見てみましょう。
プログラムの更新もこのコードの一部で行われており、ロジックも非常にシンプルです。
code フラグが使用され、code が - 45 の場合はスポンサーウィンドウが開かれ、0 の場合は次のステップに進みます。
このように、クラックのアプローチも非常に簡単です。この部分の判断をすべて nop に変更し、最後に 0 を埋めて元のコードが保持され、検証ロジックを通過できるようにします。
完了。