まえがき: この記事では、フィドラーがシミュレーターでデータ パケットをキャプチャする方法について説明します。本文についてはあまり触れません。
目次
1. HTTPS: https トラフィックを復号化し、安全でない証明書を無視します
2. 接続設定: リモート コンピューター接続を許可します。
3. ルート証明書のインストール: デスクトップ インストール証明書をエクスポートします。
1. ネットワーク設定: ブリッジドライバーのインストールとオープンブリッジ
2. WLAN 設定: fiddler プロキシを設定します。
3. 信頼証明書を設定します。 adb コマンドを使用して、インストールされた証明書をシステム ディレクトリに移動します。
ここから雷シミュレータの問題を直接解決します。上記はエラー処理であり、他のシミュレータが参照して解析できるようにします。
質問: fiddler thunderbolt シミュレーターはパケットをキャプチャできず、データを取得できませんか?
環境準備:雷シミュレータ、フィドラー、adb
adb と fiddler のダウンロード アドレス: fiddler+adb.zip - Lanzuoyun
アイデア: この記事で 99% 解決できます。問題を解くことよりも、フィドラー シミュレータのパケット キャプチャ問題の原理を理解してもらうことが重要ですので、参考までに考え方のフローチャートを以下に示します。
1. バイオリン弾きの設定
1. HTTPS: https トラフィックを復号化し、安全でない証明書を無視します
2. 接続設定: リモート コンピューター接続を許可します。
クリックしてリモート コンピューター接続を許可し、[OK] をクリックして保存します
3. ルート証明書のインストール: デスクトップ インストール証明書をエクスポートします。
デスクトップ上でエクスポートされた証明書をクリックしてインストールの次の手順に進み、インポートが成功するまですべてのデフォルトをクリックします。
Fiddler の構成が完了したら、Fiddler を閉じて再起動します。
2. シミュレータの設定
1. ネットワーク設定: ブリッジドライバーのインストールとオープンブリッジ
ブリッジドライバーをインストールすると、インストールは成功します。
インストールが完了したら、「設定を保存」をクリックして自動的に再起動します。
2. WLAN 設定: fiddler プロキシを設定します。
エミュレータ設定を開きます - WiFi メニューを開きます - WiFi 構成を変更します (一部のエミュレータには小さなペン変更キーがあり、一部のエミュレータではマウスを長押しすると「ネットワークを変更」と表示されます。これは同様で、自分で参照できます。コアは、Wi-Fi に接続されている手動エージェントを変更し、このマシンに IP を書き込み、フィドラー ソフトウェアで使用するポートを 8888 に書き込みます。ポートがフィドラーで占有されている場合は、ここで同じになるように変更します)、最後にクリックします。保存!
2. 証明書のインストール: 物理マシン IP: 8888
エミュレータ ブラウザを開き、ポート 8888 に対応するようにアドレス バーに物理マシンの IP を入力します。つまり、プロキシの IP とポートを入力します。証明書のインストールページにジャンプします。
なぜこの方法で証明書をインストールするのか 1. 簡単で便利 2. 物理マシンとの接続が正常かどうかを偽装して検出できる
画像は少し長いので、手順に従って気長にクリックしてください。
3. 信頼証明書を設定します。 adb コマンドを使用して、インストールされた証明書をシステム ディレクトリに移動します。
サンダーボルトシミュレータを使用した直接観察
元の - ユーザー証明書ディレクトリ: /data/misc/user/0/cacerts-added/
新しい - システム証明書ディレクトリ: /system/etc/security/cacerts/
インストールされた証明書を移動しない場合、信頼できない証明書がここに表示され、頻繁にポップアップ表示されます (組織単位が fiddler のインストールであることがわかります)。
これは、エミュレータの root 権限を事前に有効にしておく必要があります。有効にしないと、su でユーザーを切り替えることができません (詳細はエミュレータによって異なります。エミュレータで有効にする必要がある root 権限もあれば、有効にする必要のない root 権限もあり、また、 su できない問題が発生した場合は、エミュレータの理由を探してください)
-------------------------------------------------- -------------エラー分析 ----------------------------------- -------------------
次に、操作を続けて、/data/misc/user/0/cacerts-added/ の証明書ファイルを /system/etc/security に移動します。 /cacerts/ を使用して、信頼できる証明書にします。
# 进入adb shell 工具
adb shell
# 切换root用户
gracelte:/ $ su
# 查看用户证书安装的名称
127|gracelte:/ # ls /data/misc/user/0/cacerts-added/
e5c3944b.0
# 将用户证书挪至系统证书目录 /system/etc/security/cacerts/
gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/
mv: /system/etc/security/cacerts//e5c3944b.0: Read-only file system
証明書を /system/etc/security/cacerts/ に移動すると問題が報告されます。
エラー: mv: /system/etc/security/cacerts//e5c3944b.0: 読み取り専用ファイル システム
エラーの理由: /system は読み取り専用としてマウントされているため、どのように chmod しても、そのアクセス許可を変更できません。
解決策: 再マウント、マウント読み取り、書き込み、および実行権限
gracelte:/ $ su
# 重新挂载/system 文件夹
:/ # mount -o rw,remount /system
mount: '/system' not in /proc/mounts
エラー: マウント: '/system' が /proc/mounts にありません
エラーの理由: Android 8.0 以降では、上記の mount コマンドを使用しても、/system で表されるノードと権限情報が見つかりません。これは、Android 8.0 以降、Google が A/B システム機能とシステム パーティションを追加したためです。は ramdisk パーティションと一緒にパッケージ化されているため、システムの起動後はシステム パーティションはありませんが、システム イメージは / ルート ディレクトリに直接マウントされます。したがって、/proc/mounts ファイルには、/system の権限情報は含まれません。
エミュレータの Android バージョンを表示します。
# 进入adb shell 工具
adb shell
# 切换root用户
gracelte:/ $ su
# 查看安卓版本
gracelte:/ # getprop ro.build.version.release
9
解決策: ディスクのロックを解除し、再度マウントします。
# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root
# 解锁分区(需要升级到最新版本adb,才有disable-verity工具)
D:\platform-tools> adb disable-verity
# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount
エラー: adb のバージョンが古い場合、次の情報が表示されます
networking:
adb ppp <tty> [parameters] - Run PPP over USB.
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns
adb sync notes: adb sync [ <directory> ]
<localdir> can be interpreted in several ways:
- If <directory> is not specified, both /system and /data partitions will be updated.
- If it is "system" or "data", only the corresponding partition
is updated.
environmental variables:
ADB_TRACE - Print debug information. A comma separated list of the following values
1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given.
ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
理由: 古いバージョンの adb には disable-verity ツールキットが含まれていません
解決策: 最新の adb ツールをインストールします。
报错:fstab の読み取りに失敗しました。おそらく adb root を実行しますか?
理由: 9 つの Thunderbolt シミュレータがあり、これは直接インターフェイスされており、disable-verity を通じてディスクのロックを解除する必要はありませんが、他のタイプのシミュレータでも同様のこの機能が使用されるため、自分で決定してください。
解決策: エミュレータの設定で、ディスク管理により system.vmdk が書き込み可能になります。
-------------------------------------------------- -------------------------------------------------- -------------------------
ここから雷シミュレータの問題を直接解決します。上記はエラー処理であり、他のシミュレータが参照して解析できるようにします。
# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root
# 雷电模拟器,直接在设置打开磁盘写入功能
# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount
# 进入adb shell
D:platform-tools>adb shell
# 查看用户证书位置
gracelte:/ # ls /data/misc/user/0/cacerts-added/
e5c3944b.0
# 拷贝证书到目标文件夹
gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/
# Thunderbolt シミュレーター、設定でディスク書き込み機能を直接開きます
上記を設定した後、エミュレータとフィドラーを再起動してパケットをキャプチャします
他の:
質問: fiddler thunderbolt シミュレーターはパケットをキャプチャできず、データを取得できませんか?
回答: 私の手順に従っている人もいますが、それでもパケットをキャプチャできません。エミュレータのバージョンに問題があるはずです。adb ツールを使用して、プロキシをグローバルにプッシュしてください。
# adb.exe shell settings put global http_proxy 本机ip:fiddler端口
adb.exe shell settings put global http_proxy 192.168.0.102:8888