내 노트북의 하드 드라이브가 방금 충돌했고 지난 두 달 동안 작업한 앱의 모든 소스 코드를 잃어버렸습니다. 내가 가지고 있는 것은 내가 친구에게 보냈을 때부터 내 이메일에 저장된 APK 파일뿐입니다.
이 APK 파일에서 내 소스 코드를 추출하는 방법이 있습니까?
질문자 :Frank Bozzo
내 노트북의 하드 드라이브가 방금 충돌했고 지난 두 달 동안 작업한 앱의 모든 소스 코드를 잃어버렸습니다. 내가 가지고 있는 것은 내가 친구에게 보냈을 때부터 내 이메일에 저장된 APK 파일뿐입니다.
이 APK 파일에서 내 소스 코드를 추출하는 방법이 있습니까?
간단한 방법: 온라인 도구 https://www.decompiler.com/ 를 사용하고 apk를 업로드하고 소스 코드를 가져옵니다.
.apk 파일 디코딩 절차, 단계별 방법:
새 폴더를 만들고 디코딩하려는 .apk 파일 위에 복사합니다.
이제 이 .apk 파일의 확장자를 .zip으로 변경하고(예: filename.apk에서 filename.zip으로 이름 변경) 저장합니다. 이제 classes.dex 파일 등에 액세스할 수 있습니다. 이 단계에서 드로어블은 볼 수 있지만 xml 및 Java 파일은 볼 수 없으므로 계속하십시오.
이제 동일한 폴더(또는 NEW FOLDER)에서 이 .zip 파일의 압축을 풉니다.
dex2jar을 다운로드 하고 동일한 폴더(또는 NEW FOLDER)에 압축을 풉니다.
classes.dex 파일을 dex2jar 폴더로 이동합니다.
이제 명령 프롬프트를 열고 디렉터리를 해당 폴더(또는 새 폴더)로 변경합니다. 그런 다음 d2j-dex2jar classes.dex
(mac 터미널 또는 우분투의 경우 ./d2j-dex2jar.sh classes.dex
) Enter 키를 누릅니다. 이제 같은 폴더에 classes.dex.dex2jar 파일이 있습니다.
Java 디컴파일러를 다운로드 하고 jd-gui를 두 번 클릭하고 파일 열기를 클릭하고 해당 폴더에서 classes.dex.dex2jar 파일을 엽니다. 이제 클래스 파일을 얻습니다.
이 모든 클래스 파일을 src 이름으로 저장합니다(jd-gui에서 파일 -> 모든 소스 저장 클릭). 이 단계에서 Java 소스를 가져오지만 .xml 파일을 여전히 읽을 수 없으므로 계속하십시오.
이제 다른 새 폴더를 엽니다.
디코딩하려는 .apk 파일을 넣으십시오.
최신 버전의 apktool 및 apktool 설치 창을 다운로드하고(둘 다 동일한 링크에서 다운로드 가능) 동일한 폴더에 저장합니다.
명령 창 열기
apktool if framework-res.apk
과 같은 명령을 실행 하십시오.
apktool d myApp.apk
(여기서 myApp.apk는 디코딩하려는 파일 이름을 나타냄)
이제 해당 폴더에 파일 폴더가 생기고 apk의 xml 파일을 쉽게 읽을 수 있습니다.
어떤 단계도 아닙니다. 두 폴더(이 경우 새 폴더 모두)의 내용을 하나의 폴더에 복사하기만 하면 됩니다.
소스 코드를 즐기십시오 ...
이것은 누군가가 위의 설명에 갇힌 경우를 대비하여 대체 설명입니다. 다음 단계를 따르세요.
apktool.bat
(또는 Linux의 apktool
apktool_<version>.jar
다운로드apktool.jar
로 바꾸고 두 파일을 같은 폴더에 넣습니다.cmd.exe
)를 열고 해당 폴더로 변경합니다. Java 환경이 설치되어 있는지 확인(Linux의 경우 필수 라이브러리에 대한 참고 사항도 확인)apktool decode [apk file]
중간 결과 : 리소스 파일, AndroidManifest.xml
중간 결과 : classes.dex
dex2jar-0.0.9.15.zip
을 다운로드하여 압축을 풉니다.classes.dex
dex2jar.bat
에 끌어다 놓습니다(또는 <path_to>\dex2jar.bat classes.dex
입력, Linux의 경우 dex2jar.sh
사용) 중간 결과 : classes_dex2jar.jar
classes_dex2jar.jar
압축 풀기(사용된 디컴파일러에 따라 선택 사항일 수 있음)결과 : 소스 코드
참고: 타사 패키지를 디컴파일하는 것은 허용되지 않습니다. 이 가이드는 APK 파일에서만 개인 소스 코드를 복구하기 위한 것입니다. 마지막으로 결과 코드가 난독화될 가능성이 큽니다.
APK
파일을 디컴파일할 수 있지만 한 가지 큰 문제가 발생할 수 있습니다.
작성한 코드를 반환하지 않습니다. 대신 임의의 이름이 지정된 변수와 임의의 이름이 지정된 함수와 함께 컴파일러가 인라인한 모든 것을 반환합니다. 다시 시작하는 것보다 디컴파일하고 기존 코드로 복원하는 데 훨씬 더 많은 시간이 걸릴 수 있습니다.
슬프게도 이와 같은 일로 인해 많은 프로젝트가 중단되었습니다.
미래를 위해 CVS , SVN 및 git 등과 같은 버전 제어 시스템을 배우는 것이 좋습니다.
백업 방법.
Play 스토어 에는 APK를 디컴파일(시스템 애플리케이션도 포함)하고 스마트폰에서 바로 소스 코드를 볼 수 있는 새로운 애플리케이션도 있습니다. 파일을 SD 카드에 저장하여 컴퓨터에서도 볼 수 있습니다. 루트 또는 다른 것이 필요하지 않습니다.
그냥 설치하고 즐기십시오. 이것이 앱을 디컴파일하는 가장 쉬운 방법이라고 생각합니다.
apktool 은 시도할 수 있는 가장 좋은 방법입니다. 일부 xml을 저장했지만 솔직히 .java 코드와 함께 작동하는 방법을 모르겠습니다.
귀하가 유일한 코더인 경우에도 코드 저장소를 갖는 것이 좋습니다. 내 프로젝트에 Project Locker 를 사용하고 있습니다. 무료 svn 및 git repos를 제공합니다.
이 두 기사에서는 apktool
과 dex2jar
APK
파일을 만들고 빌드 및 실행할 수 있는 Eclipse 프로젝트를 만드는 방법을 설명합니다.
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html
http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
기본적으로 당신은:
apktool
을 사용하여 apk에서 리소스 파일 가져오기dex2jar
을 사용하여 Eclipse가 원하는 형식의 클래스가 포함된 jar 파일을 가져옵니다.JDGui
로 jar 파일을 열어 소스 코드 보기JDGui
에서 필요한 소스 코드를 가져 와서 Eclipse 내부의 클래스에 붙이고 수정하십시오.apktool이 작동합니다. 소스 코드를 추출하기 위해 키 저장소를 알 필요도 없습니다(조금 무섭습니다). 주요 단점은 소스가 Java 대신 Smali 형식으로 표시된다는 것입니다. icon 및 main.xml과 같은 다른 파일은 완벽하게 잘 처리되며 최소한 이러한 파일을 복구하는 데 시간을 할애할 가치가 있습니다. 궁극적으로 Java 코드를 처음부터 다시 작성해야 할 가능성이 큽니다.
여기에서 apktool을 찾을 수 있습니다. apktool과 적절한 도우미(Windows, Linux 또는 Mac OS용)를 다운로드하기만 하면 됩니다. 7-zip과 같은 도구를 사용하여 압축을 푸는 것이 좋습니다.
이를 수행하는 몇 가지 방법이 있습니다.
Android Studio 3.0의 "프로필 또는 디버그 APK" 기능을 사용하세요.
Android Studio에서 APK를 열고 탐색할 수 있습니다. 클래스는 smali로 디컴파일됩니다. 리소스는 추출되지 않으며 "정의로 이동", "모든 참조 찾기" 및 디버깅과 같은 항목은 소스 코드 없이 작동하지 않습니다(android studio 3.0 canary 9). 일부 추가 smali 기능이 작동 할 수 smalidea .
jadx 를 사용하십시오.
Jadx는 지정된 APK의 코드를 Java 소스 파일로 디컴파일합니다.
apktool 을 사용하십시오.
Apktool은 리소스를 추출하고 주어진 apk에 대한 코드를 smali로 디컴파일하는 명령줄 도구입니다. apktool을 사용하여 다시 컴파일할 수도 있습니다. 다음은 실행 중인 예입니다.
$ 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...
소스를 쉽게 볼 수 있습니다.
Android 스튜디오 2.3에서 Build -> Analyze APK -> Select the apk that you want to decompile
.
소스 코드임을 알 수 있습니다.
참고용 링크:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
이 사이트 https://www.apkdecompilers.com/ 는 자동으로 했습니다.
수락 된 답변에 언급 된 사이트를 먼저 시도했지만 작동하지 않았습니다.
개인적으로 소스 코드를 얻으려면 Show Java Android App을 추천합니다. 플레이 스토어 또는 여기 에서 다운로드할 수 있습니다
온라인 도구 아래:
http://www.javadecompilers.com/apk
한 번의 클릭으로 모든 작업을 수행합니다. 매우 우수한 디컴파일러를 사용하여 디컴파일된 .java 파일 + 리소스 + xml (하나의 .zip 파일에 있음) 안드로이드 어셈블러/머신 코드)
.apk 파일을 디컴파일하는 다른 방법을 보여드리겠습니다.
"prankul garg "의 처음 2단계를 따를 수 있습니다. 따라서 다른 기회가 있습니다.
단계 3':
"JD-GUI"를 다운로드하면 쉽게 찾을 수 있습니다. "jd-gui.exe"에서 .jar 파일을 엽니다. (파일 > 파일 열기 > ' .jar 파일을 찾았습니다'). 이 절차 후에 모든 리소스를 .zip 파일로 저장할 수 있습니다.
그래서,
첫 번째 - .apk 파일의 이름을 .zip 으로 바꿔야 합니다.
두 번째 - .dex 파일을 디코딩해야 합니다(원하는 경우 .apk 파일을 dex2jar 로 디코딩할 수 있음).
세 번째 - JD-GUI로 .jar 파일을 디코딩해야 합니다.
타사의 폐쇄형 바이너리 Android 앱을 리버스 엔지니어링하기 위한 Apktool입니다.
리소스를 거의 원래 형태로 디코딩하고 일부 수정 후 다시 빌드할 수 있습니다.
smali 코드를 단계별로 디버깅할 수 있습니다. 또한 프로젝트와 같은 파일 구조와 apk 빌드와 같은 일부 반복 작업의 자동화로 인해 앱 작업을 더 쉽게 만듭니다.
apktool 은 갈 길입니다. 온라인 apktool 서비스도 존재합니다: http://www.javadecompilers.com/apktool
서비스 '온라인 특성'으로 인해 분명히 몇 가지 제한 사항이 존재합니다. 자산과 매니페스트 파일을 추출하고 조사할 수 있지만 현재 응용 프로그램을 다시 컴파일하는 것은 불가능합니다.
그래도 이것은 안드로이드 애플리케이션을 '열는' 번거롭지 않은 방법입니다.
DexPatcher 를 사용해 볼 수 있습니다. Android Studio와도 통합됩니다. 내부적으로 Apktool 및 Dex2Jar를 사용합니다.
이러한 도구를 독립적으로 사용할 수도 있습니다. Apktool은 apk를 디컴파일하고 Dex2Jar를 사용하여 jar로 추가 변환할 수 있는 .dex 파일을 추출합니다. JD-GUI 를 사용하여 Jar를 디컴파일할 수 있습니다. 해당 도구의 도움으로 Java 코드를 볼 수 있습니다. 디컴파일된 코드와 실제 코드의 유사성은 보장할 수 없습니다. 시장에서 사용할 수 있는 고급 코드 난독화 도구가 있습니다. 이 도구는 코드를 엉망으로 만들어 디컴파일/이해하기 어렵게 만듭니다. 예를 들어 프로가드
귀하의 Android apk가 다음과 같은 경우 귀하의 조건에 따라:
와 같은:
이동:
apk에서 Java 소스 코드로 자동 디코딩
단계:
apk 파일 upload
Run
클릭 + 잠시 기다리기 + Download
를 클릭하여 압축 해제 + 압축 풀기 ->
sources/com/{yourCompanyName}/{yourProjectName}
예상되는 Java 소스 코드입니까?
관련 도구를 사용하여 직접 디컴파일/크랙:
jadx
/ jadx-gui
사용하여 apk
를 java 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
sources
및 resources
sources/com/{yourCompanyName}/{yourProjectName}
은 예상되는 java sourcecode
jadx-0.9.0/bin/jadx-gui
(Linux의 jadx-gui.sh
/ Windows의 jadx-gui.bat
)를 실행하려면 두 번 클릭하십시오.apk
파일 열기save all
하거나 save as Gradle project
예:
3 steps
의 주요 방법:
apk/app to dex
dex to jar
jar to java src
상해:
apk/app to dex
실행 중인 앱에서 도구( FDex2
/DumpDex) 덤프/후크(하나 또는 여러 개) dex
단계:
root
에드 안드로이드FDex2
/ DumpDex 를 XPosed에 설치하고 활성화dex
를 덤프합니다. FDex2
를 실행한 다음 APK 이름을 클릭하여 나중에 dex를 캡처/후크아웃할 수 있습니다.
/data/data/com/yourCompanyName/yourProjectName
에서 전체 APK 리소스를 찾아 복사합니다.dex
파일을 찾습니다.dex to jar
dex2jar
)를 사용하여 (앱 로직을 포함하는 특정) dex
파일을 jar
파일로 변환
dex2jar을 다운로드하면 dex-tools-2.1-SNAPSHOT.zip이 있고 압축을 풀면 dex-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
jar to java src
도구 중 하나를 사용:
jar
를 java src
로 변환
jar에서 Java src 변환 효과:
Jadx
> Procyon
> CRF
>> JD-GUI
그래서 사용을 권장합니다: Jadx
/ jadx-gui
단계:
jadx-gui
dex
파일 열기File
-> save all
예:
내보낸 자바 src:
더 자세한 설명은 내 온라인 전자책 중국어 자습서를 볼 수 있습니다.
Android 스튜디오에서는 모든 apk 파일을 분석할 수 있습니다.
1 - 빌드 메뉴에서 apk 분석 옵션을 선택하고 apk 파일을 선택합니다. 2 - 그러면 classes.dex 파일 및 기타 파일이 생성됩니다. 3 - 폴더, 패키지, 라이브러리 및 파일 목록을 제공하는 classes.dex를 클릭하십시오. 4 - android studio 설정에서 "Dex to Jar"라는 플러그인을 설치합니다. 5 - 추출된 프로젝트의 활동 파일을 클릭하고 빌드 메뉴에서 dex to jar를 선택합니다.
그러면 자바 파일의 실제 코드가 생성됩니다.
건배.
가장 간단한 방법은 Apk OneClick Decompiler를 사용하는 것입니다. APK(Android 패키지)를 디컴파일 및 디스어셈블하는 도구 패키지입니다.
특징
요구 사항
JRE(Java Runtime Environment)가 설치되어 있어야 합니다.
이 링크에서 다운로드할 수 있습니다. Apk OneClick Decompiler
즐기세요.
가장 간단한 방법으로 다음을 찾았습니다.
이를 위한 앱이 있으며 일반적으로 몇 번의 클릭만으로 완료됩니다. https://github.com/Nuvolect/DeepDive-Android
그런 다음 소스 코드를 찾아보고 elFinder를 사용하여 다른 컴퓨터에 다운로드하거나 Lucene을 사용하여 검색할 수 있습니다.
Jadx 외에도 CFR 및 Fernflower 디컴파일러가 있습니다.
1. 네이티브 Android 애플리케이션에서 소스 추출
기본 Android 애플리케이션의 소스 코드는 얻기 어렵지 않지만 Windows, Mac 및 Linux와 호환되는 추가 도구가 필요합니다. 도구와 관련하여 개인적으로 가장 좋아하는 것은 dex2jar 및 JD-GUI 입니다.
이러한 도구에 익숙하지 않은 경우 dex2jar은 Dalvik 실행 파일을 읽고 표준 JAR 형식으로 변환합니다. JD-GUI는 JAR 파일을 읽고 그 안에 있는 클래스 파일을 디컴파일합니다.
추출 프로세스를 더 쉽게 이해할 수 있도록 새로운 기본 Android 프로젝트를 만들어 시작하겠습니다.
android create project --target 19 --name TestProject --path . --activity TestProjectActivity --package com.nraboy.testproject
위의 명령은 현재 명령 프롬프트 경로에 Android 프로젝트를 남깁니다.
우리 프로젝트에는 이미 Activity 클래스가 포함되어 있으므로 빌드 프로세스로 바로 이동하겠습니다. Gradle이나 Maven 대신 Ant를 사용하는 것에 대해 하루 종일 어려움을 겪을 수 있지만 이 튜토리얼에서는 계속 사용하겠습니다.
ant debug
위의 명령은 일반적으로 bin/TestProject-debug.apk 에 있는 디버그 빌드를 생성합니다.
즐겨 사용하는 압축 해제 도구를 사용하여 APK 파일을 추출합니다. 7-zip은 널리 사용되는 도구이지만 Mac을 사용하는 경우 터미널에서 다음을 실행할 수 있습니다.
unzip TestProject-debug.apk
이것은 우리에게 많은 파일과 폴더를 남길 것이지만 하나는 우리에게 중요합니다. 모든 소스 코드가 포함되어 있으므로 classes.dex를 기록해 두십시오. 읽을 수 있는 것으로 변환하려면 dex2jar을 실행해야 합니다. dex2jar은 Mac, Linux, Windows에서 모두 사용할 수 있지만 Mac 관점에서 설명하겠습니다.
압축을 푼 dex2jar 디렉토리에 있는 classes.dex 파일을 사용하여 터미널에서 다음을 실행하십시오.
./dex2jar.sh classes.dex
이제 JAR 및 패키지된 클래스 파일을 디코딩할 시간이므로 다운로드한 JD-GUI 애플리케이션을 엽니다. 새로 생성된 classes_dex2jar.jar 파일을 열면 다음과 같은 내용이 표시되어야 합니다.
네이티브 Android APK의 소스 코드에 접근하는 것이 얼마나 쉬운지 확인하시겠습니까? 이제 자신을 더 잘 보호하기 위해 무엇을 할 수 있습니까?
Android SDK는 난독화 모듈인 Proguard 와 함께 제공됩니다. 당신이 묻는 난독 화는 무엇입니까?
Wikipedia 를 통한 난독화:
난독화(또는 모호하게 함)는 의사소통에서 의도된 의미를 숨기고 의사소통을 혼란스럽고 의도적으로 모호하며 해석하기 어렵게 만드는 것입니다.
난독화는 소스 코드를 암호화하지 않지만 이해하기 어렵게 만듭니다. Proguard가 구성된 상태에서 Ant를 릴리스 모드로 실행하면 빌드 시 코드가 난독화되어야 합니다.
2. 하이브리드 안드로이드 애플리케이션에서 소스 추출
하이브리드 애플리케이션의 소스 코드는 추출하기 가장 쉽습니다. 컴퓨터에 추가 소프트웨어를 설치할 필요가 없으며 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
당신은 platform/android/ant-build/CordovaApp-debug.apk 또는 platform/android/ant-build/*-debug.apk 라인을 따라 남게 될 것 입니다.
이것은 디버그 빌드이지만 여전히 매우 유용합니다. 7-zip 또는 이와 유사한 것이 설치된 상태에서 APK 파일을 마우스 오른쪽 버튼으로 클릭하고 압축을 풀거나 선택합니다. 추출된 디렉토리에서 이제 모든 웹 기반 소스 파일에 액세스할 수 있습니다. Apache Cordova에서 사용하는 모든 Java 파일이 클래스 파일로 컴파일되기 때문에 웹 기반이라고 합니다. 그러나 CSS, HTML 및 JavaScript 파일은 건드리지 않습니다.
하이브리드 애플리케이션 소스 코드를 얻는 것이 얼마나 절망적으로 쉬운지 방금 보았습니다. 그러면 자신을 더 잘 보호하기 위해 무엇을 할 수 있습니까?
난독화의 한 형태인 코드를 uglify할 수 있습니다.
이렇게 하면 코드가 암호화되지 않지만 이해하기가 훨씬 더 어려워집니다.
코드를 uglify하고 싶다면 UglifyJS를 설치하는 것이 좋습니다. UglifyJS 는 현재 거의 표준이기 때문입니다. 태스크 러너를 사용하고 싶다면 Grunt와 Gulp에도 UglifyJS용 모듈이 있습니다.
시장에는 apk 파일을 자바 클래스로 디컴파일하는 많은 응용 프로그램과 메서드가 있지만 앱이 ProGuard 규칙으로 컴파일되면 이 규칙이 모든 dex 파일을 작은 문자 이름으로 축소한 다음 큰 문제에 직면하게 됩니다. 구현을 추적할 수 없습니다. 모드 설명은 https://developer.android.com/studio/build/shrink-code를 참조하세요.
해피코딩...
나는 작동하지 않을 apk에 대해 fedora 31 노트북에서 dex2jar을 작동시키려고 며칠 동안 스스로를 미치게 만들었습니다. 이 python 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/
그러나 최근에 Procyon, CFR, JD, Fernflower, Krakatau, Candle 과 같은 디컴파일러의 새로운 물결이 시장에 진출했습니다.
다음은 이 사이트에 제공된 디컴파일러 목록입니다.
CFR - 무료, 사용 가능한 소스 코드 없음, http://www.benf.org/other/cfr/ 저자: Lee Benfield
아주 잘 업데이트된 디컴파일러! CFR은 Java 9 모듈, Java 8 람다, Java 7 문자열 스위치 등의 최신 Java 기능을 디컴파일할 수 있습니다. 다른 JVM 언어의 클래스 파일을 다시 Java로 전환하는 데에도 상당한 도움이 됩니다!
JD - 비상업적 용도로만 무료, http://jd.benow.ca/ 저자: Emmanuel Dupuy
2015년에 업데이트되었습니다. Eclipse 및 IntelliJ에 대한 자체 시각적 인터페이스와 플러그인이 있습니다. C++로 작성되었으므로 매우 빠릅니다. 자바 5를 지원합니다.
Procyon - 오픈 소스, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler 작성자: Mike Strobel
고사리 - 오픈 소스, https://github.com/fesh0r/fernflower 저자: Egor Ushakov
2015년에 업데이트되었습니다. 매우 유망한 분석 Java 디컴파일러가 이제 IntelliJ 14의 필수적인 부분이 되었습니다. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Java 버전 6까지 지원 (주석, 제네릭, 열거형)
JAD - 여기에는 역사적 이유로만 제공됩니다. 무료, 사용 가능한 소스 코드 없음, jad 다운로드 미러 저자: Pavel Kouznetsov
예, 가능합니다.
Android .apk 파일을 리버스 엔지니어링하는 데 사용할 수 있는 수많은 소프트웨어가 있습니다.
최근에 나는 내 웹사이트에 47개의 최고의 APK 디컴파일러 목록을 작성했습니다. 나는 그것들을 4개의 다른 섹션으로 배열했다.
이 컬렉션이 당신에게 도움이 되기를 바랍니다.
1단계: 새 폴더를 만들고 디코딩하려는 .apk 파일 위에 복사합니다.
이제 이 .apk 파일의 확장자를 .zip으로 변경하고(예: filename.apk에서 filename.zip으로 이름 변경) 저장합니다. 이제 classes.dex 파일 등에 액세스할 수 있습니다. 이 단계에서 드로어블은 볼 수 있지만 xml 및 Java 파일은 볼 수 없으므로 계속하십시오.
2단계: 이제 동일한 폴더(또는 새 폴더)에 이 .zip 파일의 압축을 풉니다.
다운로드 https://github.com/pxb1988/dex2jar/releases/tag/2.0 : dex2jar-2.0
이제 명령 프롬프트를 열고 디렉터리를 해당 폴더(또는 새 폴더)로 변경합니다. 그런 다음 실행하십시오. d2j-dex2jar.bat classes.dex
이 디컴파일러 http://java-decompiler.github.io/ 를 다운로드하여 classes-dex2jar.jar을 디컴파일하십시오.
3단계: 이제 다른 새 폴더를 엽니다.
디코딩하려는 .apk 파일을 넣으십시오.
최신 버전의 apktool 및 apktool( https://ibotpeaches.github.io/Apktool/install/ ) 설치 창을 다운로드하고(둘 다 동일한 링크에서 다운로드할 수 있음) 동일한 폴더에 배치합니다.
명령 창 열기
이제 apktool과 같은 명령을 실행하십시오.
apktool d myApp.apk(여기서 myApp.apk는 디코딩하려는 파일 이름을 나타냄)
이제 해당 폴더에 파일 폴더가 생기고 apk의 xml 파일을 쉽게 읽을 수 있습니다.
두 폴더의 내용을 단일 폴더로 복사
완료 !
출처 : http:www.stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an-apk-file
Android 스튜디오에서 Gradle이란 무엇입니까? (0) | 2022.07.06 |
---|---|
한 사용자의 커밋에 대한 git 로그를 보려면 어떻게 해야 합니까? (0) | 2022.07.06 |
MySQL에서 명령줄을 사용하여 사용자 계정 목록을 얻으려면 어떻게 해야 합니까? (0) | 2022.07.06 |
UnicodeEncodeError: 'ascii' 코덱은 위치 20의 u'\xa0' 문자를 인코딩할 수 없습니다: 서수가 범위(128)에 없음 (0) | 2022.07.06 |
특정 커밋에 대한 Git 패치를 생성하려면 어떻게 해야 합니까? (0) | 2022.07.06 |