# PinningされたAPKの通信傍受 apkファイルをデコンパイルする。 ``` % apktool d testapk.com.apk ``` デコンパイルで出力されるファイル ``` % cd testapk.com % ls AndroidManifest.xml assets/ original/ smali_classes2/ META-INF/ kotlin/ res/ smali_classes3/ apktool.yml lib/ smali/ unknown/ ``` 「AndroidManifest.xml」の「application」タグに下記を追加する。 ``` android:networkSecurityConfig="@xml/network_security_config" ``` 追加後こんな感じ ``` <application android:networkSecurityConfig="@xml/network_security_config" android:allowBackup="false" ... ``` 「res/xml/network_security_config.xml」を下記を記載し追加する。 ``` % vim res/xml/network_security_config.xml <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="system"/> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config> ``` 再コンパイルする。 ``` % cd ../ % apktool b ./testapk.com ``` dist配下にコンパイルしたapkファイルが作成される。 ``` % cd testapk.com/dist/ % ls testapk.com.apk ``` 署名する。 ``` % keytool -genkeypair -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 10950 -dname "CN=Android Debug,O=Android,C=US" -keystore debug.keystore -storepass android ``` ``` % jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA1 -tsa http://timestamp.digicert.com -keystore debug.keystore -storepass android testapp.com.apk androiddebugkey ```