HomeBlog › Threats

Threats

What the Rokarolla banking trojan means for your app defenses

On 17 June 2026, Zimperium described a new Android banking trojan called Rokarolla. It targets 217 banking and cryptocurrency apps, ships with 137 remote commands, and steals login details, one-time passwords and on-screen data once it lands on a phone. It does not arrive through Google Play. It spreads from websites that pretend to be Chrome or TikTok, and the first thing the user installs pretends to be Google Play Protect.

The interesting part for an app team is not the malware itself. It is how little of the attack depends on a flaw in any single app. Rokarolla wins by getting one permission, drawing a screen on top of yours, and reading what the user types. This article walks through what it does, what your app can and cannot control, and the checks that actually reduce the damage. It is written for people who ship banking and fintech apps, not for a slide deck.

What Rokarolla actually does

Get the facts straight before drawing lessons from them. Here is what Zimperium reported.

  • Reach. Rokarolla carries phishing pages for 217 banking and crypto apps and can run 137 separate commands sent from its server.
  • Delivery. It is not on Google Play. Victims reach a site that looks like Chrome or TikTok, install a dropper that calls itself Google Play Protect, and that dropper pulls down the real malware as a second stage.
  • The one permission that matters. After install it asks for Android accessibility, along with notification and SMS access. Accessibility is the key that opens the rest.
  • Overlay phishing. When the user opens a targeted bank or wallet app, Rokarolla draws a fake login screen on top of the real one and collects whatever is typed into it.
  • Reading the screen. It logs keystrokes, captures and sends screenshots on a timer, pulls text off the screen and out of messaging apps, and changes the clipboard without the user touching it.
  • Beating one-time passwords. It reads SMS to lift bank OTPs, harvests lock screen credentials and contact lists, and blocks incoming calls and mutes audio so the victim is slower to notice.
  • Control. Each infected phone gets a unique ID and reports its Android version, locale, battery and storage. The server can move the malware to a different command domain at any time.

None of this is exotic. Every step uses a normal Android feature in a way it was not meant to be used.

The overlay playbook is not new

Rokarolla is the latest name on a list, not a new idea. The same chain showed up in Antidot, BeatBanker and a long line of Android banking trojans before it. Strip away the branding and the playbook has four moves.

  • Get installed away from the store. Side-loading from a fake update or a cloned app page skips the checks that the official store runs.
  • Get accessibility. One screen of social engineering convinces the user to grant it. After that the malware can see the screen and act on it.
  • Cover the real app. A screen drawn on top of yours turns a login form into a collection form, and the user has no easy way to tell the difference.
  • Read everything else. Screen text, notifications and SMS give up passwords, OTPs and account details without the attacker ever touching your server.

Because the pattern is stable, the defenses are stable too. You are not chasing one trojan. You are closing the moves that all of them share.

What your app can and cannot control

Be honest about the limits. Your app cannot stop a user from installing a malicious APK, and it cannot switch off the accessibility service of another app. Those live outside your process. If you build the defense around blocking the malware, you will lose.

What you can do is make your own screens a poor target and refuse to do high-value work in a bad environment. Two ideas carry most of the weight:

  • Make sensitive screens hard to read and hard to overlay. The login, payment, OTP entry and account recovery screens are the ones worth protecting. Treat the rest as noise.
  • Check the ground before you act. Before moving money or showing a balance, confirm the app and device have not been tampered with, and stop if they have.

Neither one is perfect on its own. Together they remove most of what a trojan like Rokarolla is after.

The controls to verify in your build

These are the concrete settings and calls to confirm in a release build. None of them is large, and most are a few lines each.

  • Secure window flag on sensitive screens. Set the secure-window flag on login, payment, OTP and recovery screens. It blocks screenshots and screen recording of that window and keeps it out of the recents thumbnail, which removes one of the malware data sources.
  • Touch filtering on sensitive controls. Turn on touch filtering for buttons that confirm a payment or a login. Android then drops a tap that passes through another app overlay, which breaks the tapjacking step.
  • Notice when the window is covered. Watch for obscured touch events on a sensitive screen and pause the flow when the window is not on top. A covered login form should not accept input.
  • Keep one-time passwords out of reach. Do not show the full code in a notification preview, do not copy it to the clipboard, and prefer a device-bound or in-app second factor over SMS. Treat an SMS code as readable by a phone that has granted the wrong permissions.
  • Check integrity before money moves. Use the platform attestation API to confirm the app binary and device state before a high-value action. A repackaged or instrumented app should be refused, not trusted.
  • Give the accessibility tree less to read. Mark password and token fields so they are not announced, and keep secrets out of views that a service can read. You cannot block accessibility, but you can give it less to take.
  • Clean up the clipboard. Never leave a token, card number or password on the clipboard, and clear it after use.
  • Make the real app easy to find. A clear store listing and correct signing give users a way to tell your app from a clone, which is the first step the malware relies on.

How to test for these gaps

Shipping the controls is half the job. The other half is checking that they are actually there, on every screen that needs them, in every release. A review usually runs on two levels.

Static checks read the build without running it. They confirm the secure-window flag is set on the right screens, that touch filtering is on for sensitive controls, that exported components and debug flags are sane, and that the integrity API is really called before high-value actions rather than declared and ignored. They also flag secrets and weak crypto baked into the binary, which a trojan would happily reuse.

Dynamic checks run the app and try the attack. Draw a test overlay over the login screen and see whether a tap still lands. Take a screenshot on the OTP screen and confirm it comes back blank. Read the accessibility tree and see what the sensitive fields give up. Put the app on a rooted or instrumented device and confirm the high-value path refuses to run. This is the part that catches a control that exists in the code but does not hold up in practice.

Both levels map back to the OWASP MASVS requirements for platform interaction, authentication and resilience, which gives the result a shape an auditor can follow. A scanner built for mobile apps, Mobexa included, runs these as standard categories so the gaps come back as findings with a fix attached rather than as a vague worry.

The takeaway

The name on the trojan will change again. Rokarolla follows the same path as the ones before it, and the next one will too: install off-store, win accessibility, draw an overlay, read the screen. The controls that blunt that path do not change with the name.

Set the secure-window flag, filter touches, keep OTPs off the clipboard and out of notifications, check integrity before money moves, and give the accessibility tree less to read. Then test that each one holds, on the screens that matter, every time you ship. That is the work that keeps a banking app boring to attack.

Common questions

Was Rokarolla found on Google Play?
No. Zimperium reported that it spreads from websites posing as Chrome or TikTok, and the first install poses as Google Play Protect before pulling down the real malware. It was not on the official store.
Can my app block a screen overlay drawn by another app?
You cannot remove an overlay drawn by another app, but you can drop taps that pass through it with touch filtering, hide the screen contents with the secure-window flag, and pause a sensitive flow when the window is not on top.
Does the secure-window flag stop overlay attacks?
It stops screenshots and screen recording of that window and keeps it out of the recents thumbnail, which removes part of the data theft. It does not remove the overlay itself, so pair it with touch filtering and an integrity check.
How do I protect one-time passwords from this kind of malware?
Keep the full code out of notification previews, do not copy it to the clipboard, and prefer a device-bound or in-app second factor over SMS. Treat an SMS code as readable by a phone that has granted the wrong permissions.
What is accessibility service abuse?
A malicious app asks the user to turn on Android accessibility, then uses it to read screen text, log input and act on behalf of the user. Your app cannot block it, but it can expose less on sensitive screens and refuse high-value actions on a suspicious device.
How does this map to MASVS and the OWASP Mobile Top 10?
Screen protection and tapjacking map to platform interaction, one-time password and credential handling map to authentication, and integrity checks map to resilience. On the OWASP Mobile Top 10 it lines up with insecure communication, insufficient authentication, and weak platform and supply chain defenses.

See it on one of your own apps

Mobexa tests the exact Android or iOS build you ship and maps every finding to the OWASP Mobile Top 10 and MASVS.

Start Free Trial