Existe uma maneira de obter o código fonte de um arquivo APK?
16 answers
Modo Simples: usar a ferramenta 'online' http://www.javadecompilers.com/apk faz o upload do apk e obtém o código-fonte.
Procedimento de descodificação .ficheiros apk, método passo a Passo:
Passo 1:
Faça uma nova pasta e copie sobre o .ficheiro apk que quer descodificar.
Agora muda o nome da extensão disto .ficheiro apk para .zip (por exemplo, mudar o nome do ficheiro.apk para o nome do ficheiro.e poupa-me. Agora podes aceder às aulas.ficheiros dex, etc. Neste estágio você é capaz de ver drawables, mas não arquivos xml e java, por isso continue.
Passo 2:
Agora extrai isto .ficheiro zip na mesma pasta (ou pasta nova).
Transferir o dex2jar e extraí - lo para a mesma pasta (ou nova pasta).
Muda as aulas.ficheiro dex na pasta dex2jar.
Agora abra a linha de comandos e mude a pasta para essa pasta (ou nova pasta). Em seguida, escreva {[[0]} (Para mac terminal ou ubuntu write
./d2j-dex2jar.sh classes.dex
) e carregue em enter. Agora tens as aulas.dex.ficheiro dex2jar na mesma pasta.Baixe java descompiler, faça duplo-click sobre JD-gui, clique em open file e em open classes.dex.ficheiro do dex2jar dessa pasta: agora você obtém os ficheiros da classe.
Gravar todos estes ficheiros de classe (em Jd-gui, carregue em Ficheiro - > Gravar todas as fontes) pelo nome src. Nesta fase você tem a fonte java, mas a .os ficheiros xml continuam inacessíveis, por isso continuar.
Passo 3:
Agora abra outra nova pasta
Põe lá .ficheiro apk que deseja descodificar
Obtenha a versão mais recente de apktool e apktool install window (ambos podem ser transferidos da mesma ligação) e coloque-os na mesma pasta
Abrir uma janela de comandos
Agora execute um comando como
apktool if framework-res.apk
e o seguinteapktool d myApp.apk
(onde está o myApp?apk denota o nome do ficheiro que deseja descodificar)
Agora você tem uma pasta de arquivo nessa pasta e pode facilmente ler os arquivos xml do apk.
Passo 4:
Não é qualquer passo apenas copiar o conteúdo de ambas as pastas (neste caso, ambas novas pastas)para a única
E desfrutem do código fonte...- download
apktool.bat
(ouapktool
para Linux) eapktool_<version>.jar
a partir de http://ibotpeaches.github.io/Apktool/install/ - mudar o nome do ficheiro jar de cima para
apktool.jar
e colocar ambos os ficheiros na mesma pasta - abra uma caixa dos (
cmd.exe
) e mude para essa pasta; verifique se um ambiente Java é instalado (para o Linux, verifique também as notas relativas às bibliotecas necessárias) - começar:
apktool decode [apk file]
resultado intermédio : ficheiros de recursos,
AndroidManifest.xml
- abrir um ficheiro APK com um unpacker à sua escolha
resultado intermédio:
classes.dex
- descarregar e extrair
dex2jar-0.0.9.15.zip
de http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q= - arrastar e largar
classes.dex
emdex2jar.bat
(ou inserir<path_to>\dex2jar.bat classes.dex
numa caixa DOS DOS; para utilização no Linuxdex2jar.sh
)resultado intermédio:
classes_dex2jar.jar
- desempacote
classes_dex2jar.jar
(pode ser opcional dependendo do descompilador usado) {[[28]} - descompile os ficheiros da sua classe (por exemplo, com JD-GUI ou DJ Decompiler)
resultado : código-fonte
Nota: não é permitido descompilar pacotes de terceiros; este guia destina-se a recuperar o código fonte pessoal apenas de um ficheiro APK; finalmente, o código resultante será provavelmente ofuscado
Pela futuro, eu recomendo muito aprender um sistema de controle de Versão, como CVS, SVN e git etc.
E como fazer marcha-atrás.
Existe também uma nova aplicação na Play Store com a qual é possível descompilar um apk (aplicações do sistema também) e ver o código fonte bem no seu smartphone. Ele guarda os arquivos para o seu cartão SD para que você possa vê-lo no seu computador também. Não requer raiz ou outra coisa.
Apenas instale e divirta-se. Acho que esta é a maneira mais fácil de descompilar uma aplicação.Apktool é a melhor coisa que se pode tentar. Eu guardei algum xml com ele, mas honestamente eu não sei como ele vai funcionar com o.código java.
Eu recomendaria que você tivesse um repositório de código mesmo que você seja o único codificador. Tenho usadoo cacifo do projecto para os meus próprios projectos. Dá-te respostas GRÁTIS da svn e do git.
Estes dois artigos descrevem como combinar o uso de apktool
e dex2jar
para pegar num ficheiro APK
e criar um projecto Eclipse que o possa construir e executar.
Http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html
Http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html
Basicamente tu:
- Use
apktool
para obter os ficheiros de recursos do apk - utilizar
dex2jar
para obter um ficheiro jar que contém as classes num formato que o Eclipse irá gostar. - crie um projecto Eclipse aponte-o para os ficheiros de recursos e para o novo ficheiro jar
- abra o ficheiro jar com um utilitário zip e remova os recursos existentes
- abra o ficheiro jar com
JDGui
para ver o código-fonte
Pegue no código-fonte que precisar de - apague essa classe do ficheiro jar (para que não tenha a mesma classe definida várias vezes) Investiga.
JDGui
, Coloque-o numa classe dentro do Eclipse e modifique-o
Pode encontrar o apktool aqui . Basta transferir o apktool e o auxiliar apropriado (para Windows, Linux ou Mac OS). Eu recomendo usar uma ferramenta como 7-zip para desempacotar.
Há algumas maneiras de fazer isto:
-
Use o recurso" Profile or Debug APK " no Android Studio 3.0.
Permite-lhe abrir e explorar APKs no Android Studio. As aulas são decompostas em smali. Os recursos não são extraídos e coisas como "Go to Definition", "Find All References" e depuração não funcionam sem o código fonte (android studio 3.0 canary 9). Alguns recursos smali adicionais podem funcionar com smalidea . -
Utilizar jadx .
O Jadx descompila o código num dado APK para ficheiros de código java.
-
Utilizar apktool .
Apktool é uma ferramenta de linha de comando que extrai recursos e decompila o código em smali para uma dada apk. Você pode recompilar usando apktool também. Aqui está um exemplo disso em ação:
$ apktool d test.apk I: Using Apktool 2.2.4 on test.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: 1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files... $ apktool b test I: Using Apktool 2.2.4 on test I: Checking whether sources has changed... I: Smaling smali folder into classes.dex... I: Checking whether resources has changed... I: Building resources... I: Building apk file... I: Copying unknown files/dir...
Pode ser fácil ver a fonte:
No Android studio 2.3,Build -> Analyze APK -> Select the apk that you want to decompile
.Você verá que é o código fonte.
Linf para reference:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
Você pode seguir os dois primeiros passos de prankul garg ". Então você tem outras oportunidades:
Passo 3':
Baixe o "JD-GUI" , é fácil encontrar este. Abra o seu .jar file in " jd-gui.exe". (Ficheiro > Abrir ficheiro > 'encontrou o seu .jar file'). Após este procedimento, você pode salvar todos os recursos em um .ficheiro zip .
Então,1 - Tens de mudar o nome do .apk ficheiro para .zip
2. º - tens de descodificar .ficheiro dex (Se quiser, descodifice o .apk file to dex2jar , that's possible)
3º - tens de descodificar .jar ficheiro com Jd-GUIAbaixo ONLINE Ferramenta:
Http://www.javadecompilers.com/apk
Faz tudo por um clique: decompiled .java files + resources + xml (in one .ficheiro zip) com um descompilador muito bom (jadx devolve código java em locais / funções onde outros compiladores devolvem comentários dentro da função como "incapaz de descompilar" ou algum código android montador/máquina)
Apktool para aplicações Android de engenharia reversa, fechadas e Binárias.
Pode descodificar recursos para uma forma quase original e reconstruí-los depois de fazer algumas modificações.Torna possível depurar o código smali passo a passo. Também torna o trabalho com um aplicativo mais fácil por causa da estrutura de arquivos como projeto e automação de algumas tarefas repetitivas como construção apk, etc.
Este site https://www.apkdecompilers.com fiz isso automaticamente.
Eu tentei o site mencionado na resposta aceita primeiro, mas isso não funcionou para mim.Eu pessoalmente recomendo Mostrar Java Android App para obter o código fonte. Você pode baixá-lo da play store ou de aqui
Apktool é o caminho a seguir. O serviço de apktool Online também existe: http://www.javadecompilers.com/apktool
Existem algumas limitações, obviamente, devido ao Serviço "natureza online": você pode extrair e pesquisar recursos e o arquivo manifesto, mas é impossível recompilar a aplicação no momento. Ainda assim, esta é uma maneira fácil de 'abrir' a aplicação android.Pode tentar DexPatcher . Até se integra com o Android Studio. Ele usa Apktool e Dex2Jar internamente.
Você pode usar essas ferramentas de forma independente também.
Apktool decompila apk, e extratos .ficheiros dex, que podem ser convertidos para jar usando o Dex2Jar. Jar pode ser decompilado usando JD-GUI . Você pode ver o código Java com a ajuda dessa ferramenta. Embora a semelhança do Código decompilado com o código real não possa ser garantida. Existem algumas ferramentas avançadas de código ofuscação disponíveis no mercado, que estragam o código para tornar difícil a descompilação / compreensão. exemplo. Proguard