とあるお宝はパケットをキャプチャして逆解析できない

この記事は、携帯電話の秘宝のパケット キャプチャ プロセスを記録します。

携帯電話: Pixel 6

システム: アンドロイド 12

フリーダバージョン:15.2.2

ソフトウェア: アバオ 10.17.0

まず、Postern を使用してネットワーク プロキシを開き、Charles を使用してコンピュータ上のパケットをキャプチャしようとしますが、ネットワークがクラ​​ッシュしたことを示すメッセージが表示されます。

在这里插入图片描述

次に、特定の宝物に証明書、つまりSSLピンニングをバインドし、インターネット上でSSLピンニングをバイパスするスクリプトをコピーすることができます(https://github.com/httptoolkit/frida-android-unpinning)。

在这里插入图片描述

スクリプトを実行すると、ページは正常に表示されましたが、charles にキャプチャされたパッケージは数個だけで、これは明らかに異常です。次に、パッケージを送信するためのインターフェイスを見つけるために逆解析プログラムが必要です。

在这里插入图片描述

まず、jadx-gui で Request をグローバルに検索し、次のクラスを見つけます。

在这里插入图片描述

見た目が少し似ているので、 anet.channel.request.Request クラスから始めます。このクラスには多くのメソッドがあります。このクラスをトレースするには r0trace を直接使用します。

在这里插入图片描述

トレース結果からランダムに関数を見つけてそのコールスタックを解析してみると、下図のマークのメソッドが注目に値すると思います。

在这里插入图片描述

jadx-gui でメソッドを表示します。asyncSend メソッドの最初のパラメーターにはリクエスト ヘッダーとリクエスト本文が含まれています。このメソッドは重要ではありません。重要なのは、メソッドが属する DegradableNetwork クラスです。中国語に翻訳されたクラス名は次のとおりです。分解可能なネットワーク

在这里插入图片描述

構築メソッドをクリックすると、その実装が表示されます。このクラスは NetworkProxy クラスから継承されます。その構築メソッドは親クラスの構築メソッドを呼び出すだけで、2 番目のパラメータは 1 です。

在这里插入图片描述

具体的なロジックはNetworkProxyにあるようですが、このクラスの構築メソッドを見てみましょう

在这里插入图片描述

コードの観点から見ると、2 番目のパラメータで型が決まります。このコンストラクタの相互参照を見てみましょう。

在这里插入图片描述

只有两个类引用了NetworkProxy的构造方法,其中DegradableNetwork我们已经看过了,它传入的第二个参数是1,下面来看看HttpNetwork,其实看名字也可以看出来一些信息,HttpNetwork类是个http协议相关的,那么DegradableNetwork也就意味着是另一种协议,这可能就是Charles抓不到包的原因。

在这里插入图片描述

HttpNetwork类的构造方法调用NetworkProxy的构造方法时,传入的第二个参数是0。

综合以上的信息,我们可以提出一种假设:如果hook了DegradableNetwork类的构造方法,让其在调用父类的构造方法时,第一个参数由1改为0,那么走的就是Http协议了。frida脚本如下:

在这里插入图片描述

运行脚本后刷新界面,使charles抓一些包,抓包效果是很好的,图片以及文字都抓到了

在这里插入图片描述

おすすめ

転載: blog.csdn.net/weixin_56039202/article/details/127725890