Android › Module 2 › Lesson 5
Lab — APK Permission Analyzer
Practice reading permission lists and deciding install-or-reject like a defender
Opening
Analyst mode: score fictional permission profiles. You never download an APK. You write Install, Deny extras, or Reject.
Lessons 1–4 gave you a job-match test (flashlight ≠ SMS), a privacy default (while-using, not always), an install checklist (typed URL, Play Protect, unknown sources off), and a hard no on rooting the daily driver. This lab is paper. Four teaching-fake app profiles — not files, not Play listings you hunt, not live malware — sit in the code blocks below. You will decide Install, Install with extras denied, or Reject, with the red grants that drove the call. Notes go only to $HOME/cyberlium-lab/apk-perm-lab.txt with chmod 600. That file can hold verdicts and permission names. It must not contain live OTPs, real bank package names from your phone, hashes of samples you downloaded, or instructions to infect a device. You will not sideload these profiles. You will not reverse APKs. You will not enable unknown sources "to compare." Scope is your eyes on fiction, then a locked notes file. Next lesson is the module quiz.
1. What you are scoring: job-match, radioactive grants, then a three-way verdict
The rubric is a mechanism, not a slogan. Ask: does each listed capability exist so the stated job can run, or is it an account-takeover key from lesson 1? Radioactive for toys and fake utilities: Accessibility (read UI, tap for you), SMS (OTP inbox), notification access (2FA banners), device admin (hard to remove), draw-over / appear on top (fake pad on the real app). Yellow: Contacts, mic, precise-always location without a sentence that justifies them. Green: Camera for a camera, location while using for maps you would actually navigate, notifications that are not a listener. Verdicts: REJECT means do not install — the bundle is malware-shaped even if the icon is a battery or a bank. DENY EXTRAS means the core job can be legitimate if you reach it via a typed official listing (lesson 3) and you refuse the unmatched prompts at first run. INSTALL (reasonable) means the listed grants match the job; you still keep Play Protect on and you still do not sideload a "copy" of this fiction. Likely-legit on paper is not a license to search the store for a lookalike and tap Install as a lab step.
Write every profile: verdict, red/yellow grants, one-line job-match, safe action (ignore / official typed listing only / uninstall if you already had a cousin). chmod 600 so a shared Windows account does not read the lab. If mkdir or chmod fails natively, use WSL, Git Bash, or macOS/Linux as earlier topics did. Empty files fail. Pasting a real sideloaded APK's dump, a live banking-trojan sample, or someone else's app list into a public gist also fails ethics: the lab is the four profiles below, not a malware museum and not a scan of a partner's phone.
2. Wrong vs right: detonating APKs vs paper scores in apk-perm-lab.txt mode 600
Worked failure — turning a permission lab into a download. Evidence is written verdicts, not an installed sample.
Wrong
Search APK mirrors for "Ultra Battery Saver Pro" and sideload it to confirm Accessibility. Disassemble a live trojan. Enable unknown sources on Chrome "just for the lab." Root so you can dump other apps' permissions. Hide Magisk. Bypass Play Protect. Store real OTPs or a coworker's package list in the notes file. chmod 644 on a shared PC. Score by gut without naming the radioactive grants. This course forbids all of that.
Right
Read Profiles A–D in the code blocks. For each: INSTALL, DENY EXTRAS, or REJECT, with the grants that drove it (Accessibility, SMS, overlay, fake-bank sideload, while-using maps, flashlight+contacts). Write them to $HOME/cyberlium-lab/apk-perm-lab.txt and chmod 600. Never download the fictions. Never install them. Next lesson is Quiz — Android Safety.
3. Hands-on: four fakes, then apk-perm-lab.txt — no Play search, no files
Work top to bottom. Profile A (battery saver) should REJECT if you apply lesson 1: Accessibility plus SMS plus admin plus overlay is a takeover bundle, not a tuner. Profile B (sideloaded "bank") should REJECT: fake finance plus overlay plus Accessibility is Module 1's trojan costume. Profile C (maps) should INSTALL reasonable with while-using location — still deny Contacts if asked, still typed official listing in real life, still no sideload of this fiction. Profile D (flashlight + contacts) should REJECT or DENY EXTRAS with contacts refused; a torch has no address-book job. Fill the notes file. Do not add live targets because the lab felt short.
Command guide
Profile A — fictional battery saver (inspect only, never install)
PROFILE A — FICTIONAL. Do NOT search, download, or sideload.
Command — copy this
Name: Ultra Battery Saver Pro Claim: "Extends battery 3x. Must enable all services or it will not work." Source in the story: in-app tutorial + blog APK (not a typed official OEM tool) Permissions listed: - Accessibility (read screen / click for you) - Device admin - SMS (read) - Contacts - Draw over other apps / Appear on top - Notification access
Expected defender notes (write your own; do not copy blindly): verdict: REJECT red: Accessibility, SMS, notification access, device admin, overlay job_match: saver/tuner does not need OTP inbox or UI control safe_action: do not install; if a cousin exists, uninstall; Play Protect stays on NEVER: sideload a "battery saver" to verify this list
Command guide
Profile B — fictional fake bank (inspect only, never install)
PROFILE B — FICTIONAL. Do NOT visit a lookalike listing or sideload.
Command — copy this
Name: "Example National Bank — Secure Plus" Claim: "Update required. Install this APK or your account locks tonight." Source in the story: SMS link + sideload (not the hostname you already type) Permissions listed: - Accessibility - Draw over other apps - SMS - Camera - Device admin
Expected defender notes: verdict: REJECT red: sideload + timer + Accessibility + overlay + SMS + admin job_match: a real bank app is reached via typed official URL (lesson 3), not a surprise APK; overlay+Accessibility is overlay phishing safe_action: ignore APK; open the bank app you already installed from the official badge, or type the bank site; never "compare" APKs NEVER: download a banking-trojan sample to reverse
Command guide
Profile C — fictional maps (score it; still no surprise sideload)
PROFILE C — FICTIONAL. Still do not hunt a clone listing as a lab step.
Command — copy this
Name: City Transit Maps Claim: Offline bus maps for a city you actually visit. Source in the story: official listing reached from a URL you typed Permissions listed: - Approximate location — while using the app - Photos/files for saved offline map packs (picker / app-specific, not All files) - Notifications (alerts, NOT notification-listener access)
Scoring hint: grants match navigation + offline files + ordinary alerts. If Contacts or Accessibility appeared, those would flip toward DENY/REJECT. verdict you write: INSTALL (reasonable) — still Deny Contacts if later asked safe_action: only via typed official listing; Play Protect on; no unknown sources Either way: this lab does not require installing anything.
Command guide
Profile D — fictional flashlight with contacts (inspect only)
PROFILE D — FICTIONAL. Do NOT install a "torch" from a chat.
Command — copy this
Name: Super Bright Flashlight Claim: Torch using the camera LED. Source in the story: store search lookalike (you did NOT type a vendor URL) Permissions listed: - Camera (or flashlight API) - Contacts (read) - SMS (optional prompt on first run in the story) - Internet
Expected defender notes: verdict: REJECT (or DENY EXTRAS only if you already trust a first-party torch AND you refuse Contacts+SMS — a random lookalike still REJECT) red/yellow: Contacts and SMS fail job-match (lesson 1: flashlight ≠ SMS) lookalike source fails lesson 3 typed-URL check safe_action: use the phone's built-in torch / official OEM tool; no chat APK NEVER: grant Contacts "to see if the light still works"
Command guide
Write scores to apk-perm-lab.txt and chmod 600
Command — copy this
mkdir -p "$HOME/cyberlium-lab" NOTES="$HOME/cyberlium-lab/apk-perm-lab.txt"
Command — copy this
{
echo "date: $(date -Iseconds 2>/dev/null || date)"
echo "ethics: fictional profiles only — did not download/sideload/reverse APKs"
echo "ethics: no Magisk hide, no Play Protect bypass, no other people's phones"
echo ""
echo "=== PROFILE A (battery saver) ==="
echo "verdict: INSTALL / DENY_EXTRAS / REJECT"
echo "red_grants:"
echo "job_match_one_line:"
echo "safe_action:"
echo ""
echo "=== PROFILE B (fake bank APK) ==="
echo "verdict: INSTALL / DENY_EXTRAS / REJECT"
echo "red_grants:"
echo "job_match_one_line:"
echo "safe_action:"
echo ""
echo "=== PROFILE C (transit maps) ==="
echo "verdict: INSTALL / DENY_EXTRAS / REJECT"
echo "matched_grants:"
echo "would_deny_if_asked:"
echo "safe_action:"
echo ""
echo "=== PROFILE D (flashlight + contacts) ==="
echo "verdict: INSTALL / DENY_EXTRAS / REJECT"
echo "failed_job_match:"
echo "safe_action:"
echo ""
echo "root_note: uid 0 would make a missed REJECT much worse — daily driver stays stock"
echo "protect_note: Play Protect on; unknown sources off; never tested via random APK"
} > "$NOTES"Command — copy this
chmod 600 "$NOTES"
Windows without chmod: WSL/Git Bash, or restrict the file in your profile.
NEVER: curl/browser/sideload any of these names NEVER: dump a live malware APK into NOTES NEVER: enable unknown sources "to complete the lab"
Mission: four verdicts in apk-perm-lab.txt (mode 600)
Score Profiles A, B, C, and D as INSTALL, DENY EXTRAS, or REJECT, with the radioactive or unmatched grants written out (A/B reject-shaped; C while-using maps can be reasonable; D flashlight+contacts fails job-match). Save to $HOME/cyberlium-lab/apk-perm-lab.txt and chmod 600. Do not download or install any APK for this lab. Do not reverse malware. Do not audit someone else's phone.
Stuck? Ask Cyberlium AI Mentor
If A vs C still feels like "both want permissions so both are dangerous," ask for a hint — not a sample file. Try: "Hint only: why is Accessibility+SMS+admin+overlay a REJECT for a battery saver while approximate location while using can be INSTALL for maps — and why must I still not sideload either profile?" You still fill the file.
You practiced the only permission analysis that stays ethical: read a listed grant, match it to a job, write Install / Deny extras / Reject, lock the notes. A and B are takeover costumes. C is a matched maps profile, still not a hunt-and-install. D is a flashlight that wants an address book — lesson 1 in one line. Root would have made a missed REJECT worse; you did not root. Next — Quiz — Android Safety — ten APPLY items on permissions, privacy, installs, and rooting, then Module 3 opens with Updates, Lock Screen & Encryption.
Knowledge Check
APPLY: Profile A lists Accessibility, device admin, SMS, contacts, overlay, and notification access for a "battery saver." Correct lab score?
Multiple choice
Knowledge Check
APPLY: Profile C asks approximate location while using plus ordinary notifications. Profile D asks Camera plus Contacts and SMS. Pair of verdicts?
Multiple choice
Knowledge Check
APPLY: True or False: chmod 600 on $HOME/cyberlium-lab/apk-perm-lab.txt is appropriate because the file is your scoring notes and must not become a shared dump of live APKs, OTPs, or someone else's app list.
True or False