apktool은 클래스를 추출하고 매니페스트를 추출하는 데 도움이되는 도구 일뿐입니다. Android 빌드 프로세스 (https://source.android.com/source/jack.html)의 세부 사항과 흐름을 살펴보면 모든 클래스가 난독 화되고 압축되어 .dex 파일에 저장된다는 것을 알 수 있습니다 (자신의 클래스, Android 지원 라이브러리 및 기타 3 차원 라이브러리를 포함) 파티 라이브러리).
일반적으로 .apk 파일에는 다음 유형의 파일 만 포함됩니다.
- 덱스 파일은
- 매니페스트 (안드로이드 허가 및 메타 데이터 기능) (이것은 65K 방법의 문제가있는 경우뿐만 아니라 하나가 될 수 있음)
- 자산 (그리기, 자산 폴더, 레이아웃 및 R을)
따라서 apktools 및 다른 도구 (j-soup)를 사용하여 일부 리버스 엔지니어링을 수행했을 때. 소스 파일 만 가질 수 있습니다. Daniel 방식으로 프로젝트를 Android Studio로 가져올 수 있지만 프로젝트에 많은 오류가있을 수 있습니다.
R.java 생성 할 수 없습니다 (모든 사용자 ID 값이 APK에 unqiue 정수로 변환되기 때문에.이는 사람이 읽을 수있는 의미로 되돌릴 수 없습니다 심지어는 apktool 사용)
난독 화 된 클래스 및 변수 이름입니다. apk 빌드 과정을 언급했듯이 클래스와 변수 이름은 빌드 후에 난독 화됩니다. 거의 모든 이름이 (a, b, c, d, e ...)로 바뀌므로 리버스 엔지니어링은 응용 프로그램 내부의 로직을 찾기 어렵습니다.
Proguard 문제, 일부 응용 프로그램은 고급 기술을 사용하여 컴파일 할 수 있습니다 더 복잡한 논리 흐름을 사용하는 소스 코드 (Dexguard처럼). 리버스 엔지니어링을 마친 후에는 애플리케이션의 내부 로직을 찾는 것이 더 어려워 질 것입니다.
"간단한"응용 프로그램 인 경우 난독 화 코드에서 어떤 일이 발생하는지 알 수 있습니다.
많은 라이브러리가 포함 된 "복잡한"응용 프로그램 인 경우 내부의 논리를 파헤 치려고하면 재앙이 발생합니다.
그래서 engeenier를 되돌리고 안드로이드 스튜디오에서 사용할 방법이 없습니까? – PSM
그렇게하는 것은 매우 복잡한 작업이므로 피해야합니다. 간단한 Hello world apk를 빌드하십시오. http://stackoverflow.com/questions/21010367/how-to-decompile-an-apk-or-dex-file-on-android-platform 도구를 사용하여 디 컴파일 한 다음 Android Studio를 사용하여 다시 빌드하십시오. Android에서 리버스 엔지니어링을 할 때 문제가 무엇인지 알 수 있습니다. –
감사합니다. 하지만 그렇게 할 방법을 알고 있습니까? 나는 그것의 복잡성을 안다. 그러나 가능하다면 어떻게, 감사하는지 알고 싶다. – PSM