Programing

APK를 디 컴파일하고 수정 한 다음 다시 컴파일합니다.

lottogame 2020. 12. 2. 07:46
반응형

APK를 디 컴파일하고 수정 한 다음 다시 컴파일합니다.


기존 APK를 수정하고 소스를 수정 한 다음 다시 컴파일해야합니다.

  • dex2jar 또는 apktool을 사용하여 디 컴파일 할 수 있습니다. 잘 작동합니다.
  • jar 파일에서 Java 소스를 얻을 수 있습니다 (jd-gui 사용).
  • 그런 다음 Java 파일을 수정할 수 있습니다.

하지만 이제 Java 파일을 다시 컴파일하고 jar 파일에 다시 넣는 방법을 알고 싶습니다! (jar 부분은 쉬울 것입니다. 주된 문제는 Android 용 Java 파일을 다시 컴파일하는 방법 인 것 같습니다.)

다른 해결책은 apktool을 사용한 다음 smali 파일을 수정하는 것임을 알고 있지만 많은 코드를 추가하고 싶을 때 정말 복잡해 보입니다!

내 응용 프로그램은 기본 HelloWorld whitout 난독 화입니다.


Chris Jester-Young 덕분에 나는 그것을 작동시킬 수있었습니다!

나는 그것을 할 수 있었던 방법이 정말 간단한 프로젝트에서만 작동 할 것이라고 생각합니다.

  • Dex2jar를 사용하여 Jar를 얻었습니다.
  • jd-gui를 사용하여 Jar를 Java 파일로 다시 변환합니다.
  • apktool을 사용하면 Android 매니페스트와 리소스 파일이 있습니다.

  • Eclipse에서 이전 프로젝트와 동일한 설정으로 새 프로젝트를 만듭니다 (매니페스트 파일의 모든 정보 확인).

  • 프로젝트가 생성되면 모든 리소스와 매니페스트를 apktool로 얻은 리소스로 바꿉니다.
  • Jar에서 추출한 Java 파일을 src foled (패키지 존중)에 붙여 넣습니다.
  • 필요한 것으로 파일을 수정합니다.
  • 모든 것이 컴파일 중입니다!

/! \ 장치에서 이전 apk를 제거했는지 확인하십시오. apk 서명이 이전 apk 서명과 동일하지 않다는 오류가 발생합니다!


이 질문에 여전히 답이 있다는 것을 알고 있으며 dexjar를 사용하여 apk에서 소스 코드를 얻는 방법에 대한 정보를 전달하고 싶습니다.

안드로이드 APK를위한 온라인 디 컴파일러 가 있습니다.

  1. 로컬 머신에서 APK 업로드
  2. 잠깐만
  3. zip 형식으로 소스 코드 다운로드

이게 얼마나 신뢰할 수 있는지 모르겠습니다.

@darkheir Answer는 apk를 디 컴파일하는 수동 방법입니다. Apk 생성의 여러 단계를 이해하는 데 도움이됩니다.

소스 코드가 있으면 수락 된 답변에 언급 된 단계를 따르십시오.

또 다른 온라인 Apk De-compiler @Andrew Rukin : http://www.javadecompilers.com/apk

여전히 가치가 있습니다. 제작자를위한 모자.


  1. 먼저 다음 링크에서 dex2jar 도구를 다운로드하십시오. http://code.google.com/p/dex2jar/downloads/list

  2. dex2jar폴더를 만드는 파일을 추출하십시오.

  3. 이제 apk 파일을 선택하고 확장자를 변경 한 후 확장자 .apk를 .zip으로 변경하면 zip 파일 인 것 같습니다. 그런 다음 찾은 파일을 추출 classes.dex합니다.

  4. 이제 classes.dex 파일을 선택하고 dex2jar폴더에 넣으십시오.

  5. 이제 cmd 창을 열고 dex2jar폴더 경로를 입력하십시오.

  6. 이제 명령 dex2jar.bat classes.dex을 입력하고 Enter를 누르십시오.

  7. 이제 파일 dex2jar을 찾은 폴더를 엽니 다classes_dex2jar.jar

  8. 다음으로 http://java.decompiler.free.fr/?q=jdgui 링크에서 자바 디 컴파일러 도구를 다운로드합니다.

  9. 마지막 단계 classes_dex2jar.jarJava decompiler 도구에서 파일 열면 이제 apk 코드를 볼 수 있습니다.


나는이 질문에 대한 답을 알고 있으며 여기서 더 나은 대답을하려고 노력하지 않습니다. 이 주제에 대한 내 경험을 공유하겠습니다.

코드를 잃어 버리고 apk파일 만 가지고있었습니다 . 나는 아래 도구를 사용하여 그것을 디 컴파일했고 그것은 나의 하루를 만들었다.

이러한 도구는 반드시 그러한 상황에서 사용해야합니다. 그렇지 않으면 비 윤리적이며 때로는 불법입니다 (다른 사람의 노력을 훔치는 것). 그러니 현명하게 사용하세요.

제가 가장 좋아하는 도구는 다음과 같습니다.

javadecompilers.com

Google Play에서 APK를 얻으려면 Google을 검색하거나 해당 사이트를 확인하십시오.

이 답변을 게시하는 날짜에 모든 링크를 테스트했으며 완벽하게 작동했습니다.

참고 : Apk 디 컴파일은 보호 된 코드의 경우 효과적이지 않습니다. 때문에 Proguard와는 축소하고 공정하게 하드 코드를 이해할 수 있도록 실제적인 이름을 코드와 이름 바꾸기 클래스를 모호하게.

보너스:

Proguard 사용에 대한 기본 자습서 :


dex2jar with jd-gui will give all the java source files but they are not exactly the same. They are almost equivalent .class files (not 100%). So if you want to change the code for an apk file:

  • decompile using apktool

  • apktool will generate smali(Assembly version of dex) file for every java file with same name.

  • smali is human understandable, make changes in the relevant file, recompile using same apktool(apktool b Nw.apk <Folder Containing Modified Files>)


This is a way:

  1. Using apktool to decode:

    $ apktool d -f {apkfile} -o {output folder}
    
  2. Next, using JADX (at github.com/skylot/jadx)

    $ jadx -d {output folder} {apkfile}
    

2 tools extract and decompiler to same output folder.

Easy way: Using Online APK Decompiler


I know this question is answered still and I am not trying to be smart here. I'll just want to share another method on this topic.

Download applications with apk grail

APK Grail providing the free zip file of the application.


Use luckypatcher and remove your license verification than you do not have to sign apk. Use WINRAR to replace your modified source code without decompile apk.


One should change the file extension from .apk to .zip. Then extract the files, modify them and then compress them to .zip and remember to rename the extension back to .apk.

For doing this we don't even have to use any computer. I prefer ES file explorer, which can also help to view and edit the source code.

참고URL : https://stackoverflow.com/questions/12370326/decompile-an-apk-modify-it-and-then-recompile-it

반응형