APKTOOL을 이용해 디컴파일이나 재컴파일 시 프레임워크 관련 에러가 뜨는 경우가 있다.
id:2를 가진 패키지의 프레임워크 리소스를 찾을 수 없단다... 뭘까???
Can't find framework resources for package of id:2. You must install proper framework files, see project website for more info.
※ ID 넘버는 애플리케이션의 pkgid와 상응하며 1~30까지 사용 가능함. 어떤 제조사의 기기를 사용하느냐에 따라 id 값이 상이함.
1. Framework파일이란?
Android 앱은 Android OS에서 제공하는 코드와 리소스를 활용하는데 이를 Framework (resources)라고 한다.
Apktool을 이용해서 Android 앱을 디컴파일하거나 재컴파일할때 이런 framework 파일을 사용하는데 일반적인 앱의 경우 AOSP(Android Open Source Project) 프레임워크를 사용하며 다음 경로에 1.apk로 저장된다.
1.apk는 따로 다운받을 필요없으며, apktool 사용 시 자동으로 다운로드 된다.
[사용자 경로]\AppData\Local\apktool\framework\1.apk
* 단, 오래된 apktool을 사용하거나 apktool을 사용한지 오래된 경우 다음 명령어를 사용하거나 해당 위치에 접근하여 직접 파일을 지워주고 실행하면 된다.
apktool empty-framework-dir
하지만 삼성, LG 등의 폰에 처음부터 빌트인되어 있는 앱(메모, 카메라, 인터넷 등)들을 디컴파일하거나 재컴파일할 때 처음에 언급한것과 같은 에러가 뜬다. 2.apk는 어디서 구하는 것일까??
2. Framework 파일 가져오기
대부분 기기의 /system/framework 폴더에 프레임워크 파일이 위치하며, 보통 resources.apk, res.apk, framework.apk 등의 이름으로 저장되어 있다.
해당 위치에 원하는 파일이 없는 경우, /data/system-framework, /system/app, /system/priv-app 등의 경로에 숨어있는 경우도 있으니 확인하면 된다.
내가 테스트한 LG 핸드폰의 경우 /system/framework/lge-res/lge-res.apk이름으로 저장되어 있었다.
adb pull 명령어를 사용해 해당 apk를 로컬 컴퓨터로 가져와 다음 경로에 위치시키면 된다.
adb pull /system/framework/lge-res/lge-res.apk [사용자 경로]\AppData\Local\apktool\framework\2.apk
//apk 파일명의 경우 에러에서 표기된 id와 동일하게 저장하면 된다.
3. APKTOOL 사용
올바른 위치에 2.apk가 저장된 것을 확인한 후 다시 apktool을 사용하면 문제없이 디컴파일하거나 재컴파일 할 수 있을것이다!!
https://ibotpeaches.github.io/Apktool/documentation/
'Hacking > Mobile' 카테고리의 다른 글
[Android] Frida를 이용한 SSL-Pinning 우회 (2) | 2020.02.05 |
---|---|
[기타] 파이썬 2.7과 파이썬 3 동시에 사용 - Windows10 (0) | 2020.01.30 |
[Android] 드로저(Drozer) 이용 (1) | 2020.01.29 |
[기타] 버프(burp)와 피들러(Fiddler) 연동 (0) | 2019.07.05 |
[iOS] ios 버전 10+ Burp SSL 인증서 등록 (1) | 2018.08.22 |