Obter código-fonte de um arquivo .apk? [fechadas]

21

Tendo um arquivo .apk, há alguma maneira de obter seu código fonte?

eldarerathis
fonte
7
Antes disso, você verificou se o pacote é de código aberto?
3--12
Um .apk é simplesmente um arquivo .zip. Infelizmente, qualquer compilação de aplicativo para 'release' provavelmente será protegida pelo ProGuard .
Daniel López
@MatthewRead O Op pergunta se ele poderia obter o código de uma API, e eu respondi como esse fenômeno é chamado e maneiras de pelo menos impedir a criação de um aplicativo semelhante. Ele não diz como impedir a obtenção do código. Então, sim, ele responde à pergunta.
Ser humano

Respostas:

11

Se você tiver sorte e seu .apkarquivo não estiver protegido por Proguard ou analógico, use a ferramenta APK . É uma ferramenta para aplicativos Android binários fechados, fechados e de engenharia reversa.

HitOdessit
fonte
O Apktool gera apenas Smali-Code, não código Java - essa é uma grande diferença.
Robert
2

De um dos wiki da comunidade por Parnkul Garg no SO :


Procedimento para decodificar arquivos .apk, método passo a passo:

Passo 1:

  1. Crie uma nova pasta e copie sobre o arquivo .apk que deseja decodificar.

  2. 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:

  1. Agora extraia esse arquivo .zip na mesma pasta (ou NOVA PASTA).

  2. Faça o download do dex2jar e extraia-o para a mesma pasta (ou NOVA PASTA).

  3. Mova o arquivo classes.dex para a pasta dex2jar.

  4. Agora abra o prompt de comando e altere o diretório para essa pasta (ou NOVA PASTA). Em seguida, escreva d2j-dex2jar classes.dexe pressione enter. Agora você tem o arquivo classes.dex.dex2jar na mesma pasta.

  5. 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.

  6. 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

  1. Coloque no arquivo .apk que você deseja decodificar

  2. 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

  3. Baixe framework-res.apk e coloque-o na mesma pasta (nem todos os arquivos apk precisam deste arquivo, mas não dói)

  4. Abra uma janela de comando

  5. Navegue para o diretório raiz do APKtool e digite o seguinte comando: apktool if framework-res.apk

  6. apktool 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 é um passo apenas copiar o conteúdo de ambas as pastas (nesse caso, as duas novas pastas) para a única

e aproveite o código fonte ...

user3226511
fonte