dynamic-verify

Verify static Android pentest findings on an emulator with Burp interception and Frida pinning bypass.

48|27|Updated Jul 30, 2026
One-click install
npx skills add https://github.com/abisheikM1/Tribunal --skill dynamic-verify-abisheikm1
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: dynamic-verify
Source: https://github.com/abisheikM1/Tribunal/tree/main/skills/dynamic-verify
Command: npx skills add https://github.com/abisheikM1/Tribunal --skill dynamic-verify-abisheikm1

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Static code review of an Android APK produces candidate findings, but none of them are trustworthy until they are reproduced against the running app. This Skill takes the report.json and threat_model.json produced by the decompile stage, runs the app on your own emulator, routes traffic through Burp (defeating SSL pinning when needed), and confirms or refutes each finding with captured evidence. ## Core Features & Use Cases - Emulator verification workflow: Installs and launches the APK, scaffolds per-finding evidence directories, prints each finding's verification plan, and records confirmed / not-reproduced / needs-manual verdicts back into report.json. - HTTPS interception and pinning bypass: Guides Burp proxy and system-CA setup, tries generic Objection/Frida unpinning first, then drives a subagent to read the actual pinning code and write a targeted Frida hook saved to targets/<hash>/frida/bypass.js. - Automated surface fuzzing: fuzz_surface.py mutates exported components, deep links, and content providers from the threat model with adversarial input, watches logcat for crashes, and appends any crash as a new candidate finding. - Use Case: After a static review flags an exported activity and a pinned HTTPS API, run this Skill to install the app on your emulator, bypass the pinning, reproduce the exported-component exploit via adb, and capture logcat and Burp evidence before reporting. ## Quick Start Ask the agent to verify the findings from the decompile report by installing the APK on your emulator, setting up Burp interception, and running each finding's verification plan.

Frequently Asked Questions about dynamic-verify

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I bypass SSL pinning on Android with Frida?

Try generic unpinning first with objection's android sslpinning disable command or the frida-multiple-unpinning script. If that fails, read the app's actual pinning implementation from the decompiled source, match it against the mechanism table (OkHttp CertificatePinner, custom TrustManager, TrustManagerImpl, or native BoringSSL), and write a targeted Frida hook.

How do I set up Burp Suite with an Android emulator?

Point the emulator at Burp by setting the global http_proxy to 10.0.2.2:8080, then install the Burp CA as a system certificate by pushing the subject-hash-named PEM into /system/etc/security/cacerts on a writable AOSP or Google APIs image. Android 7+ apps do not trust user CAs, so the system store is required.

Why is HTTPS traffic not showing in Burp on my emulator?

If plaintext requests appear but HTTPS does not, or logcat shows SSLHandshakeException or trust anchor errors, the app is using certificate pinning or rejecting your CA. Confirm the Burp CA is in the system store, then apply a generic or custom Frida unpinning hook.

Can I fuzz Android exported activities and deep links with adb?

Yes. The fuzz_surface.py script mutates exported components, deep links, and content providers from the threat model with payloads like path traversal, SQLi strings, null bytes, and oversized values, firing them via am start, am broadcast, and content query while watching logcat for crash markers.

Does this verification workflow run against a physical phone?

No. The scope gate refuses to run against any adb target that does not look like an emulator, since the fuzzer sends adversarial input to a running app. An --allow-device override exists only for a device you own, and the APK must be one you are authorized to test.