apk 파일의 코드를 추출하는 방법
이 질문에 이미 답변이 있습니다.
실제로 나는 cloudfilz.apk라는 .apk 파일의 코드를 추출하려고 시도하고 소스 코드에서 조작하고 싶었으므로 아래 단계를 따랐습니다.
새 폴더를 만들고 .apk 파일 (디코딩하려는)을 넣으십시오. 이제이 .apk 파일의 확장자를 .zip으로 바꾸고 (예 : filename.apk에서 filename.apk.zip으로 이름 바꾸기) 저장하십시오. .dex 파일 등 ...이 단계에서 드로어 블을 볼 수 있지만 xml 및 자바 파일은 볼 수 없습니다 ... 계속 ...
2 단계:
이제이 zip apk 파일을 동일한 폴더 (예 : NEW FOLDER)에서 추출합니다. 이제 http://code.google.com/p/dex2jar/ 링크에서 dex2jar을 다운로드 하고 동일한 폴더 (이 경우 새 폴더)에 압축을 풉니 다 ... 이제 명령 프롬프트를 열고 해당 폴더로 이동합니다. 이 경우 NEW FOLDER) .... "dex2jar classes.dex"에 도달 한 후 Enter 키를 누릅니다 ..... 이제 동일한 폴더에 classes.dex.dex2jar 파일이 생성됩니다.
=> 질문 :-나는 1 단계를 성공적으로 달성했지만 dex2jar classes.dex를 실행할 때 2 단계에서 명령 프롬프트에 오류가 발생합니다 java.lang.UnsupportedClassVersionError
. 이것은 설치된 jdk 버전과 classes.dex jdk 버전 번호 간의 비 호환성 때문이라는 것을 알고 있습니다. 그래서 여기에 갇혀 있고 탈출구가 있습니다 ...
참고 : 다음 지침은 모두 별도로 지정하지 않는 한 보편적으로 적용됩니다 (모든 OS에 적용됨).
전제 조건
필요할 것이예요:
- 작동하는 Java 설치
- 작동하는 터미널 / 명령 프롬프트
- 컴퓨터
- APK 파일
단계
1 단계 : APK 파일의 파일 확장자 변경
의 파일 확장자 변경
.apk
중 하나 추가하여 파일을.zip
파일 이름, 또는 변화에 확장.apk
에.zip
.예를 들어,
com.example.apk
이된다com.example.zip
거나com.example.apk.zip
. Windows 및 macOS에서는 파일 확장자를 변경할 것인지 묻는 메시지가 표시 될 수 있습니다. 클릭 OK또는 Add당신이 맥 OS를 사용하는 경우 :
2 단계 : APK에서 자바 파일 추출
특정 폴더에 이름이 변경된 APK 파일을 추출합니다. 예를 들어, 해당 폴더를
demofolder
.작동하지 않으면 WinZip 또는 7-Zip과 같은 다른 응용 프로그램에서 파일을 열어보십시오.
macOS의 경우
unzip
터미널 (에서 사용 가능)에서 실행 을 시도 할 수 있습니다/Applications/Terminal.app
. 여기서 하나 이상의 인수 (압축 해제 할 파일 + 선택적 인수)가 필요합니다.man unzip
문서 및 인수는를 참조하십시오 .
다운로드 (GitHub의 모든 릴리스 참조) 하고 이전 지점에서 설명한 것과 동일한 폴더에 해당 zip 파일의 압축을 풉니 다.
dex2jar
명령 프롬프트 (또는 터미널)를 열고 현재 디렉터리를 이전 지점에서 만든 폴더로 변경하고 명령
d2j-dex2jar.bat classes.dex
을 입력하고 Enter 키를 누릅니다. 이렇게하면classes-dex2jar.jar
동일한 폴더에 파일 이 생성 됩니다.- 맥 OS / 리눅스 사용자 : 교체
d2j-dex2jar.bat
와 함께d2j-dex2jar.sh
. 즉,d2j-jar2dex.sh classes.dex
터미널에서 실행 하고 Enter 키를 누릅니다.
- 맥 OS / 리눅스 사용자 : 교체
Java Decompiler (Github의 모든 릴리스 참조)를 다운로드 하고 압축을 푼 다음 실행 파일 / 응용 프로그램을 시작 (두 번 클릭)합니다.
JD-GUI 창에서 생성 된
classes-dex2jar.jar
파일을 끌어서 놓거나File > Open File...
jar 로 이동하여 찾아보십시오.다음으로 메뉴에서
File > Save All Sources
(Windows : Ctrl+ Alt+ S, macOS : ⌘+ ⌥+ S)로 이동합니다. 그러면 모든 패키지와 자바 파일로 구성된`classes-dex2jar.jar.src.zip '이라는 이름의 zip 파일을 저장할 위치를 묻는 대화 상자가 열립니다. (저장할 zip 파일의 이름을 바꿀 수 있습니다)해당 zip 파일 (
classes-dex2jar.jar.src.zip
)의 압축을 풀면 애플리케이션의 모든 Java 파일을 가져와야합니다.
3 단계 : xml
APK에서 파일 가져 오기
- 자세한 내용은
apktool
웹 사이트 에서 설치 지침 등을 참조하십시오. Windows :
- 다운로드 래퍼 스크립트 (옵션) 와 apktool 항아리 (필수) (예를 들어 동일한 폴더에 넣습니다
myxmlfolder
). - 현재 디렉토리를
myxmlfolder
폴더로 변경하고 apktool jar 파일의 이름을apktool.jar
. .apk
같은 폴더 (예 :)에 파일을 배치합니다myxmlfolder
.명령 프롬프트 (또는 터미널)를 열고 현재 디렉토리를
apktool
저장된 폴더 (이 경우myxmlfolder
)로 변경합니다. 다음으로 명령을 입력하십시오apktool if framework-res.apk
.여기서 우리가하고있는 것은 프레임 워크를 설치하는 것입니다. 자세한 내용은 문서를 참조하세요 .
- 위의 명령은 "Framework installed ..."가됩니다.
명령 프롬프트에서 명령을 입력합니다
apktool d filename.apk
(여기서는filename
apk 파일의 이름). 파일을 디코딩해야합니다. 자세한 내용은 문서를 참조하세요 .그러면 파일 확장자가 없는 apk 파일의 원래 이름 인 폴더
filename.out
가 출력 됩니다. 이 폴더에는 레이아웃, 드로어 블 등과 같은 모든 XML 파일이 있습니다.filename
.apk
- 다운로드 래퍼 스크립트 (옵션) 와 apktool 항아리 (필수) (예를 들어 동일한 폴더에 넣습니다
출처 : APK 파일에서 소스 코드를 얻는 방법-Comptech Blogspot
시장 또는 서명되지 않은 모든 .apk 파일
If you apk is downloaded from market and hence signed Install Astro File Manager from market. Open Astro > Tools > Application Manager/Backup and select the application to backup on to the SD card . Mount phone as USB drive and access 'backupsapps' folder to find the apk of target app (lets call it app.apk) . Copy it to your local drive same is the case of unsigned .apk.
Download Dex2Jar zip from this link: SourceForge
Unzip the downloaded zip file.
Open command prompt & write the following command on reaching to directory where dex2jar exe is there and also copy the apk in same directory.
dex2jar targetapp.apk file
(./dex2jar app.apk on terminal)http://jd.benow.ca/ download decompiler from this link.
Open ‘targetapp.apk.dex2jar.jar’ with jd-gui File > Save All Sources to sava the class files in jar to java files.
step 1:
Download dex2jar here. Create a java project and paste (dex2jar-0.0.7.11-SNAPSHOT/lib ) jar files .
Copy apk file into java project
Run it and after refresh the project ,you get jar file .Using java decompiler you can view all java class files
step 2: Download java decompiler here
Click here this is a good tutorial for both window/ubuntu.
apktool1.5.1.jar download from here.
apktool-install-linux-r05-ibot download from here.
dex2jar-0.0.9.15.zip download from here.
jd-gui-0.3.3.linux.i686.tar.gz (java de-complier) download from here.
framework-res.apk ( Located at your android device /system/framework/)
Procedure:
- Rename the .apk file and change the extension to .zip ,
it will become .zip.
Then extract .zip.
Unzip downloaded dex2jar-0.0.9.15.zip file , copy the contents and paste it to unzip folder.
Open terminal and change directory to unzip “dex2jar-0.0.9.15 “
– cd – sh dex2jar.sh classes.dex (result of this command “classes.dex.dex2jar.jar” will be in your extracted folder itself).
Now, create new folder and copy “classes.dex.dex2jar.jar” into it.
Unzip “jd-gui-0.3.3.linux.i686.zip“ and open up the “Java Decompiler” in full screen mode.
Click on open file and select “classes.dex.dex2jar.jar” into the window.
“Java Decompiler” and go to file > save and save the source in a .zip file.
Create “source_code” folder.
Extract the saved .zip and copy the contents to “source_code” folder.
여기에 소스 코드가 보관됩니다.
apktool1.5.1.tar.bz2를 추출하면 apktool.jar 이 생성됩니다.
이제“apktool-install-linux-r05-ibot.zip”의 압축을 풉니 다.
“framework-res.apk”,“.apk”및 apktool.jar 복사
압축을 푼 "apktool-install-linux-r05-ibot"폴더에 붙여 넣으십시오 (13 행).
그런 다음 터미널을 열고 다음을 입력하십시오.
– cd
– chown -R : 'apktool.jar'
– chown -R : 'apktool'
– chown -R : '적합'
– sudo chmod + x 'apktool.jar'
– sudo chmod + x 'apktool'
– sudo chmod + x 'aapt'
– sudo mv apktool.jar / usr / local / bin
– sudo mv apktool / usr / local / bin
– sudo mv aapt / usr / local / bin
– framework-res.apk 인 경우 apktool – apktool d .apk
참고 URL : https://stackoverflow.com/questions/7888102/how-to-extract-code-of-apk-file
'developer tip' 카테고리의 다른 글
find 출력을 캡처합니다. (0) | 2020.10.24 |
---|---|
함수형 프로그래밍에서 응용 함수를 사용해야하는 이유는 무엇입니까? (0) | 2020.10.24 |
uint32와 uint32_t의 차이점 (0) | 2020.10.24 |
Genymotion 가상화 엔진을 찾을 수 없음 / 플러그인로드가 Mac에서 중단됨 (0) | 2020.10.24 |
'사용'문 대 '마지막으로 시도' (0) | 2020.10.24 |