sourcecode

APK 파일에서 소스 코드를 가져올 수 있는 방법이 있습니까?

copyscript 2023. 6. 18. 16:14
반응형

APK 파일에서 소스 코드를 가져올 수 있는 방법이 있습니까?

노트북 하드 드라이브가 고장 나서 지난 두 달 동안 작업한 앱의 소스 코드를 모두 잃어버렸습니다.제가 가지고 있는 것은 친구에게 보낸 이메일에 저장된 APK 파일뿐입니다.

이 APK 파일에서 내 소스 코드를 추출할 수 있는 방법이 있습니까?

가장 간단한 방법은 온라인 도구인 디컴파일러를 사용하여 apk를 업로드하고 소스 코드를 가져옵니다.


.apk 파일을 디코딩하는 절차, 단계별 방법:

1단계:

  1. 새 폴더를 만들고 디코딩할 .apk 파일 위에 복사합니다.

  2. 이제 이 .apk 파일의 확장자 이름을 .zip(파일 이름에서 이름 변경)으로 변경합니다.pk to filename.zip)을 입력하여 저장합니다.이제 classes.dex 파일에 액세스할 수 있습니다.이 단계에서는 그림을 볼 수 있지만 .xml 및 .java 파일은 볼 수 없습니다.

2단계:

  1. 이제 이 .zip 파일을 동일한 폴더 또는 새 폴더에 압축을 풉니다.

  2. 덱스2jar 다운로드(코드를 다운로드하지 말고 오른쪽에 있는 릴리스 단추를 클릭한 다음 이름이 지정된 파일을 다운로드합니다.dex2jar-X.X.zip동일한 폴더 또는 새 폴더에 압축을 풉니다.

  3. classes.dex 파일을 덱스2jar 폴더로 이동합니다.

  4. 이제 명령 프롬프트를 열고 디렉터리를 해당 폴더로 변경합니다. 그고쓰다를 쓰세요.d2j-dex2jar classes.dex 쓰기(Mac 는 Ubuntu 경우 기쓰의또)./d2j-dex2jar.sh classes.dex를 누른후 Enter 를 누릅니다.를 누르고 Enter 키를 누릅니다.이제 classes.dex.dex2jar 파일이 동일한 폴더에 있습니다.

  5. Java 디컴파일러를 다운로드하고 jd-gui를 마우스 오른쪽 단추로 클릭한 다음 파일 열기를 클릭하고 해당 폴더에서 classes.dex.dex2jar 파일을 엽니다.이제 클래스 파일을 가져옵니다.

  6. 모든 클래스 파일(Injd-gui, File -> Save All Sources 클릭)을 src 이름으로 저장합니다.이 단계에서는 Java 코드를 얻지만 .xml 파일은 여전히 읽을 수 없습니다.

3단계:

이제 다른 새 폴더 열기

  1. 디코딩할 .apk 파일을 넣습니다.

  2. 최신 버전의 apktool AND apktool 설치 창(둘 다 동일한 링크에서 다운로드 가능)을 다운로드하여 동일한 폴더에 배치합니다.

  3. 명령 프롬프트 열기

  4. 실행apktool if framework-res.apk(없으면 여기서 가져오세요) 그리고 다음

  5. apktool d myApp.apkmyApp.apk는 디코딩할 파일 이름입니다.)

이제 해당 폴더에 파일 폴더가 있고 .xml 파일을 쉽게 읽을 수 있습니다.

4단계:

단계가 없습니다. 두 폴더(새 폴더 모두)의 내용을 하나의 폴더에 복사하십시오.

소스 코드를 즐기십시오!

이것은 다른 설명입니다. 위의 설명으로 인해 다른 사용자가 꼼짝 못할 경우를 대비하여 설명합니다.다음 단계를 수행합니다.

  1. 다운로드(또는 Linux용) 및 http://ibotpeaches.github.io/Apktool/install/ 에서 다운로드합니다.
  2. 에서 jar 파일이위에아변래경다니합로서을름▁jar▁the▁rename다로 변경합니다.apktool.jar 두 .

  3. 박스를 .cmd.exe 폴더로 참고 사항도 Java 환경이 설치되어 있는지 확인합니다(Linux의 경우 필요한 라이브러리에 대한 참고 사항도 확인하십시오).
  4. 시작:apktool decode [apk file]

    중간 결과: 리소스 파일,AndroidManifest.xml

  5. 을 풉니다. APK 파일 압축을 풉니다.

    중간 결과:classes.dex

  6. 하여 압축을 풉니다.dex2jar-0.0.9.15.ziphttp://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=에서
  7. 앤 드롭 드그앤롭드.classes.dexdex2jar.bat (으)로 입력합니다.<path_to>\dex2jar.bat classes.dex에서; 도스 박서, 리용스를 사용합니다.dex2jar.sh)

    중간 결과:classes_dex2jar.jar

  8. 을 풀다classes_dex2jar.jar하는 디컴파일러에 이 될 수 있음
  9. 클래스 파일을 압축 해제합니다(예: JD-GUI 또는 DJ Decompiler 사용).

    결과: 소스 코드

참고: 타사 패키지의 디컴파일은 허용되지 않습니다. 이 가이드는 APK 파일에서만 개인 소스 코드를 복구하기 위한 것입니다. 마지막으로, 결과 코드는 난독화될 가능성이 높습니다.

파일을 압축 해제할 수도 있습니다.APK은 한 문제에 이 있습니다: 파일하, 큰부딪힐가능높다습니이성에문제의나▁file.

당신이 작성한 코드를 반환하지 않을 것입니다.대신 컴파일러가 줄을 선 것은 무엇이든 반환하며 변수는 임의 이름, 함수는 임의 이름으로 지정됩니다.다시 시작하는 것보다 사용자가 가지고 있던 코드로 압축을 풀고 복원하는 데 훨씬 더 많은 시간이 걸릴 수 있습니다.

안타깝게도, 이와 같은 것들이 많은 프로젝트들을 죽였습니다.
저는 미래를 위해 CVS, SVN, git 등과 같은 버전 제어 시스템을 배우는 것을 강력히 추천합니다.

백업 방법에 대해 설명합니다.

또한 Play Store에는 apk(시스템 응용프로그램)를 압축 해제하고 스마트폰에서 소스 코드를 바로 볼 수 있는 새로운 응용프로그램이 있습니다.파일을 SD 카드에 저장하여 컴퓨터에서도 볼 수 있습니다.루트 또는 다른 것이 필요하지 않습니다.

그냥 설치하고 즐기세요.저는 이것이 앱의 압축을 푸는 가장 쉬운 방법이라고 생각합니다.

pktool은 당신이 시도할 수 있는 가장 좋은 것입니다.나는 그것으로 xml을 좀 저장했지만, 솔직히 나는 그것이 .java 코드와 어떻게 작동할지 모릅니다.

당신이 유일한 코더라도 코드 저장소를 가지고 있는 것을 추천합니다.는 제 프로젝트를 위해 프로젝트 락커를 사용해 왔습니다.무료 svn 및 git repos를 제공합니다.

이 두 기사는 의 사용을 결합하는 방법을 설명합니다.apktool그리고.dex2jarAPK이클립스 프로젝트를 작성하고 실행할 수 있는 Eclipse 프로젝트를 만듭니다.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

기본적으로 당신은:

  1. 사용하다apktool에서 리소스 .
  2. 사용하다dex2jar이클립스가 원하는 형식의 클래스가 포함된 jar 파일을 가져옵니다.
  3. 리소스 파일 및 새 jar 파일에서 Eclipse 프로젝트 지점 생성
  4. zip 유틸리티를 사용하여 jar 파일을 열고 기존 리소스 삭제
  5. 다을음사여하용파일열기▁jar로 jar .JDGui
  6. 요한소스코모두가다니져옵드필를▁에서 필요한 소스 코드는 무엇이든 .JDGui의 클래스에 합니다.
  7. 같은 클래스를 여러 번 정의하지 않도록 jar 파일에서 해당 클래스 삭제
  8. 실행합니다.

pk 툴이 작동할 것입니다.소스 코드를 추출하기 위해 키 저장소를 알 필요도 없습니다.주요 단점은 소스가 Java 대신 Smali 형식으로 제공된다는 것입니다.아이콘 및 main.xml과 같은 다른 파일은 완벽하게 정상적으로 제공되므로 최소한 복구하는 데 시간을 들일 수 있습니다.궁극적으로 Java 코드를 처음부터 다시 작성해야 할 가능성이 높습니다.

여기에서 pk 도구를 찾을 수 있습니다.pktool과 적절한 도우미(Windows, Linux 또는 Mac OS용)를 다운로드하기만 하면 됩니다.7-zip과 같은 도구를 사용하여 압축을 푸는 것이 좋습니다.

몇 가지 방법이 있습니다.

  1. Android Studio 3.0의 "Profile or Debug APK" 기능을 사용합니다.

    Android Studio에서 APK를 열고 탐색할 수 있습니다.클래스가 작은 크기로 압축 해제됩니다.리소스는 추출되지 않으며 소스 코드(안드로이드 스튜디오 3.0 카나리아 9)가 없으면 "정의로 이동", "모든 참조 찾기" 및 디버깅이 작동하지 않습니다.일부 추가적인 작은 기능은 작은 아이디어와 함께 작동할 수 있습니다.

    android-studio

    select-file

    code

  2. jadx를 사용합니다.

    Jadx는 지정된 APK의 코드를 Java 소스 파일로 압축 해제합니다.

    jdax-img

  3. pk 도구를 사용합니다.

    Pktool은 주어진 pk에 대해 리소스를 추출하고 코드를 smali로 분해하는 명령줄 도구입니다.pktool을 사용하여 다시 컴파일할 수도 있습니다.다음은 실제 실행 중인 사례입니다.

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
    

소스를 쉽게 확인할 수 있습니다.

2에서 Android 스튜 2.3에,Build -> Analyze APK -> Select the apk that you want to decompile.
소스 코드가 표시됩니다.

참조용 링크:
https://medium.com/google-developers/://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

온라인 도구 아래:

http://www.javadecompilers.com/apk

한 번의 클릭으로 모든 것을 수행합니다: 매우 좋은 디컴파일러로 디컴파일된 .java 파일 + 리소스 + xml (하나의 .zip 파일에서) (다른 컴파일러가 "디컴파일할 수 없음" 또는 일부 안드로이드 어셈블러/머신 코드와 같은 내부의 주석을 반환하는 장소/함수의 jadx 리턴 자바 코드)

이 사이트 https://www.apkdecompilers.com/ 은 자동으로 이를 수행했습니다.

저는 수락된 답변에 언급된 사이트를 먼저 시도해 보았지만, 그것은 저에게 효과가 없었습니다.

사용자의 상태에 따라 안드로이드 apk:

조건 1: 굳지 않음 (텐센트 레구/Qihoo 360/...)

선택1: 온라인 서비스 사용

예:

www.javadecompilers.com 사용하기

이동:

apk에서 Java 소스 코드로 자동 디코딩

단계:

upload파일 + 일파 + 클릭 클릭Run time + 잠시기십 + 릭클을 합니다.Download -zip + 압축풀기 ->를 .

sources/com/{yourCompanyName}/{yourProjectName}

예상되는 Java 소스 코드입니다.

선택 2: 직접 분해/균열

관련 도구를 사용하여 직접 디컴파일/크래킹:

사용하다jadx/jadx-gui개종시키다apkjava sourcecode

jadx-0.9.0.zip을 다운로드한 후 압축을 풉니다.bin/jadx그러면:

  • 명령줄 모드:
    • 실행: 터널실행시미::jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder가 됩니다.sources그리고.resources
      • sources/com/{yourCompanyName}/{yourProjectName}하는 것은 당신의 예상되는 것입니다.java sourcecode
  • GUI 모
    • 번 하여 을 실행합니다.jadx-0.9.0/bin/jadx-gui(Linux's)jadx-gui.sh윈도jadx-gui.bat)
    • 다열apk
    • 자동 디코딩됩니다. -> 예상되는 Java 소스 코드를 확인합니다.
    • save all또는save as Gradle project

예:

조건 2: 경화 (텐센트 레구/키후 360/...)

주된 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

자세한 설명:

1단계:apk/app to dex

tool(사용하기)FDex2 여러 개) /DumpDex) 설정/설정(설정)dex 중인 을 다운로드합니다.

단계:

환경을 준비합니다.

  • a root에드 안드로이드
    • 진짜 전화
    • 또는 에뮬레이터
      • 여기서 Chinese Nox App Player사용합니다.
  • 안드로이드 앱
    • 전화기 또는 에뮬레이터에
  • 설치된 설치 관리자
  • FDex2/DumpDex를 XPosed에 넣고 활성화합니다.
  • 전화기/에뮬레이터에 Android 앱 설치

dex 중인

  • 려달을 FDex2 이름을 를 캡처/할 수 합니다.

  • (전화/에뮬레이터에서) 앱 실행
  • 전체 는 apk 리복사에서 찾아 합니다./data/data/com/yourCompanyName/yourProjectName
    • 일반적으로 루트 폴더에서 여러 개를 찾을 수 있습니다.dex

2단계:dex to jar

tool(사용하기)dex2jar ( 앱 로직 ) ) convert (앱 로직 포함)dex을 로다철하에 합니다.jar

download 덱스2jar got 덱스-tools-2.1-SNAPshot.zip, unzip gotdex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh,그리고나서

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

예:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

3단계:jar to java src

다음 도구 중 하나를 사용합니다.

개종시키다jarjava src

jar에서 java src 변환 효과:

Jadx>Procyon>CRF>>JD-GUI

사용을 합니다: 사을권장니다합용.Jadx/jadx-gui

단계:

  • 번 하여 을 실행합니다.jadx-gui
  • 다열dex
  • File->save all

예:

내보낸 java src:


더 자세한 설명은 온라인 전자책 중국어 튜토리얼을 볼 수 있습니다.

.apk 파일을 압축 해제하는 다른 방법을 보여드리겠습니다.

"프랭쿨 가그"의 첫 두 단계를 따를 수 있습니다.다음과 같은 또 다른 기회가 있습니다.

3단계':

"JD-GUI"를 다운로드하면 쉽게 찾을 수 있습니다.jd-gui.exe에서 .jar 파일을 엽니다(파일 > 파일 열기 > 'found your .jar 파일').이 절차가 끝나면 모든 리소스를 .zip 파일에 저장할 수 있습니다.

그렇게,

첫 번째 - .apk 파일의 이름을 .zip으로 변경해야 합니다.

두 번째 - .dex 파일을 디코딩해야 합니다(원하는 경우 .apk 파일을 덱스2jar로 디코딩하면 가능합니다).

3번째 - JD-GUI로 .jar 파일을 디코딩해야 합니다.

타사의 폐쇄형 이진 Android 앱을 역설계하기 위한 Pk 도구입니다.

리소스를 거의 원래 형태로 디코딩하고 수정한 후 재구축할 수 있습니다.

스몰 코드를 단계별로 디버그할 수 있습니다.또한 프로젝트와 같은 파일 구조와 apk 구축과 같은 반복적인 작업의 자동화로 인해 앱으로 작업하는 것이 더 쉬워집니다.

http://ibotpeaches.github.io/Apktool/

pktool이 최선의 방법입니다.온라인 apktool 서비스도 있습니다. http://www.javadecompilers.com/apktool

서비스 '온라인 특성'으로 인해 분명히 몇 가지 제한이 존재합니다. 자산과 매니페스트 파일을 추출하고 연구할 수는 있지만 현재 애플리케이션을 다시 컴파일하는 것은 불가능합니다.

그래도 이것은 안드로이드 애플리케이션을 '열기' 위한 쉬운 방법입니다.

덱스 패처를 사용해 보세요.Android Studio와도 통합됩니다.내부적으로 ApktoolDex2Jar를 사용합니다.
이러한 도구를 개별적으로 사용할 수도 있습니다.Apktool은 apk를 압축 해제하고 .dex 파일을 추출합니다. 이 파일은 Dex2Jar를 사용하여 jar로 변환할 수 있습니다.JD-GUI를 사용하여 Jar를 압축 해제할 수 있습니다.당신은 그 도구의 도움으로 자바 코드를 볼 수 있습니다.비록 디컴파일된 코드와 실제 코드의 유사성을 보장할 수는 없지만,시장에서 사용할 수 있는 고급 코드 난독화 도구가 있으며, 이는 코드를 혼란스럽게 하여 코드를 해독/이해하기 어렵게 합니다.예: 프로가드

Android 스튜디오에서는 모든 apk 파일을 분석할 수 있습니다.

1 - 빌드 메뉴에서 apk 분석 옵션을 선택하고 pk 파일을 선택합니다. 2 - classes.dex 파일 및 기타 파일이 표시됩니다. 3 - classes.dex를 클릭하면 폴더, 패키지, 라이브러리 및 파일 목록이 표시됩니다.4 - Android 스튜디오 설정에서 "Dex to Jar"라는 플러그인을 설치합니다. 5 - 추출된 프로젝트의 작업 파일을 클릭하고 빌드 메뉴에서 "Dex to jar"를 선택합니다.

그러면 Java 파일의 실제 코드가 생성됩니다.

건배.

1단계: 새 폴더를 만들고 디코딩할 .apk 파일 위에 복사합니다.

이제 이 .apk 파일의 확장자 이름을 .zip(예: 파일 이름에서 이름 변경)으로 변경합니다.pk to filename.zip)을 입력하여 저장합니다.이제 classes.dex 파일 등에 액세스할 수 있습니다.이 단계에서는 그리기 가능한 파일은 볼 수 있지만 xml 및 java 파일은 볼 수 없으므로 계속 진행합니다.

2단계: 이제 동일한 폴더(또는 새 폴더)에서 이 .zip 파일의 압축을 풉니다.

https://github.com/pxb1988/dex2jar/releases/tag/2.0 다운로드 : 덱스2jar-2.0

이제 명령 프롬프트를 열고 디렉터리를 해당 폴더(또는 새 폴더)로 변경합니다.그런 다음 다음을 실행합니다.d2j-dex2jar.bat classes.dex

이 디컴파일러 http://java-decompiler.github.io/ 을 다운로드하여 class-delt2jar를 디컴파일합니다.항아리

3단계: 이제 다른 새 폴더 열기

디코딩할 .apk 파일을 넣습니다.

최신 버전의 apktool AND apktool(https://ibotpeaches.github.io/Apktool/install/) 설치 창(둘 다 동일한 링크에서 다운로드 가능)을 다운로드하여 동일한 폴더에 배치합니다.

명령 창 열기

이제 framework-res.apk인 경우 pktool처럼 명령을 실행합니다(만약 없다면 여기서 명령을 가져옵니다).

apktoold myApp.apk(여기서 myApp.apk는 디코딩할 파일 이름을 나타냅니다)

이제 그 폴더에 파일 폴더가 있고 apk의 xml 파일을 쉽게 읽을 수 있습니다.

두 폴더의 내용을 단일 폴더에 복사

알았어!

APK를 디컴파일하고 코드를 얻기 위해 당신은 여러 온라인 도구를 가지고 있으며 저는 보통 온라인 APK 디컴파일러를 사용하는 것을 선호합니다.

사용이 매우 간편하며 몇 분 안에 소스 코드를 다운로드할 수 있습니다.

플레이스토어에서 APK를 다운로드하여 압축을 풀고 싶다면,당신은 그것으로부터 그것을 쉽게 다운로드 할 수 있습니다.

가장 간단한 방법은 Apk OneClick Discompiler를 사용하는 것입니다.그것은 APK(안드로이드 패키지)를 분해하고 분해하는 도구 패키지입니다.

특징들

  • 모든 기능이 Windows(윈도우)의 마우스 오른쪽 버튼 메뉴에 통합되어 있습니다.
  • APK 클래스를 Java 소스 코드로 압축 해제합니다.
  • APK를 분해하여 코드를 작게 만들고 리소스를 디코딩합니다.
  • 마우스 오른쪽 버튼을 클릭하여 전화에 APK를 설치합니다.
  • 작은 코드 및/또는 리소스를 편집한 후 APK를 다시 컴파일합니다.재컴파일 중:
  • png 이미지 최적화
  • 사인팩
  • Zipalign

요구 사항들

JRE(Java Runtime Environment)를 설치해야 합니다.

Apk OneClick Decomiler 링크에서 다운로드할 수 있습니다.

맛있게 드세요.

가장 간단한 방법은 다음과 같습니다.

  1. app.apk의 이름을 app.zip으로 변경(확장자를 apk에서 zip으로 변경)
  2. zip 파일을 폴더에 압축 풀기
  3. JADX 도구를 사용하여 classes.dex 파일에 있는 소스 코드를 읽습니다.

이를 위한 앱이 있으며 일반적으로 몇 번의 클릭만으로 완료됩니다.https://github.com/Nuvolect/DeepDive-Android

  1. 앱을 선택하고 "설치된 앱"에서 앱을 선택합니다.없으면 APK를 로드할 수 있습니다.
  2. APK 추출을 선택합니다.
  3. APK 포장 풀기를 선택합니다.
  4. "Jadx로 컴파일"을 선택합니다.장치 속도에 따라 몇 초 또는 몇 분 정도 걸릴 수 있습니다.

그런 다음 소스 코드를 탐색하거나 elFinder로 다른 컴퓨터에 다운로드하거나 Lucene을 사용하여 검색할 수 있습니다.

Jadx 외에도 CFR 및 Fernflower 디컴파일러가 있습니다.

저는 아이폰/iPad/Mac에서 실행되는 Java/Android 파일을 분석하는 Tool - Code Analyzer를 개발했습니다. https://decompile.io

enter image description here

enter image description here

기본 Android 응용 프로그램에서 원본 추출

기본 Android 응용 프로그램의 소스 코드를 얻는 것은 어렵지 않지만 Windows, Mac 및 Linux와 호환되는 추가 도구가 필요합니다.제가 개인적으로 좋아하는 도구는 덱스2jarJD-GUI입니다.

이러한 도구에 익숙하지 않은 경우 덱스2jar는 Dalvik 실행 파일을 읽고 표준 JAR 형식으로 변환합니다. JD-GUI는 JAR 파일을 읽고 해당 파일에 있는 클래스 파일을 압축 해제합니다.

추출 과정을 더 쉽게 이해하기 위해 새로운 기본 Android 프로젝트를 만드는 것으로 시작하겠습니다.

android create project --target 19 --name TestProject --path . --activity TestProjectActivity --package com.nraboy.testproject

위의 명령은 현재 명령 프롬프트 경로에 Android 프로젝트를 표시합니다.

프로젝트에 활동 클래스가 이미 포함되어 있으므로 빌드 프로세스로 바로 이동합니다.당신은 Gradle이나 Maven 대신 Ant를 사용하는 것에 대해 하루 종일 저를 힘들게 할 수 있지만, 이 튜토리얼을 위해 저는 그것을 고수할 것입니다.

ant debug

위 명령은 일반적으로 bin/TestProject-debug.apk에 있는 디버그 빌드를 만듭니다.

자주 사용하는 압축 풀기 도구를 사용하여 APK 파일의 압축을 풉니다. 7-zip은 널리 사용되는 도구이지만 Mac에 있는 경우 터미널에서 다음을 실행하면 됩니다.

unzip TestProject-debug.apk

이것은 우리에게 많은 파일과 폴더를 남겨주겠지만, 하나는 우리에게 중요합니다.classes.dex에는 모든 소스 코드가 포함되어 있으므로 주의하십시오.읽을 수 있는 것으로 변환하려면 덱스2jar를 실행해야 합니다.Mac, Linux 및 Windows에서 덱스2jar를 사용할 수 있지만 Mac 관점에서 설명하겠습니다.

추출된 덱스2jar 디렉토리에 있는 classes.dex 파일을 사용하여 터미널에서 다음을 실행합니다.

./dex2jar.sh classes.dex

이제 JAR 및 패키지된 클래스 파일을 디코딩할 시간이므로 다운로드한 JD-GUI 응용 프로그램을 엽니다.새로 만든 classes_dex2jar.jar 파일을 열면 다음과 같은 내용이 나타납니다.

enter image description here 기본 Android APK의 소스 코드를 얻는 것이 얼마나 쉬웠는지 아십니까?이제 여러분은 자신을 더 잘 보호하기 위해 무엇을 할 수 있을까요?

Android SDK에는 난독화 모듈인 Proguard가 함께 제공됩니다.당신이 묻는 난독화란 무엇입니까?

위키백과를 통한 난독화:

난독화(orl化, )는 의사소통에서 의도된 의미를 숨기고 의사소통을 혼란스럽게 하고, 의도적으로 모호하게 하며, 해석하기 어렵게 만드는 것입니다.

난독화는 소스 코드를 암호화하지는 않지만 이해하기가 더 어려워집니다.Proguard가 구성된 상태에서 Ant를 릴리스 모드로 실행하면 빌드 시 코드가 난독화됩니다.

하이브리드 Android 응용 프로그램에서 소스 추출

하이브리드 애플리케이션의 소스 코드는 가장 쉽게 추출할 수 있습니다.컴퓨터에 별도의 소프트웨어를 설치할 필요는 없으며 APK 파일에 액세스하기만 하면 됩니다.

이해하기 쉽게 하기 위해 먼저 새로운 Apache Cordova 프로젝트를 생성한 다음 추출합니다.다음을 수행하는 것으로 시작합니다.

cordova create TestProject com.example.testproject TestProject
cd TestProject
cordova platform add android

프로젝트 생성 프로세스 중에는 기본 Apache Cordova CSS, HTML 및 JavaScript 템플릿이 남아 있습니다.이 예에서 그것은 우리에게 좋습니다.이제 프로젝트를 분산 APK 파일로 빌드해 보겠습니다.

cordova build android

플랫폼/안드로이드/앤트빌드/코르도바 앱-디버그가 남게 될 것입니다.ppk 또는 플랫폼/vmd/ant-build/*-build.apk와 같은 것.

이것은 디버그 빌드이지만 여전히 매우 유용합니다.7-zip 또는 유사한 파일이 설치된 상태에서 APK 파일을 마우스 오른쪽 버튼으로 클릭하고 압축을 풀거나 압축을 풀도록 선택합니다.추출된 디렉토리에서 이제 모든 웹 기반 원본 파일에 액세스할 수 있습니다.Apache Cordova에서 사용하는 Java 파일이 클래스 파일로 컴파일될 것이기 때문에 웹 기반이라고 말합니다.그러나 CSS, HTML, JavaScript 파일은 터치되지 않습니다.

하이브리드 애플리케이션 소스 코드를 얻는 것이 얼마나 쉬운지 방금 보셨잖아요.그렇다면 여러분은 자신을 더 잘 보호하기 위해 무엇을 할 수 있을까요?

난독화의 한 형태인 코드를 확대할 수 있습니다.

이렇게 하면 코드가 암호화되지 않지만 의미를 파악하기가 훨씬 더 어려워집니다.

만약 당신이 당신의 코드를 Uglify를 설치하고 싶다면, 는 당신이 Uglify를 설치하는 것을 추천합니다.JS는 현재 거의 표준이기 때문에.태스크 러너를 사용하려면 Grunt 및 Gulp에 Uglify용 모듈이 있습니다.JS도.

시장에는 apk 파일을 Java 클래스로 압축 해제하는 많은 응용 프로그램과 방법이 있지만 ProGuard 규칙으로 앱을 컴파일하면 이 규칙이 모든 덱스 파일을 작은 문자 이름으로 축소하고 구현을 추적할 수 없기 때문에 큰 문제가 발생합니다.모드에 대한 자세한 내용은 https://developer.android.com/studio/build/shrink-code 를 참조하십시오.

해피 코딩...

번 클릭 솔루션(Windows 전용)

이 looounnngg 게시물을 읽은 후, 저는 한 번의 클릭으로 APK를 분해하는 자동화된 프로세스를 만들기로 결정했습니다.

나는 그것을 github에 공유하기로 결정했습니다:
https://github.com/shaybc/://github.com/shaybc/apk-decompiler

simply unzip,
copy the apk you want to decompile into "apk-source" folder
and run "go.bat"
find the result in the: "apk-output" folder

그거야, 즐겨요.

저는 며칠 동안 덱스2jar가 작동하지 않는 apk에 맞서 페도라 31 노트북으로 작업하도록 하려고 노력하느라 제 자신을 미치게 했습니다.이 파이썬 3 스크립트는 몇 분 만에 트릭을 수행했고 jd-gui를 설치하면 클래스 파일을 사람이 읽을 수 있습니다.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

구체적으로, 제가 실행한 것은 다음과 같습니다.

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

이제 클래스 파일을 가져오려면 다음을 검색할 수 있습니다.

$> enjarify yourapkfile.apk

jd-gui를 시작하려면:

$> jd-gui

그러면 그냥 수업 파일을 열어보세요!

이 도구를 사용하십시오. http://www.javadecompilers.com/

하지만 최근에 새로운 디컴파일러 물결이 시장에 밀려왔습니다. 프로시온, CFR, JD, 펀플라워, 크라카타우, 캔들입니다.

다음은 이 사이트에 제공된 디컴파일러 목록입니다.

CFR - 무료, 소스 코드 없음, http://www.benf.org/other/cfr/ 작성자:리 벤필드

매우 잘 업데이트된 디컴파일러! CFR은 Java 9 모듈, Java 8 램다스, Java 7 String 스위치 등과 같은 최신 Java 기능을 디컴파일할 수 있습니다.또한 다른 JVM 언어의 클래스 파일을 Java로 되돌리는 것도 효과적입니다.

JD - 비상업적인 사용만 무료, http://jd.benow.ca/ 작성자: 엠마누엘 뒤푸이.

2015년에 업데이트됨.이클립스와 IntelliJ에 대한 자체 시각 인터페이스와 플러그인이 있습니다. C++로 작성되어 매우 빠릅니다.Java 5를 지원합니다.

Procyon - 오픈 소스, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler 작성자: Mike Strobel

Fernflower - 오픈 소스, https://github.com/fesh0r/fernflower 저자: 에고르 우샤코프

2015년에 업데이트됨.매우 유망한 분석용 Java 디컴파일러는 이제 IntelliJ 14의 필수적인 부분이 되었습니다. (https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler) 버전 6까지 Java 지원(주석, 일반, 열거형)

JAD - 역사적인 이유로만 여기에 제공됩니다.무료, 소스 코드 사용 불가, jad 다운로드 미러 작성자: 파벨 쿠즈넷소프

네, 가능합니다.

안드로이드 .apk 파일을 리버스 엔지니어링할 수 있는 수많은 소프트웨어가 있습니다.

최근에, 저는 제 웹사이트에서 47개의 최고 APK 디컴파일러의 최종 목록을 작성했습니다.저는 그것들을 4개의 다른 섹션으로 정리했습니다.

  1. 오픈 소스 APK 디컴파일러
  2. 온라인 APK 디컴파일러
  3. Windows, Mac 또는 Linux용 APK 디컴파일러
  4. APK 디컴파일러 앱

이 컬렉션이 당신에게 도움이 되기를 바랍니다.

링크: https://www.edopedia.com/blog/best-apk-decompilers/

Java 파일의 경우


여기에 제공된 승인된 답변 사용

XML 파일의 경우


당신은 제가 복잡한 것을 느꼈기 때문에 승인된 답변의 방법을 사용할 필요가 없습니다.

제가 대신 한 것은 APK 파일을 ZIP으로 변환하여 압축을 푸는 것이었습니다.압축을 푼 후 res:라는 폴더를 얻었습니다.

방금 열어보니 많은 폴더가 있었습니다.레아웃의경이지폴정더합찾니라는 이름의 .layout레이아웃 랜드 같은 다른 어떤 것도 아닙니다.드로잉 가능, 메뉴 등의 다른 리소스에서도 동일한 작업을 수행할 수 있습니다.

참고: 사용자가 만들지 않은 랜덤 파일도 많습니다.당신이 만든 파일을 찾아서 사용할 수 있습니다!

이것이 누군가에게 도움이 되기를 바랍니다!

언급URL : https://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an-apk-file

반응형