---
# System prepended metadata

title: PinningされたAPKの通信傍受

---

# 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
```


