Skip to content
Miłosz Gaczkowski edited this page Nov 16, 2023 · 34 revisions

drozer (formerly Mercury) is the leading security testing framework for Android.

drozer allows you to search for security vulnerabilities in apps and devices by assuming the role of an app and interacting with the Dalvik VM, other apps’ IPC endpoints and the underlying OS.

drozer provides tools to help you use, share and understand public Android exploits. It helps you to deploy a drozer Agent to a device through exploitation or social engineering. Using weasel (WithSecure’s advanced exploitation payload) drozer is able to maximise the permissions available to it by installing a full agent, injecting a limited agent into a running process, or connecting a reverse shell to act as a Remote Access Tool (RAT).

drozer is open source software, maintained by WithSecure, and can be downloaded from: https://labs.withsecure.com/tools/drozer/

This wiki site is home to the Developers’ Documentation, for those who wish to write drozer modules or extend the drozer core. User documentation for drozer is available at on the WithSecure Labs website and in the FAQ.

It is highly recommended that the latest version of the drozer Agent is used when developing new modules or making changes to the core code.

drozer Developers

drozer is designed to allow new functionality to be added through stand-alone modules. If you want to build new checks, exploits or tools you should start with a module. If what you want to do is simply not possible through the module interface, you may need to extend the core.

The source code for drozer is distributed in a number of GitHub projects. Projects that you would encounter when developing for the assessment side of drozer are the following:

  • drozer: contains the Console and Server;
  • drozer-agent: contains the Android Agent
  • drozer-modules: the central drozer module repository where new modules can be added and made accessible to all other users
  • drozer-common: contains components that are shared between the Agent and Console.

The drozer-common module is included in the other repositories as a Git Submodule. After cloning for the first time, you will need to run the following command to fetch the additional source:

git submodule init && git submodule update

Projects that include the exploitation functionality within drozer are the following:

  • Rogue agent: this is the malicious version of the drozer agent that can be installed on devices for use as a Remote Administration Tool (RAT)
  • JAR agent: contains the drozer rogue agent in a JAR format
  • Weasel: contains WithSecure’s multi-purpose payload that can be used to load rogue agents from within an exploit

There are a number of other related supporting library projects that can be found in the WithSecureLabs Labs GitHub: https://github.com/WithSecureLabs

If you are interested in writing a module, the most important pages to read would be:

We also suggest getting a better understanding of how drozer works. These guides explain how the drozer system is architected, and how it works together:

Before you contribute, please read:

If you have any questions, you can:

  • Open an issue – this is the preferred method of communication