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