에뮬레이터로 안드로이드 스튜디오를 사용하는 것을 전제로 한다.
실 기기에 적용하는 경우에도 크게 차이는 없다.
안드로이드 7.0부터 39개월 이상되는 인증서는 오류가 발생하기 때문에 프록시에서 기본 생성되는 인증서가 39개월이 넘으면 동작이 되지않는다.
내가 사용하는 Burpsuite의 경우 이 경우에 해당되어서 인증서를 별도로 생성해야 한다.
openssl req -x509 -days 360 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der
openssl rsa -in server.key -inform pem -out server.key.der -outform der
openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt
윗 칸에는 2에서 만든 der을, 아래 칸에는 3에서 만든 pkcs8 키를 넣어주면 된다.
openssl x509 -inform DER -in burp.der -out burp.pem
openssl x509 -inform PEM -subject_hash_old -in burp.pem
아래와 같은 형태로 나올텐데 이 경우 파일명이 a7363fd6.0 이 된다.
a7363fd6
-----BEGIN CERTIFICATE-----
MIIDfTCCAmWgAwIBAgIUZ+aC4TH59zXOuZbho638L1Jp3b4wDQYJKoZIhvcNAQEL
BQAwTjELMAkGA1UEBhMCS1IxCzAJBgNVBAgMAktSMQswCQYDVQQHDAJLUjELMAkG
A1UECgwCS1IxCzAJBgNVBAsMAktSMQswCQYDVQQDDAJLUjAeFw0yMjEyMDUwNjI5
MThaFw0yMzExMzAwNjI5MThaME4xCzAJBgNVBAYTAktSMQswCQYDVQQIDAJLUjEL
MAkGA1UEBwwCS1IxCzAJBgNVBAoMAktSMQswCQYDVQQLDAJLUjELMAkGA1UEAwwC
S1IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdhJLCc8XHXUu9zlbU
N1BGP1O6ArjafTqopg4b+t3Y+kdCbDwUMunLFr86hzkRaL+WiuuWT3TrAIEgZhUg
djUNDxG6POLXUh4Xk2TFujx/v4WqXVT0VmtFmKtLzoaOHhrESrEWvu1LmfciVrF7
o8KY0tFNSv2+ccna3J+WB/bhtgT9ehEtZY+r2dvL+QcqUzUZSPq1rY+SID6j1IsQ
AOd8v3YUWSH3YVfKKGLynoIsRU3eitLqneRDFzFSEixwgWOhQSa/YgAYzpAtzuby
H0kfQmUZg0f5JSHaGZSBmIA6c7mjGU9ZzaICMV+IXHF6uO1bSfXjiFKcQYvuwkf5
2GSBAgMBAAGjUzBRMB0GA1UdDgQWBBRNdLfX+G1TnhjBUu8h1vsQkGtisjAfBgNV
HSMEGDAWgBRNdLfX+G1TnhjBUu8h1vsQkGtisjAPBgNVHRMBAf8EBTADAQH/MA0G
CSqGSIb3DQEBCwUAA4IBAQB75OqIDQHKGeLX2ovH0CZqpsBAlfgohH6BekSo2Ypd
Z4c2zbgYm5J7CdwVaRP0kWlv/x005xA2lDKOtVa94K8o0KPScDU3rhuR9k72HF/1
rMTErh8kL9t1DZyHkbe6oRbL576O1LZrBKI2yWROY6vWNF+uNGIo5i5vBHKrNeDS
6GofQwpf8t1OL6aNMHUO/yoQ7g0E1dScBCIZr1wKy1gHcSzkj+6CaHq2hHN1+lqo
Cs2hk0j644egInUDi590RqAHNzpD62CE5O9KtjKZz33OZv+EsCGB8fivJV5i1/Vo
TehrXg0uTJU+KQjxJ6tYYKeR1OrBfv4w9lpHIWgpy4/A
-----END CERTIFICATE-----
avd에서 디바이스를 생성한다. 이 때 구글 플레이 스토어가 없는 버전으로 한다.
터미널에서 설치된 avd 목록을 확인한다.
./Library/Android/sdk/emulator/emulator -list-avds
./Library/Android/sdk/emulator/emulator -avd Pixel_XL_API_28 -writable-system
adb push a7363fd6.0 /sdcard/Downloads/a7363fd6.0
mount -o rw,remount /
여기가 사실 가장 귀찮은 부분이다.
혹시 윈도우 유저라면, 윈도우에는 GUI로 이걸 한방에 해주는 apk easytool gui가 있으니 구글에서 해당 툴을 검색해서 사용하는 것을 추천한다.
apktool d apk명 으로 언팩한다.
원하는대로 smali 코드를 수정한 후 저장
AndroidManifest.xml에서 android:extractNativeLibs을 true로 변경한다.
apktool b --use-aapt2 언팩폴더명 -o 저장할apk명 으로 리패키징한다.
키사이닝
keytool -genkey -v -keystore sample.keystore -alias sample -keyalg RSA -keysize 2048
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore sample.keystore sample.apk sample