2016-08-16 5 views
1

나는 apktool을 사용하여 디 컴파일 한 앤드 스튜디오에 파일을 가져 오려고했습니다. 그러나 Android Studio로 파일을 가져 오려고하면 "프로젝트"브라우저에 아무 것도 표시되지 않습니다. 가져 오기 프로세스에서 첫 번째 단계에서는 "기존 소스에서 프로젝트 만들기"를 선택했습니다. 어쨌든이 문제를 해결할 수 있습니까? 또한, 거기에 안드로이드 스튜디오 메모장에서 파일을 사용하는 어쨌든 + +?Android 스튜디오 가져 오기 문제. (Apktool)

감사합니다.

답변

0

apktool은 소스를 생성하는 리버스 엔지니어링 도구이지만 gradle 빌드 스크립트는 생성하지 않으므로 열 수있는 프로젝트로 표시되지 않습니다. apktool은 원본 파일 만 생성하고 Android Studio는 gradle 빌드 파일을 채우기 때문에 "기존 소스에서 가져 오기"해야합니다.

프로젝트를 가져 오면 원하는 파일을 프로젝트의 디렉토리에 추가 할 수 있습니다. 여기에는 Notepad ++를 포함하여 다른 프로그램에서 생성하는 것들이 포함됩니다. 복사/붙여 넣기 또는 드래그/드롭으로 프로젝트보기 (Alt + 1)에서 Android Studio에서이 작업을 수행 할 수 있습니다.

3

apktool은 클래스를 추출하고 매니페스트를 추출하는 데 도움이되는 도구 일뿐입니다. Android 빌드 프로세스 (https://source.android.com/source/jack.html)의 세부 사항과 흐름을 살펴보면 모든 클래스가 난독 화되고 압축되어 .dex 파일에 저장된다는 것을 알 수 있습니다 (자신의 클래스, Android 지원 라이브러리 및 기타 3 차원 라이브러리를 포함) 파티 라이브러리).

일반적으로 .apk 파일에는 다음 유형의 파일 만 포함됩니다.

  1. 덱스 파일은
  2. 매니페스트 (안드로이드 허가 및 메타 데이터 기능) (이것은 65K 방법의 문제가있는 경우뿐만 아니라 하나가 될 수 있음)
  3. 자산 (그리기, 자산 폴더, 레이아웃 및 R을)

따라서 apktools 및 다른 도구 (j-soup)를 사용하여 일부 리버스 엔지니어링을 수행했을 때. 소스 파일 만 가질 수 있습니다. Daniel 방식으로 프로젝트를 Android Studio로 가져올 수 있지만 프로젝트에 많은 오류가있을 수 있습니다.

  1. R.java 생성 할 수 없습니다 (모든 사용자 ID 값이 APK에 unqiue 정수로 변환되기 때문에.이는 사람이 읽을 수있는 의미로 되돌릴 수 없습니다 심지어는 apktool 사용)

  2. 난독 화 된 클래스 및 변수 이름입니다. apk 빌드 과정을 언급했듯이 클래스와 변수 이름은 빌드 후에 난독 화됩니다. 거의 모든 이름이 (a, b, c, d, e ...)로 바뀌므로 리버스 엔지니어링은 응용 프로그램 내부의 로직을 찾기 어렵습니다.

  3. Proguard 문제, 일부 응용 프로그램은 고급 기술을 사용하여 컴파일 할 수 있습니다 더 복잡한 논리 흐름을 사용하는 소스 코드 (Dexguard처럼). 리버스 엔지니어링을 마친 후에는 애플리케이션의 내부 로직을 찾는 것이 더 어려워 질 것입니다.

"간단한"응용 프로그램 인 경우 난독 화 코드에서 어떤 일이 발생하는지 알 수 있습니다.

많은 라이브러리가 포함 된 "복잡한"응용 프로그램 인 경우 내부의 논리를 파헤 치려고하면 재앙이 발생합니다.

+0

그래서 engeenier를 되돌리고 안드로이드 스튜디오에서 사용할 방법이 없습니까? – PSM

+0

그렇게하는 것은 매우 복잡한 작업이므로 피해야합니다. 간단한 Hello world apk를 빌드하십시오. http://stackoverflow.com/questions/21010367/how-to-decompile-an-apk-or-dex-file-on-android-platform 도구를 사용하여 디 컴파일 한 다음 Android Studio를 사용하여 다시 빌드하십시오. Android에서 리버스 엔지니어링을 할 때 문제가 무엇인지 알 수 있습니다. –

+0

감사합니다. 하지만 그렇게 할 방법을 알고 있습니까? 나는 그것의 복잡성을 안다. 그러나 가능하다면 어떻게, 감사하는지 알고 싶다. – PSM