Android .apk 파일을 디 컴파일 할 수 있습니까?


86

사용자가 내 애플리케이션의 apk 파일을 실제 코드로 다시 변환 할 수 있습니까? 만약 그렇다면-이것을 막을 방법이 있습니까?


1
APK를 디 컴파일하는 방법 에는 여러 가지가 있습니다 . 나는 APKTool을 더 자주, 가장 강력하고 가장 강력합니다. 그것으로 apk 파일수정하는 것은 매우 쉽습니다 .
Taranfx 2011 년

: 여기 블로그 게시물을 작성했습니다 codexplo.wordpress.com/2012/03/15/...을 그러나 다시, 그것은 난독 화 코드에 대한 어려울 것 ...
rokonoid


답변:


80

첫째, apk 파일 은 단지 수정 된 jar 파일입니다. 그래서 진짜 질문은 내부에서 dex 파일을 디 컴파일 할 수 있다는 것입니다. 대답은 일종의 것입니다. dedexersmali 와 같은 디스어셈블러가 이미 있습니다 . 이것들이 더 나아질 것이라고 기대할 수 있으며 이론적으로는 결국 실제 Java 소스로 디 컴파일 할 수 있습니다 (적어도 가끔). DEX를 Java 소스 코드로 디 컴파일 하는 이전 질문을 참조하십시오 .

기억해야 할 것은 난독 화가 작동하지 않는다는 것입니다. 좋은 면허를 선택하고 법을 통해 시행하기 위해 최선을 다하십시오. 신뢰할 수없는 기술적 조치로 시간을 낭비하지 마십시오.


45
결코 말하지 마십시오. 난독 화는 단호한 도둑을 막을 수는 없지만 다른 많은 사람을 늦추거나 저지합니다. Proguard를 사용한 처리는 코드를 난독 화하는 쉽고 신뢰할 수있는 방법이며 보너스로 코드도 최적화합니다. Android SDK에 포함되어 있으므로 Google에서 보증합니다.
Barry Fruitman 2011

3
난독 화는 확실히 작동하지만 목표가 무엇인지 더 명확하게 정의해야합니다. 분명히 소스 코드를 진정으로 안전하게 유지할 수있는 유일한 방법은 누구에게도 서버 나 클라이언트에 대한 액세스 권한을 부여하지 않는 것입니다. Proguard는 XML 파일에 참조가있는 클래스에서 제대로 작동하지 않습니다. 이를 우회하려면 수동 난독 화를 사용해야합니다.
MattC

35

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를 다시 얻습니다.

apktool은 자바 소스 파일을 뱉어 내지 않습니다! 유일한 smali
IgorGanapolsky

1
내가 이미 대답에서 말했듯이 apktool은 .apk에서 .jar을 생성하고 .java 소스 파일을 얻기 위해 .jar을 디 컴파일하는 도구와 같은 JD-GUI를 사용해야합니다.
gtiwari333

1
넌 내 목숨을 구했어! 멋진 게시물입니다! 실패한 SSD로 인해 지난 이틀간의 코드를 잃어 버렸습니다. 그러나, 나는 APK를 가지고 있었고 이제는 내 소스를 가지고 있습니다. 조금 다르지만 소스입니다!
farcrats

3

또한 요즘에는 소프트웨어 없이도 Android 애플리케이션을 온라인으로 디 컴파일 할 수 있습니다.

다음 두 가지 옵션이 있습니다.


decompileandroid.com이 오프라인 상태이고 (apk를 업로드하면 다시 다운로드하는 데 문제가 있음) javadecompilers.com/apk 가 내 apk를 오랫동안 대기열에 넣었습니다. 오프라인으로 갔다가 온라인 상태 였는데 여전히 대기열에있었습니다. 모든 검색 기록을 지우고 두 번째로 업로드 한 APK가 대기열에 있습니다.
iOSAndroidWindowsMobileAppsDev 2011-08-11

1

이 jadx 도구 https://sourceforge.net/projects/jadx/files/ 다운로드

압축을 풀고 lib 폴더에서 jadx-gui-0.6.1.jar 파일을 실행하여 이제 apk 파일을 찾습니다. 끝났다. 자동으로 apk는 저장 버튼을 눌러 디 컴파일하고 저장합니다. 그것이 당신을 위해 작동하기를 바랍니다. 감사


0

dex2jar/를 사용할 때 apktool, 특히 루프에서 코드가 깨지는 경우 가 있습니다. 이, 사용 방지하기 위해 jadx 생성하지 않고, 자바 소스 코드로, 컴파일 해제 달빅 바이트 코드를 .jar/의 .class로 첫 번째 파일을 dex2jar(apktool 사용 내가 생각 dex2jar)한다. 또한 오픈 소스이며 활발하게 개발 중입니다. GUI 매니아를위한 GUI도 있습니다. 시도 해봐!


0

사용자가 내 애플리케이션의 apk 파일을 실제 코드로 다시 변환 할 수 있습니까?

예.

사람들은 다양한 도구를 사용하여 다음을 수행 할 수 있습니다.

  • 분석 : APK
  • APK 디코딩 / 해킹
    • 파일 FDex2덤프에 사용dex
      • 다음 dex2jar으로 변환하는 데 사용jar
        • 그런 다음 소스 코드 jadx로 변환하는 데 사용java

만약 그렇다면-이것을 막을 방법이 있습니까?

예. 이를 방지하기위한 여러 가지 (결합 할 수있는) 방법 :

  • 낮은 수준 : 코드 난독 화
    • Android 사용 ProGuard
  • 높은 수준 : Android 강화 시나리오 사용

자세한 내용은 내 중국어 자습서를 참조 할 수 있습니다 :安卓 应用 的 安全 和 破解


0

예, .apk 파일을 디 컴파일하는 데 사용할 수있는 수많은 소프트웨어가 있습니다.

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

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

이 컬렉션이 도움이 되길 바랍니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.