Compromise Application Executable

Adversaries may modify applications installed on a device to establish persistent access to a victim. These malicious modifications can be used to make legitimate applications carry out adversary tasks when these applications are in use.

There are multiple ways an adversary can inject malicious code into applications. One method is by taking advantages of device vulnerabilities, the most well-known being Janus, an Android vulnerability that allows adversaries to add extra bytes to APK (application) and DEX (executable) files without affecting the file's signature. By being able to add arbitrary bytes to valid applications, attackers can seamlessly inject code into genuine executables without the user's knowledge.[1]

Adversaries may also rebuild applications to include malicious modifications. This can be achieved by decompiling the genuine application, merging it with the malicious code, and recompiling it.[2]

Adversaries may also take action to conceal modifications to application executables and bypass user consent. These actions include altering modifications to appear as an update or exploiting vulnerabilities that allow activities of the malicious application to run inside a system application.[2]

ID: T1577
Sub-techniques:  No sub-techniques
Tactic Type: Post-Adversary Device Access
Tactic: Persistence
Platforms: Android
Version: 1.0
Created: 07 May 2020
Last Modified: 24 October 2022

Procedure Examples

ID Name Description
S0440 Agent Smith

Agent Smith can inject fraudulent ad modules into existing applications on a device.[2]


BOULDSPY can inject malicious packages into applications already existing on an infected device.[3]

S0311 YiSpecter

YiSpecter has replaced device apps with ones it has downloaded.[4]


ID Mitigation Description
M1001 Security Updates

Security updates frequently contain patches to vulnerabilities.

M1006 Use Recent OS Version

Many vulnerabilities related to injecting code into existing applications have been patched in previous Android releases.


This behavior is seamless to the user and is typically undetectable.