Static Analysis
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!-- The package name, which is the unique identifier for the app in the Android ecosystem. -->
package="com.example.app"
<!-- The version of the Android SDK used to compile the app. -->
android:compileSdkVersion="34"
<!-- The codename for the compile SDK version (e.g., "14" for Android 14). -->
android:compileSdkVersionCodename="14"
<!-- The internal version code of the platform used to build the app. -->
platformBuildVersionCode="34"
<!-- The version name of the platform used to build the app, corresponding to the codename of the Android version. -->
platformBuildVersionName="14">
<!-- Permissions required by the app -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Declaring minimum and target SDK versions -->
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="34" />
<!-- Declaring features required by the app -->
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<!-- Main application block -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
<!-- Main launcher activity -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Another activity with an intent filter -->
<activity android:name=".DeepLinkActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="www.example.com" android:pathPrefix="/deeplink" />
</intent-filter>
</activity>
<!-- Service example -->
<service android:name=".MyService"
android:enabled="true"
android:exported="false">
</service>
<!-- Broadcast receiver example -->
<receiver android:name=".MyBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!-- Content provider example -->
<provider
android:name=".MyContentProvider"
android:authorities="com.example.app.provider"
android:enabled="true"
android:exported="true" />
<!-- Meta-data example -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="your_google_maps_api_key_here" />
</application>
</manifest>aapt utility
Getting the APK / APKS directly from the Google Play Store
Decompiling APK
Structure of an APK package when you unzip it
File/Folder
Description
Differences between Unzip and Decompiled APKs
Useful ADB commands
DEX Files
Using Nuclei to automate the proccess of finding endpoints and hidden information
Extract Activities exported as "True"
Finding Secrets in APKs with Trufflehog
MobSF (Mobile Security Security Framework)
Last updated
