Aprenda e pratique AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
Aprofunde sua experiência em **Mobile Security** com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação:
{% embed url="https://academy.8ksec.io/" %}
Às vezes, é interessante modificar o código do aplicativo para acessar informações ocultas para você (talvez senhas ou flags bem ofuscadas). Então, pode ser interessante decompilar o apk, modificar o código e recompilá-lo.
**Referência de Opcodes:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
## Fast Way
Usando **Visual Studio Code** e a extensão [APKLab](https://github.com/APKLab/APKLab), você pode **decompilar automaticamente**, modificar, **recompilar**, assinar e instalar o aplicativo sem executar nenhum comando.
Outro **script** que facilita muito essa tarefa é [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
## Decompile the APK
Usando APKTool você pode acessar o **código smali e recursos**:
```bash
apktool d APP.apk
```
Se o **apktool** der algum erro, tente [instalar a **versão mais recente**](https://ibotpeaches.github.io/Apktool/install/)
Alguns **arquivos interessantes que você deve olhar são**:
* _res/values/strings.xml_ (e todos os xmls dentro de res/values/\*)
* _AndroidManifest.xml_
* Qualquer arquivo com extensão _.sqlite_ ou _.db_
Se o `apktool` tiver **problemas para decodificar a aplicação**, dê uma olhada em [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) ou tente usar o argumento **`-r`** (Não decodificar recursos). Então, se o problema estava em um recurso e não no código-fonte, você não terá o problema (você também não irá descompilar os recursos).
Você pode **mudar****instruções**, mudar o **valor** de algumas variáveis ou **adicionar** novas instruções. Eu mudo o código Smali usando [**VS Code**](https://code.visualstudio.com), você então instala a **extensão smalise** e o editor lhe dirá se alguma **instrução está incorreta**.\
**zipalign** é uma ferramenta de alinhamento de arquivos que fornece uma otimização importante para arquivos de aplicação Android (APK). [Mais informações aqui](https://developer.android.com/studio/command-line/zipalign).
Se você **preferir** usar [**apksigner**](https://developer.android.com/studio/command-line/) em vez de jarsigner, **você deve assinar o apk** após aplicar **a otimização com** zipalign. MAS NOTE QUE VOCÊ SÓ PRECISA **ASSINAR A APLICAÇÃO UMA VEZ** COM jarsigner (antes do zipalign) OU COM apksigner (depois do zipalign).
* Se você for usar variáveis declaradas dentro da função (declaradas v0,v1,v2...) coloque essas linhas entre o _.local \<número>_ e as declarações das variáveis (_const v0, 0x1_)
* Se você quiser colocar o código de logging no meio do código de uma função:
* Adicione 2 ao número de variáveis declaradas: Ex: de _.locals 10_ para _.locals 12_
* As novas variáveis devem ser os próximos números das variáveis já declaradas (neste exemplo devem ser _v10_ e _v11_, lembre-se que começa em v0).
* Altere o código da função de logging e use _v10_ e _v11_ em vez de _v5_ e _v1_.
### Toasting
Lembre-se de adicionar 3 ao número de _.locals_ no início da função.
Este código está preparado para ser inserido no **meio de uma função** (**mude** o número das **variáveis** conforme necessário). Ele irá pegar o **valor de this.o**, **transformá-lo** em **String** e então **fazer** um **toast** com seu valor.
Aprofunde sua experiência em **Segurança Móvel** com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autoguiados e obtenha certificação:
Aprenda e pratique Hacking AWS:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).