APK 파일에서 프로젝트로 리버스 엔지니어링


244

실수로 Eclipse 에서 프로젝트를 지우고 남은 것은 휴대 전화로 전송 한 APK 파일입니다. 응용 프로그램을 .apk 파일로 내보내는 과정을 되돌려 서 프로젝트를 다시 가져올 수있는 방법이 있습니까?



2
당신은 일식 자체의 버전 이력이 있다는 것을 알고 있습니까?
eis


4
중요한 것을 쓰고 있다면 VCS를 사용해야합니다. Bitbucket에는 무료 개인 저장소가 있습니다.
lxknvlk

답변:


287

알 수없는 APK 파일에서 Java 코드를 생성하는 유용한 도구가 두 가지 있습니다.

  1. 에서 dex2jar 도구 다운로드 dex2jar을 .
  2. 도구를 사용하여 APK 파일을 JAR 파일로 변환하십시오 .

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
  3. JAR 파일이 생성되면 JD-GUI 를 사용하여 JAR 파일을 엽니 다. Java 파일이 표시됩니다.

출력은 다음과 유사합니다.

JD GUI


6
자원 파일을 얻는 방법
srini

26
cmd는 더 이상 사용되지 않으므로 d2j-dex2jar대신 사용하십시오 (v0.0.9.15).
프레드릭 가우스

1
@sri는 apk 파일의 이름을 zip으로 바꾸고 압축을 풀면 res폴더에 리소스 파일이 있습니다.
Hoang Huynh

8
@HoangHuynh 당신은 res읽을 수없는 xml 파일을 가진 폴더를 가질 것입니다
S.Thiongane

6
에서 Mac당신이 dex2jar 사용할 수없는 경우 : permission denied다음이 수행 $sudo chmod +x d2j-dex2jar.sh
Min2

81

우선 this비디오를 추천 합니다. 의심 할 여지가 없습니다.

그렇지 않으면 그것을 통해 가십시오

Procedure for decoding .apk files, step-by-step method:

Step 1:

새 폴더를 만들고 .apk 파일을 넣으십시오 (디코딩하려는). 이제이 .apk파일 의 확장자 를 .zip(예 : filename.apk에서 filename.zip으로 변경)로 바꾸고 저장하십시오.

.zip으로 변환하는 데 문제가있는 경우 link

이제 .zip 파일을 받으면 classes.dex 파일 등을 얻게됩니다.이 단계에서는 XML 및 Java 파일이 아닌 드로어 블을 볼 수 있으므로 계속하십시오. 확장 프로그램이 보이지 않으면 구성을 확인하십시오.

Step 2:

이제 동일한 zip apk 파일을 동일한 폴더에서 추출하십시오. 이제 여기에서 dex2jar를 다운로드하십시오.link

같은 폴더에 추출하십시오. 이제 명령 프롬프트를 열고 디렉토리를 해당 폴더로 변경하십시오.

그런 다음 작성 dex2jar classes.dex하고 Enter를 누르십시오. 이제 classes.dex.dex2jar같은 폴더에 파일이 있습니다.

그런 다음 Java 디 컴파일러를 다운로드하십시오.

이제 jd-gui를 두 번 클릭하고 열린 파일을 클릭하십시오. 그런 다음 classes.dex.dex2jar해당 폴더에서 파일을여십시오. 이제 src 이름으로 클래스 파일을 가져 와서이 클래스 파일을 모두 저장하십시오 (파일을 클릭 한 후 jd-gui에서 "모든 소스 저장"을 클릭하십시오). 해당 zip 파일을 추출 (classes_dex2jar.src.zip)하면 응용 프로그램의 모든 Java 파일이 제공됩니다.

이 단계에서 Java 소스를 얻지 만 xml 파일을 여전히 읽을 수 없으므로 계속하십시오.

Step 3:

이제 다른 새 폴더를 열고이 파일들을 넣으십시오

  1. 디코딩하려는 .apk 파일을 넣습니다.

  2. 대한 Apktool를 다운로드 windows v1.xApktool

구글을 사용하여 창을 설치하고 같은 폴더에 넣으십시오

  1. Google을 사용하여 framework-res.apk 파일을 다운로드하고 동일한 폴더에 저장하십시오 (모든 apk 파일이 framework-res.apk 파일을 필요로하는 것은 아님)

  2. 명령 창을 엽니 다

  3. APKtool의 루트 디렉토리로 이동하여 다음 명령을 입력하십시오. apktool if framework-res.apk.

위의 명령은이어야합니다 Framework installed ....

  1. apktool d "appName".apk ( "appName"은 디코딩하려는 응용 프로그램을 나타냄) 이제 해당 폴더에 파일 폴더가 생겨 XML 파일도 쉽게 읽을 수 있습니다.

Step 4: 마지막으로 우리는 res/시작시 우리의 목표 인 프로젝트의 Java 코드뿐만 아니라 코드를 얻었습니다 .

P.S. 위의 단계를 수행하여 res 폴더를 얻을 수없는 경우 새로 설치하십시오 apktool

  • Java 1.7이 설치되어 있습니까? Apktool 2.x 설치
  • Java 1.6 이상이 설치되어 있습니까? Apktool 1.x 설치

Enjoy and happy coding


정말 유용합니다. 당신이 언급하지 않은 것 :는 apktool.jar같은 패키지가 아닙니다. 이전 패키지에서 가져 와서 같은 디렉토리에 붙여 넣었습니다 apktool.
S.Thiongane

1
나는 코드를 리버스 엔지니어링했지만 왜 클래스의 이름, 변수가 aa, bc 등과
같으며

1
cmd에서 해당 작업을 수행 할 수 없음
Meghal Agrawal

다른 방법은?
Meghal Agrawal

2
@ user2934930 이는 ProGuard를 사용하여 코드가 난독 화되었음을 의미합니다.
cascal

58

소프트웨어가 없거나 너무 많은 단계가 없습니다 ..

이 사이트에서 APK를 업로드하고 모든 리소스를 얻으십시오.

https://www.apkdecompilers.com/

이 웹 사이트는 APK 파일에 포함 된 코드를 디 컴파일하고 파일의 다른 모든 자산을 추출합니다.

참고 :이 웹 사이트에서 APK 파일을 디 컴파일하고 1 분 안에 코드를 얻습니다.

업데이트 1 :

다른 온라인 디 컴파일러 사이트를 찾았습니다.

http://www.javadecompilers.com/apk/- 팝업 차단을 요구하는 지속적으로 작동하지 않음

업데이트 2 :

Play 스토어에서 APK 디 컴파일러 앱을 찾았습니다.

https://play.google.com/store/apps/details?id=com.njlabs.showjava

우리는 안드로이드 폰에서 apk 파일을 디 컴파일 할 수 있습니다. 또한이 응용 프로그램에서 java 및 xml 파일을 볼 수 있습니다

업데이트 3 :

Android Studio 2.2 버전에서 다른 옵션 APK 기능 분석을 사용할 수 있습니다

빌드-> APK 분석-> APK 선택-> 결과 제공

여기에 이미지 설명을 입력하십시오


3
마지막 메소드에서 우리는 자바 클래스를 열 수없고 메소드 이름 만 보여줍니다
Choletski

@Choletski ShowJava를 사용해 보셨습니까? 더 시도 및 저를 업데이트하지 않는 경우
란 지트 쿠마르에게

@RanjithKumar는 50MB APK 크기로 제한됩니다. 디 컴파일하려면 85MB APK가 있습니다.
Ravi Sharma


1
안드로이드 스튜디오에서 디 컴파일 된 프로젝트를 실행하는 방법은 무엇입니까? 누구든지 이것에 대해 쓸 수 있습니까?
mayur kukadiya


4

실제로는 아닙니다. smali 또는 dex2jar 와 같이 여러 사람이 읽을 수있는 덱스 디스어셈블러 / 디 컴파일러 스위트가 있으며 , 반인 식적 으로 읽을 수있는 출력을 생성합니다 (dex2jar의 경우 JD-GUI 와 같은 것을 사용하여 Java 코드를 얻을 수 있지만 프로세스는 다음과 같습니다 ) 완벽하지는 않으며 소스 코드를 100 % 다시 만들 수는 없지만 소스 트리를 다시 시작할 수있는 가능성이 있습니다.


@MAC : APK 파일이 아닌 소스가 필요합니다 !!
Shashank Kadne

2
@ShashankKadne 내가 다시 말을 듣지 못할 수도 있습니다
MAC

3

예, 프로젝트를 다시받을 수 있습니다. yourproject.apk파일 이름을로 바꾸면 yourproject.zip해당 ZIP 파일 내의 모든 파일이 표시됩니다. 파일 확장자를 .apk에서 .zip으로 변경합니다. 해당 ZIP 파일에서 파일을 추출하고 classes.dex다음 방법으로 디 컴파일하십시오.

먼저, DEX의 모든 (컴파일 된) 클래스를 JAR로 추출하는 도구가 필요합니다. 중국 학생이 만든 dex2jar 이라는 것이 있습니다.

그런 다음 JD-GUI 를 사용 하여 JAR의 클래스를 소스 코드로 디 컴파일 할 수 있습니다 . dex2jar가 일부 최적화를 적용하므로 결과 소스 코드는 상당히 읽을 수 있어야합니다.


3

Android 플랫폼의 경우 Play 스토어에서 ShowJava 를 사용해 볼 수 있습니다 .

앱 인터페이스를 통해 생성 된 코드를 참조 할 수 있으며 생성 된 Java 파일 및 폴더 구조는 ShowJava폴더의에 저장되어 변환 /sdcard결과 .jar파일 과 함께 저장됩니다 .

기본보기 하단에 광고 배너가있는 앱은 무료이지만 앱을 제거하는 인앱 구매 옵션 (3,99 $)이 있습니다. 인앱 구매는 광고 배너를 제거하는 것 외에 다른 기능을 추가하지 않습니다.

공개 : 나는 어떤 식 으로든 그와 제휴하지 않은 앱 개발자가 아닙니다.


나는 보통을 위해 ... 멋진 응용 프로그램을 사용
라훌 Kushwaha

2

아래 단계에 따라이 작업을 수행 하거나이 프로세스에 apkToJava gem 을 사용 하십시오. 작동하는 데 필요한 도구를 설치하는 작업도 수행합니다.

  • apk 파일을 zip으로 변환
  • 파일을 압축 해제
  • 그것으로부터 classes.dex를 추출하십시오.
  • dex를 사용하여 classes.dex를 jar 파일로 변환하십시오.
  • jadx gui를 사용하여 jar 파일을 Java 소스 코드로 엽니 다.


2

다음은 APK 파일에서 소스 코드로 리버스 엔지니어링을 수행하는 데 사용할 수있는 도구 중 일부입니다.

  1. Dex2jar
  2. 자바 디 컴파일러
  3. APKTool
  4. APK 분석기

2

Android Studio 3.5에서는 1 분만에 쉽게 달성 할 수 있습니다. 다음은 현명한 프로세스입니다.

1 : Android Studio를 열고 창 버튼을 누릅니다-> Android Studio 입력-> 아이콘을 클릭하면 다음과 같은 Android Studio 스플래시 화면이 열립니다.

여기에 이미지 설명을 입력하십시오

2 : 여기에서 "Profile or debug APK" 옵션을 클릭하고 apk 파일을 선택하고 ok를 누릅니다.

여기에 이미지 설명을 입력하십시오

3 : apk의 크기에 따라 모든 매니페스트 및 Java 클래스가 1 분 안에 열립니다.

여기에 이미지 설명을 입력하십시오

그게 다야.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.