[Hacking][slideshow]

O que é Smali / Baksmali

A base da engenharia reversa em um aplicativo de Android é o Smali, muitos não conhecem ou não sabem da importância dele para o Android.

Todas os mods (modificações de apps) passam por isso.

Veja mais sobre Smali e Baksmali nesse post


Descrição:

Smali / baksmali é um compilador / descompilador para o formato de dex usado pela Dalvik, maquina virtual do Android. A sintaxe é vagamente baseado em sintaxe de Jasmin / dededexer, e suporta todas as funcionalidades do formato dex (anotações, debug info, linha de informações, etc.)
Os nomes "smali" e "baksmali" são equivalentes de "assembler" e "disassembler", respectivamente.

Quando descompilado, o arquivo dex volta a ser um código que pode ser lido e interpretado por um humano. mas não é o código fonte java, ele se torna um código que é chamado de smali code. Como após a conversão, os arquivos ficam com a extensão .smali, isso confunde um pouco, pois o programa, o código e os arquivos são smalis.

Recomendo altamente que você leia o artigo 'O que é Odex/Deodex' para entender o básico sobre dex


Exemplo de dex convertido para smali code

Para fazer uma edição em um app já existente, como o Whatsapp, por exemplo, era comum que o modder fizesse o mod (modificação) em java, compile seu código para a Dalvik e depois descompile ele em smali. Depois desse passo o smali ela conectado ao smali do mod.



Hacks de dinheiro infinito em jogos, mods de itens e muitas outras funções/adições são feitos com a edição do smali. Vou ensinar algumas dessas técnicas em outro post.

Como já existe descompilador de Java, é mais fácil de programar direto em código-fonte, então postarei só ele. ¯ \ _ (ツ) _ / ¯


PS. Já é possível converter um arquivo dex novamente para classes de java.

Métodos para descompilar para JAVA:
Online: Site www.javadecompilers.com/apk
Programa grátis: dex2jar e o tutorial pode ser achado aqui
Programa pago: JEB Decompiler

Esse post foi criado apenas para explicar o que é smali, farei outros posts com edição e criação de smali code. Como o que fiz com Edify Code

Post original: Android SuperUser - Seja um super usuário Android

*Cópia permitida apenas citando a fonte

Dúvidas nos comentários