# Android APK Checklist

If you want to **know** about my **latest modifications**/**additions** or you have **any suggestion for HackTricks or PEASS**, **join the** [**💬**](https://emojipedia.org/speech-balloon/) [**PEASS & HackTricks telegram group here**](https://t.me/peass), or **follow me on Twitter** [🐦](https://emojipedia.org/bird/)[**@carlospolopm**](https://twitter.com/carlospolopm)**.**\
If you want to **share some tricks with the community** you can also submit **pull requests** to **\*\*\[**<https://github.com/carlospolop/hacktricks**](https://github.com/carlospolop/hacktricks>) **\*\*that will be reflected in this book.**\
**Don't forget to** give ⭐ on the github\*\* to motivate me to continue developing this book.

## [Learn Android fundamentals](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#2-android-application-fundamentals)

* [ ] [Basics](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#fundamentals-review)
* [ ] [Dalvik & Smali](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#dalvik--smali)
* [ ] [Entry points](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#application-entry-points)
  * [ ] [Activities](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#launcher-activity)
  * [ ] [URL Schemes](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#url-schemes)
  * [ ] [Content Providers](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#services)
  * [ ] [Services](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#services-1)
  * [ ] [Broadcast Receivers](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#broadcast-receivers)
  * [ ] [Intents](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#intents)
  * [ ] [Intent Filter](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#intent-filter)
* [ ] [Other components](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#other-app-components)
* [ ] [How to use ADB](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#adb-android-debug-bridge)
* [ ] [How to modify Smali](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#smali)

## [Static Analysis](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#static-analysis)

* [ ] Check for the use of [obfuscation](/githubimport/mobile-apps-pentesting/android-checklist.md#some-obfuscation-deobfuscation-information), checks for noting if the mobile was rooted, if an emulator is being used and anti-tampering checks. [Read this for more info](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#other-checks).
* [ ] Sensitive applications (like bank apps) should check if the mobile is rooted and should actuate in consequence.
* [ ] Search for [interesting strings](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#looking-for-interesting-info) (passwords, URLs, API, encryption, backdoors, tokens, Bluetooth uuids...).
  * [ ] Special attention to [firebase ](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#firebase)APIs.
* [ ] [Read the manifest:](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#basic-understanding-of-the-application-manifest-xml)
  * [ ] Check if the application is in debug mode and try to "exploit" it
  * [ ] Check if the APK allows backups
  * [ ] Exported Activities
  * [ ] Content Providers
  * [ ] Exposed services
  * [ ] Broadcast Receivers
  * [ ] URL Schemes
* [ ] Is the application s[aving data insecurely internally or externally](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#insecure-data-storage)?
* [ ] Is there any [password hard coded or saved in disk](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#poorkeymanagementprocesses)? Is the app [using insecurely crypto algorithms](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#useofinsecureandordeprecatedalgorithms)?
* [ ] All the libraries compiled using the PIE flag?
* [ ] Don't forget that there is a bunch of[ static Android Analyzers](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#automatic-analysis) that can help you a lot during this phase.

## [Dynamic Analysis](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#dynamic-analysis)

* [ ] Prepare the environment ([online](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#online-dynamic-analysis), [local VM or physical](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#local-dynamic-analysis))
* [ ] Is there any [unintended data leakage](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#unintended-data-leakage) (logging, copy/paste, crash logs)?
* [ ] [Confidential information being saved in SQLite dbs](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#sqlite-dbs)?
* [ ] [Exploitable exposed Activities](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#exploiting-exported-activities-authorisation-bypass)?
* [ ] [Exploitable Content Providers](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
* [ ] [Exploitable exposed Services](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#exploiting-services)?
* [ ] [Exploitable Broadcast Receivers](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#exploiting-broadcast-receivers)?
* [ ] Is the application [transmitting information in clear text/using weak algorithms](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#insufficient-transport-layer-protection)? is a MitM possible?
* [ ] [Inspect HTTP/HTTPS traffic](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#inspecting-http-traffic)
  * [ ] This one is really important, because if you can capture the HTTP traffic you can search for common Web vulnerabilities (Hacktricks has a lot of information about Web vulns).
* [ ] Check for possible [Android Client Side Injections](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#android-client-side-injections-and-others) (probably some static code analysis will help here)
* [ ] [Frida](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#frida): Just Frida, use it to obtain interesting dynamic data from the application (maybe some passwords...)

## Some obfuscation/Deobfuscation information

* [ ] [Read here](/githubimport/mobile-apps-pentesting/android-app-pentesting.md#obfuscating-deobfuscating-code)

If you want to **know** about my **latest modifications**/**additions** or you have **any suggestion for HackTricks or PEASS**, **join the** [**💬**](https://emojipedia.org/speech-balloon/) [**PEASS & HackTricks telegram group here**](https://t.me/peass), or **follow me on Twitter** [🐦](https://emojipedia.org/bird/)[**@carlospolopm**](https://twitter.com/carlospolopm)**.**\
If you want to **share some tricks with the community** you can also submit **pull requests** to **\*\*\[**<https://github.com/carlospolop/hacktricks**](https://github.com/carlospolop/hacktricks>) **\*\*that will be reflected in this book.**\
**Don't forget to** give ⭐ on the github\*\* to motivate me to continue developing this book.

![](/files/-MaoHV-bFJR-K2MoUNkN)

​[**Buy me a coffee here**](https://www.buymeacoffee.com/carlospolop)\*\*\*\*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chinnidiwakar.gitbook.io/githubimport/mobile-apps-pentesting/android-checklist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
