APK를 디컴파일하여 코드 및 리소스 획득
이 섹션 소개
"Decompile Apk"는 매우 고급스러운 것처럼 보이지만 실제로는 그렇지 않습니다. 일부 디컴파일 소프트웨어를 사용하여 APK를 디컴파일하여 프로그램의 소스 코드, 사진, XML 리소스 및 기타 파일을 얻습니다. 이전에 이런 일을 해본 적이 있습니까? 다른 사람의 APP 인터페이스가 매우 아름답거나 다른 사람의 사진 자료가 마음에 들면 더 쉽게 다른 사람의 APK를 다운로드한 다음 접미사 이름을 xxx로 변경할 수 있습니다. , 압축을 푼 다음: 작성자는 무작위로 APK의 압축을 풀었습니다.
res 디렉토리를 열고 그 안에 그림 자료를 가져올 수 있습니다.
그러나 이 방법은 .png 또는 .jpg와 같은 일부 비트맵 파일 리소스만 가져옵니다. xml 리소스인 경우 파일을 열 때 왜곡된 것을 발견하게 됩니다. 그리고 APK의 Java 코드를 보려고 합니다. 프로그램이 모두 class.dex 파일에 패키지되어 있기 때문에 작동하지 않습니다! 하지만 디컴파일을 하면 여러분의 요구사항을 해결할 수 있습니다~ 또한, 다른 사람의 APK를 자신의 서명으로 다시 패키징하여 관련 시장에 게시하는 등의 불법적인 행위에 디컴파일을 사용하지 마세요... 또한, 다른 사람의 코드를 참고하여, 완전한 사본보다는! ! ! 기억하다! !
1. 준비를 위한 세 가지 도구
apktool: 리소스 파일 가져오기, 이미지 파일, 레이아웃 파일 및 일부 XML 리소스 파일 추출
dex2jar: APK를 Java 소스 코드로 디컴파일(classes.dex를 jar 파일로 변환)
jd-gui: 2에서 변환된 jar 파일 보기, 즉 Java 파일 보기 독자의 편의를 위해 세 가지 패키지를 함께 모아 클라우드 디스크에 올려 놓았습니다. 필요한 경우 다운로드할 수 있습니다. decompilation.zip과 관련된 세 가지 도구
2. apktool을 사용하여 APK를 디컴파일하여 이미지와 XML 리소스를 얻습니다.
다운로드한 apktool의 압축을 풀면 다음 파일을 볼 수 있습니다(두 개의 csdn을 무시하세요. 하나는 디컴파일된 apk이고 다른 하나는 디컴파일된 파일입니다).
그런 다음 cmd.exe를 두 번 클릭하고 명령줄로 이동하여 apktool.bat d csdn.apk를 입력하고 Enter 키를 누릅니다.
![]()
그러면 원하는 리소스가 포함된 생성된 csdn 폴더를 볼 수 있습니다.
![]()
좋습니다. 이제 XML 리소스가 생겼습니다. 그렇죠? 그림자료도 있어요!
3. dex2jar를 사용하여 class.dex를 jar 파일로 변환합니다.
다운로드한 dex2jar 폴더의 압축을 풀고 apk의 class.dex를 dex2jar.bat가 있는 디렉터리에 복사합니다.
![]()
cmd를 열고 다음 디렉터리로 이동하세요. 다음을 입력하세요. d2j-dex2jar.batclasses.dex
![]()
그러면 jar 패키지가 생성되는 것을 볼 수 있습니다.
자, 변환이 완료되었습니다!
4. jd-gui를 사용하여 jar 패키지의 Java 코드를 확인합니다.
좋아, jd-gui 폴더를 열어라
![]()
연 후 3에서 변환된 jar 패키지를 열면 내부 코드를 볼 수 있습니다.
csdn 클라이언트는 코드를 난독화하지 않습니다. 아마도 오픈 소스의 정신일지도 모르겠습니다. 코드를 배워봅시다! 일반적으로 APK 릴리스는 난독화한 다음 일부 암호화를 수행하거나 더 일반적으로 사용되는 "Love Encryption"인 타사 암호화 플랫폼을 사용하십시오. 관심이 있으시면 Baidu에서 더 자세한 소개를 확인할 수도 있습니다!
이 섹션 요약
좋습니다. APK 디컴파일을 소개하는 내용은 여기까지입니다. 이미 준비가 되셨고 시도해 보시기 바랍니다. 마지막으로 한 번 더 시도해 보세요. 나쁜 짓은 하지 마세요. 다른 사람의 노동의 결실을 존중하십시오! 또한 환경 구축 및 몇 가지 일반적인 개발 기술에 대한 첫 번째 장을 마쳤습니다. 다음 섹션에서는 Android의 일반적인 UI 컨트롤에 대해 학습하는 이 튜토리얼 시리즈의 두 번째 장을 시작합니다. 관련된 기본 컨트롤이 많기 때문에 컨트롤을 계속 배우면 재미가 없을 수 있습니다. 매일 하나의 컨트롤 + 다른 지식 포인트를 배우면서 튜토리얼을 작성할 수 있습니다. 아이디어 나올테니 계속 지켜봐주세요~감사합니다~