O disco rígido do meu laptop acabou de travar e eu perdi todo o código-fonte de um aplicativo em que trabalho nos últimos dois meses. Tudo o que tenho é o arquivo APK armazenado no meu email a partir do momento em que o enviei a um amigo.
Existe alguma maneira de extrair meu código fonte deste arquivo APK?
android
android-resources
decompiling
apk
Frank Bozzo
fonte
fonte
javac -decompile
, que se encaixaria nas diretrizes do SO. Parece-me que as respostas estão fora do tópico , não a pergunta.Respostas:
Maneira simples: use a ferramenta online http://www.javadecompilers.com/apk , faça o upload do apk e obtenha o código fonte.
Procedimento para decodificar arquivos .apk, método passo a passo:
Passo 1:
Crie uma nova pasta e copie sobre o arquivo .apk que deseja decodificar.
Agora renomeie a extensão deste arquivo .apk para .zip (por exemplo, renomeie de filename.apk para filename.zip) e salve-o. Agora você pode acessar os arquivos classes.dex, etc. Nesta fase, você pode ver os arquivos de desenho, mas não os arquivos xml e java, então continue.
Passo 2:
Agora extraia esse arquivo .zip na mesma pasta (ou NOVA PASTA).
Faça o download do dex2jar e extraia-o para a mesma pasta (ou NOVA PASTA).
Mova o arquivo classes.dex para a pasta dex2jar.
Agora abra o prompt de comando e altere o diretório para essa pasta (ou NOVA PASTA). Em seguida, escreva
d2j-dex2jar classes.dex
(para terminal mac ou ubuntu write./d2j-dex2jar.sh classes.dex
) e pressione enter. Agora você tem o arquivo classes.dex.dex2jar na mesma pasta.Faça o download do descompilador java , clique duas vezes em jd-gui, clique em arquivo aberto e abra o arquivo classes.dex.dex2jar dessa pasta: agora você obtém os arquivos de classe.
Salve todos esses arquivos de classe (em jd-gui, clique em Arquivo -> Salvar todas as fontes) pelo nome do src. Nesta fase, você obtém a fonte java, mas os arquivos .xml ainda estão ilegíveis, portanto continue.
Etapa 3:
Agora abra outra nova pasta
Coloque no arquivo .apk que você deseja decodificar
Faça o download da versão mais recente do apktool AND janela de instalação do apktool (ambos podem ser baixados no mesmo link) e coloque-os na mesma pasta
Abra uma janela de comando
Agora execute o comando como
apktool if framework-res.apk
(se você não o tiver aqui ) e o próximoapktool d myApp.apk
(em que myApp.apk indica o nome do arquivo que você deseja decodificar)agora você tem uma pasta de arquivos nessa pasta e pode ler facilmente os arquivos xml do apk.
Passo 4:
Não é uma etapa, basta copiar o conteúdo das duas pastas (neste caso, as duas novas pastas) para a única
e aproveite o código fonte ...
fonte
framework-res.apk
. Faça o download aquiEsta é uma descrição alternativa - caso alguém tenha ficado preso à descrição acima. Siga os passos:
apktool.bat
(ouapktool
para Linux) eapktool_<version>.jar
em http://ibotpeaches.github.io/Apktool/install/apktool.jar
e coloque os dois arquivos na mesma pastacmd.exe
) e mude para essa pasta; verifique se um ambiente Java está instalado (para Linux, verifique também as notas relacionadas às bibliotecas necessárias)apktool decode [apk file]
Resultado intermediário : arquivos de recursos,
AndroidManifest.xml
Resultado intermediário :
classes.dex
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=classes.dex
paradex2jar.bat
(ou entre<path_to>\dex2jar.bat classes.dex
em uma caixa do DOS; para uso no Linuxdex2jar.sh
)Resultado intermediário :
classes_dex2jar.jar
classes_dex2jar.jar
(pode ser opcional dependendo do descompilador usado)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 arquivo APK; finalmente, o código resultante provavelmente será ofuscado
fonte
apktool
retornosmali
? Como obter ojava
arquivo?Embora você possa descompilar seu
APK
arquivo, provavelmente ocorrerá um grande problema:não vai retornar o código que você escreveu. Em vez disso, ele retornará qualquer que seja o compilador incorporado, com variáveis com nomes aleatórios e funções com nomes aleatórios. Pode levar um tempo significativamente maior para tentar descompilar e restaurá-lo no código que você tinha, do que para começar de novo.
Infelizmente, coisas assim mataram muitos projetos.
Para o futuro, eu recomendo aprender um sistema de controle de versão, como CVS , SVN e git etc.
e como fazer backup.
fonte
Há também um novo aplicativo na Play Store com o qual é possível descompilar um apk (aplicativos do sistema também) e visualizar o código-fonte diretamente no seu smartphone. Ele salva os arquivos no seu cartão SD para que você também possa vê-lo no seu computador. Não requer raiz ou outra coisa.
Basta instalar e se divertir. Eu acho que essa é a maneira mais fácil de descompilar um aplicativo.
fonte
O apktool é a melhor coisa que você pode tentar. Eu salvei algum xml com ele, mas sinceramente não sei como ele funcionará com o código .java.
Eu recomendo que você tenha um repositório de código, mesmo que você seja o único codificador. Eu tenho usado o Project Locker para meus próprios projetos. Dá a você svn e git repos grátis.
fonte
Estes dois artigos descrevem como combinar o uso
apktool
edex2jar
obter umAPK
arquivo e criar um projeto Eclipse que pode compilá-lo e executá-lo.Basicamente você:
apktool
para obter os arquivos de recursos do apkdex2jar
para obter um arquivo jar que contém as classes em um formato que o Eclipse gostará.JDGui
para visualizar o código fonteJDGui
, cole-o em uma classe dentro do Eclipse e modifique-ofonte
O apktool funcionará. Você nem precisa conhecer o keystore para extrair o código-fonte (o que é um pouco assustador). A principal desvantagem é que a fonte é apresentada no formato Smali, em vez de Java. Outros arquivos, como o ícone e o main.xml, são perfeitamente bons e pode valer a pena recuperá-los. Por fim, você provavelmente precisará reescrever seu código Java do zero.
Você pode encontrar apktool aqui . Basta baixar o apktool e o assistente apropriado (para Windows, Linux ou Mac OS). Eu recomendo usar uma ferramenta como 7-zip para descompactá-los.
fonte
Há algumas maneiras de fazer isto:
Use o recurso "Perfil ou depuração APK" no Android Studio 3.0.
Ele permite que você abra e explore APKs no Android Studio. As classes são descompiladas em smali. Os recursos não são extraídos e coisas como "Ir para a definição", "Localizar todas as referências" e depuração não funcionam sem o código fonte (android studio 3.0 canary 9). Alguns recursos adicionais do smali podem funcionar com o smalidea .
Use jadx .
O Jadx descompila o código em um determinado APK para arquivos de origem java.
Use apktool .
O Apktool é uma ferramenta de linha de comando que extrai recursos e descompila o código no smali para um determinado apk. Você pode recompilar usando o apktool também. Aqui está um exemplo disso em ação:
fonte
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á o código fonte.
Link para referência:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
fonte
Vou mostrar outra maneira de descompilar os arquivos .apk .
Você pode seguir os 2 primeiros passos de " prankul garg ". Então você tem outras oportunidades:
Etapa 3':
Baixe o "JD-GUI" , fácil de encontrar. Abra o seu arquivo .jar em "jd-gui.exe". (Arquivo> Abrir arquivo> 'encontrou seu arquivo .jar '). Após esse procedimento, você pode salvar todos os recursos em um arquivo .zip .
Assim,
1º - você precisa renomear o arquivo .apk para .zip
2º - Você precisa decodificar o arquivo .dex (se desejar, decodifique o arquivo .apk para dex2jar , isso é possível)
3º - Você precisa decodificar o arquivo .jar com JD-GUI
fonte
Abaixo da ferramenta ONLINE :
http://www.javadecompilers.com/apk
ele faz TODAS com um clique: arquivos .java descompilados + recursos + xml (em um arquivo .zip) com muito bom descompilador (jadx retorna código java em locais / funções em que outras compilações retornam comentários dentro de uma função como "incapaz de descompilar" montador android / código da máquina)
fonte
Este site https://www.apkdecompilers.com/ fez isso automaticamente.
Tentei primeiro o site mencionado na resposta aceita, mas isso não funcionou para mim.
fonte
Eu, pessoalmente, recomendo Mostrar o Java Android App para obter o código-fonte. Você pode baixá-lo da play store ou aqui
fonte
Apktool para engenharia reversa de aplicativos Android fechados e binários de terceiros.
Ele pode decodificar recursos para a forma quase original e reconstruí-los após fazer algumas modificações.
Torna possível depurar o código smali passo a passo. Também facilita o trabalho com um aplicativo, devido à estrutura de arquivos do tipo projeto e à automação de algumas tarefas repetitivas, como a criação de apk, etc.
http://ibotpeaches.github.io/Apktool/
fonte
apktool é o caminho a percorrer. O serviço apktool on-line também existe: http://www.javadecompilers.com/apktool
Obviamente, existem algumas limitações devido à 'natureza online' do serviço: você pode extrair e pesquisar ativos e o arquivo de manifesto, mas é impossível recompilar o aplicativo no momento.
Ainda assim, essa é uma maneira fácil de 'abrir' o aplicativo Android.
fonte
Você pode experimentar o DexPatcher . Ele ainda se integra ao Android Studio. Ele usa Apktool e Dex2Jar internamente.
Você também pode usar essas ferramentas independentemente. O Apktool decompila o apk e extrai os arquivos .dex, que podem ser convertidos em jar usando o Dex2Jar. Jar pode ser descompilado usando JD-GUI . Você pode ver o código Java com a ajuda dessa ferramenta. Embora a similaridade do código descompilado com o código real não possa ser garantida. Existem algumas ferramentas avançadas de ofuscação de código disponíveis no mercado, que alteram o código para dificultar a descompilação / compreensão. por exemplo. Proguard
fonte
com base na sua condição, se o seu android apk:
Condition1: NÃO endurecer (por Tencent Legu / Qihoo 360 / ...)
Choice1: usando o serviço online
tal como:
usando www.javadecompilers.com
vamos para:
decodificar automaticamente de apk para java sourcecode
passos:
upload
arquivo apk + cliqueRun
+ aguarde um pouco + cliqueDownload
para obter o zip + descompacte ->sources/com/{yourCompanyName}/{yourProjectName}
é o seu código-fonte java esperado
Choice2: descompilar / crack sozinho
use a ferramenta relacionada para descompilar / crack você mesmo:
use
jadx
/jadx-gui
converterapk
parajava sourcecode
faça o download do jadx-0.9.0.zip e descompacte para get
bin/jadx
, depois:jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
eresources
sources/com/{yourCompanyName}/{yourProjectName}
é o seu esperadojava sourcecode
jadx-0.9.0/bin/jadx-gui
(Linuxjadx-gui.sh
/ Windowsjadx-gui.bat
)apk
arquivosave all
ousave as Gradle project
por exemplo:
Condition2: endurecer (por Tencent Legu / Qihoo 360 / ...)
o principal método de
3 steps
:apk/app to dex
dex to jar
jar to java src
explicação detalhada:
Passo 1:
apk/app to dex
use o
FDex2
arquivo de despejo / conexão da ferramenta ( / DumpDex) (um ou vários)dex
do aplicativo em execuçãopassos:
preparar o ambiente
root
android edFDex2
/ DumpDex no XPosed e habilitá-lodespejar
dex
do aplicativo em execuçãoexecute
FDex2
e clique no nome do seu apk para ativar mais tarde a captura / conexão do dex/data/data/com/yourCompanyName/yourProjectName
dex
arquivosPasso 2:
dex to jar
use o arquivo tool (
dex2jar
) convert (o específico, contendo a lógica do aplicativo)dex
emjar
arquivobaixe o dex2jar got dex-tools-2.1-SNAPSHOT.zip , descompacte got
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
esh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
por exemplo:
Etapa 3:
jar to java src
use uma das ferramentas:
converter
jar
parajava src
para do efeito de conversão jar para java src:
Jadx
>Procyon
>CRF
>>JD-GUI
por isso, recomende o uso:
Jadx
/jadx-gui
passos:
jadx-gui
dex
arquivoFile
->save all
por exemplo:
java src exportado:
Uma explicação mais detalhada pode ver o meu tutorial em chinês sobre o e- livro :
fonte
O Android studio oferece a você analisar qualquer arquivo apk.
1 - No menu Build, escolha a opção apk para analisar e selecione o arquivo apk. 2 - Isso resultará em você no arquivo classes.dex e em outros arquivos. 3 - Clique em classes.dex, que fornecerá a lista de pastas, pacotes, bibliotecas e arquivos. 4 - As configurações do estúdio e do Android instalam um plug-in chamado "Dex para Jar". 5 - clique em qualquer arquivo de atividade do seu projeto extraído e escolha dex para jar no menu de compilação.
Isso resultará em você o código real do seu arquivo java.
Felicidades.
fonte
A maneira mais simples é usar o Apk OneClick Decompiler. Este é um pacote de ferramentas para descompilar e desmontar APKs (pacotes para Android).
RECURSOS
REQUISITOS
O Java Runtime Environment (JRE) deve estar instalado.
Você pode baixá-lo neste link Apk OneClick Decompiler
Aproveite isso.
fonte
Eu encontrei o seguinte como o método mais simples:
fonte
Existe um aplicativo para isso e geralmente leva apenas alguns cliques e pronto. https://github.com/Nuvolect/DeepDive-Android
Depois disso, você pode procurar o código fonte, baixe-o para outro computador com o elFinder ou pesquise-o usando o Lucene.
Além da Jadx, possui decompiladores CFR e Fernflower.
fonte
Estou enlouquecendo há dias tentando fazer com que o dex2jar funcione em um laptop fedora 31 contra um apk que simplesmente não funcionava. Esse script python 3 fez o truque em minutos e a instalação do jd-gui tornou os arquivos de classe legíveis por humanos.
http://java-decompiler.github.io/
https://github.com/Storyyeller/enjarify
especificamente, aqui está o que eu corri:
Agora deve-se conseguir o seguinte para obter os arquivos de classe:
E para iniciar o jd-gui:
Em seguida, basta abrir seus arquivos de classe!
fonte
Desenvolvi um Tool - Code Analyzer, que roda em iPhone / iPad / Mac, para analisar arquivos Java / Android, https://decompile.io
fonte
Use esta ferramenta http://www.javadecompilers.com/
Mas, recentemente, uma nova onda de decompiladores entrou no mercado: Procyon, CFR, JD, Fernflower, Krakatau, Candle.
Aqui está uma lista de decompiladores apresentados neste site:
CFR - Gratuito, sem código-fonte disponível, http://www.benf.org/other/cfr/ Autor: Lee Benfield
Descompilador muito bem atualizado! O CFR é capaz de descompilar os recursos modernos do Java - módulos Java 9, Java 8 lambdas, comutadores Java 7 String etc. Ele até fará uma tentativa decente de transformar arquivos de classe de outros idiomas da JVM de volta em java!
JD - gratuito apenas para uso não comercial, http://jd.benow.ca/ Autor: Emmanuel Dupuy
Atualizado em 2015. Possui interface visual e plug-ins próprios para Eclipse e IntelliJ. Escrito em C ++, muito rápido. Suporta Java 5.
Procyon - fonte aberta, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Autor: Mike Strobel
Fernflower - código aberto, https://github.com/fesh0r/fernflower Autor: Egor Ushakov
Atualizado em 2015. Descompilador analítico Java muito promissor, agora se torna parte integrante do IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Suporta Java até a versão 6 (Anotações, genéricos, enumerações)
JAD - fornecido aqui apenas por razões históricas. Gratuito, sem código-fonte disponível, jad download mirror Autor: Pavel Kouznetsov
fonte