티스토리 뷰
안드로이드 앱 리버싱
역공학이란 프로그램을 복제하거나 유지 보수 등을 위해 분해해보는 과정입니다. 여기서 디컴파일은 역공학 단계에서 아주 중요한 역할을 합니다.
여기에서 사용되는 방법과 기법들은 앱의 보안 향상을 위해서만 사용되어야하며, 불법적인 목적을 가지고 이용할 경우 형사처벌의 대상이 될 수 있습니다.
리버싱을 한 후에 코드 변형자가 악의적인 코드를 삽입한 후 다시 패키징까지 가능합니다. 따라서 공식 앱스토어가 아닌 곳에서 다운로드하시는 행위는 치명적인 결과를 낳을 수 있으니 조심하시길 바랍니다.
APK tool
APK tool은 안드로이드 앱을 대상으로하는 리버싱 엔지니어링 도구입니다. apk파일을 분석하여 리소스를 뽑아내거나 자바 코드로 추출할 수도 있습니다. 윈도/리눅스/맥에서도 사용 가능합니다.(다른 분석툴 : apkanalyzer , AAPT2)
자바 코드 수준까지 얻어낼 수 있기때문에, 코드를 수정하여 앱을 빌드하는 것도 가능합니다. 실제로 안드로이드 앱의 주요 코드를 뽑아내기 위해 많이 사용하고 있어요.
apk는 단순히 dex파일과 리소스들을 압축해놓은 것이어서 apk 파일을 unzip해도 파일들이 보입니다. 하지만 매니페스트 파일이 암호화되어 재 빌드가 불가능하게 되어있습니다. 그래서 apk tool을 사용하면 매니페스트 파일의 내용이 확인 가능하니 참고해 주세요.
apk디코딩을 통해서 resource.asrc, class.dex, AndroidManifest, 리소스 xml, png 등을 추출할 수 있어요. 이 중에서 AndroidManifest를 분석하고 해당 apk의 package name, version code, permission, intent filter 등 기본 정보를 확인할 수 있습니다. 그리고 App을 smali (=Dalvik Byte code, DEX 파일을 사람이 읽을 수 있도록 표현) 디컴파일해서 동작 방식을 소스를 통해서 유추할 수도 있으니 조심하세요.(여기서 DEX 파일은 Android 가상머신인 Dalvik이 인식할 수 있도록 된 바이트 코드입니다.
추가적으로 Java코드를 확인하는 것이 목적이라면, dex2jar, jd-gui, bytecode viewer를 이용해 주세요.
다운로드하길 원하신다면 아래의 링크를 참고해주세요.
https://ibotpeaches.github.io/Apktool/documentation/
dex2jar
Dex2jar은 말 그대로 dex파일을 jar파일로 변환시켜 주는 도구예요. apktool로 해체한 dex파일을 넣어 변환시켜 주시면 됩니다.
https://www.kali.org/tools/dex2jar/
JD-GUI
jar 파일을 디컴파일하여 java파일로 전환합니다.
이런 도구들을 가지고 리버싱을 진행할 수 있어요. 다음에는 실제로 제가 빌드한 앱을 가지고 실험을 진행해보려고 합니다. 플러터에서 빌드한 앱은 어떻게 나올까 정말 궁금해요.