Android .apk 파일을 디 컴파일 할 수 있습니까?
사용자가 내 애플리케이션의 apk 파일을 실제 코드로 다시 변환 할 수 있습니까? 만약 그렇다면-이것을 막을 방법이 있습니까?
첫째, apk 파일 은 단지 수정 된 jar 파일입니다. 그래서 진짜 질문은 내부에서 dex 파일을 디 컴파일 할 수 있다는 것입니다. 대답은 일종의 것입니다. dedexer 및 smali 와 같은 디스어셈블러가 이미 있습니다 . 이것들이 더 나아질 것이라고 기대할 수 있으며 이론적으로는 결국 실제 Java 소스로 디 컴파일 할 수 있습니다 (적어도 가끔). DEX를 Java 소스 코드로 디 컴파일 하는 이전 질문을 참조하십시오 .
기억해야 할 것은 난독 화가 작동하지 않는다는 것입니다. 좋은 면허를 선택하고 법을 통해 시행하기 위해 최선을 다하십시오. 신뢰할 수없는 기술적 조치로 시간을 낭비하지 마십시오.
APK 파일의 디 컴파일이 가능합니다. 그러나 난독 화 된 코드는 이해하기 어려울 수 있습니다.
APK 파일 내의 리소스를보기위한 ApkTool
- AndroidManifest.xml 및 res 폴더의 모든 항목 (레이아웃 xml 파일, 이미지, webview에서 사용되는 html 등)을 추출합니다.
- 명령 :
apktool.bat d sampleApp.apk
- 참고 : 7-zip과 같은 zip 유틸리티를 사용하여이 작업을 수행 할 수 있습니다. 그러나 모든 .class 파일의 .smali 파일도 추출합니다.
dex2jar 사용
- .apk 파일에서 .jar 파일을 생성합니다.이 .jar에서 소스 코드를 보려면 JD-GUI가 필요합니다.
- 명령 :
dex2jar sampleApp.apk
JD-GUI를 사용하여 .jar 디 컴파일
- .class 파일을 디 컴파일합니다 (안드로이드 앱의 경우 난독 화되었지만 다른 .jar 파일의 경우 읽을 수있는 원본 코드를 얻음). 즉, 우리는 응용 프로그램에서 .java를 다시 얻습니다.
또한 요즘에는 소프트웨어 없이도 Android 애플리케이션을 온라인으로 디 컴파일 할 수 있습니다.
다음은 두 가지 옵션입니다.
이 jadx 도구 https://sourceforge.net/projects/jadx/files/ 다운로드
압축을 풀고 lib 폴더에서 jadx-gui-0.6.1.jar 파일을 실행하여 이제 apk 파일을 찾습니다. 끝났다. 자동으로 apk는 저장 버튼을 눌러 디 컴파일하고 저장합니다. 그것이 당신을 위해 작동하기를 바랍니다. 감사
dex2jar
/를 사용할 때 apktool
, 특히 루프에서 코드가 깨지는 경우 가 있습니다. 이, 사용 방지하기 위해 jadx 생성하지 않고, 자바 소스 코드로, 컴파일 해제 달빅 바이트 코드를 .jar
/의 .class
로 첫 번째 파일을 dex2jar
(apktool 사용 내가 생각 dex2jar)한다. 또한 오픈 소스이며 활발하게 개발 중입니다. GUI 매니아를위한 GUI도 있습니다. 시도 해봐!
사용자가 내 애플리케이션의 apk 파일을 실제 코드로 다시 변환 할 수 있습니까?
예.
사람들은 다양한 도구를 사용하여 다음을 수행 할 수 있습니다.
- 분석 : APK
- APK 디코딩 / 해킹
- 파일
FDex2
덤프에 사용dex
- 다음
dex2jar
으로 변환하는 데 사용jar
- 그런 다음 소스 코드
jadx
로 변환하는 데 사용java
- 그런 다음 소스 코드
- 다음
- 파일
만약 그렇다면-이것을 막을 방법이 있습니까?
예. 이를 방지하기위한 몇 가지 (결합 할 수있는) 방법 :
- 낮은 수준 : 코드 난독 화
- Android 사용
ProGuard
- Android 사용
- 높은 수준 : Android 강화 시나리오 사용
자세한 내용은 내 중국어 자습서를 참조 할 수 있습니다 : 安卓 应用 的 安全 和 破解
참고 URL : https://stackoverflow.com/questions/3122635/is-it-possible-to-decompile-an-android-apk-file
'programing' 카테고리의 다른 글
줄 번호가있는 Git diff (줄 번호가있는 Git 로그) (0) | 2020.09.22 |
---|---|
내 도메인 엔터티를 프레젠테이션 레이어에서 분리해야하는 이유는 무엇입니까? (0) | 2020.09.22 |
data.table의 dplyr, 실제로 data.table을 사용하고 있습니까? (0) | 2020.09.22 |
위키 낱말 사전 콘텐츠를 검색하는 방법? (0) | 2020.09.22 |
Amazon S3 정적 웹 사이트 용 HTTPS (0) | 2020.09.22 |