2019-04-24T11:39:00.000+09:00

ビルドしちゃったAndroidアプリのTLS通信をProxy傍受できるようにする

人間誰しも、なんらかの理由でビルドした後のAndroidアプリで通信を傍受したい時がある。そういう時は大概、自宅だったりして手元にはソースコードがない場合だ。
肝となる作業は下記の記事となんら変わらないが、ビルド済みAPKファイルからこの手順を確認する。

blog.s64.jp

1. 正規の方法でapkを取り出す

もし実機にインストールしてあるなら、adbコマンドを用いて手元のPCに持ってくる。

2. apktoolをインストールする

PATHを通しておく。インストール手順はこちら

3. apkを展開する

apktool d your.built.droid.app-0.apk

4. 構成ファイルを仕込む

やることは3つ。

  • res/xml/nsc.xml のようなパスに network-security-config を作る
  • res/raw/myca.der のようなパスに .der ファイルを置く
  • AndroidManifest.xml 内の <application/>android:networkSecurityConfig="@xml/nsc" のような設定を加える

4. 再パッケージ

apktool b ./your.built.droid.app -o falsified-unsigned.apk

5. 署名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android -signedjar falsified-signed.apk falsified-unsigned.apk androiddebugkey

~/.android/debug.keystore がない場合、生成することもできる

6. インストールと起動

adbコマンドを用いてインストールする。
logcatで NetworkSecurityConfig: Using Network Security Config from resource nsc debugBuild:...のようなログが表示されればOK。