Checks that run inside your application, on the device. Each one reports signals with confidence and evidence — never a bare boolean, and never a claim that a device is definitely clean.
| Check | Platforms | Documentation |
|---|---|---|
| Root detection | Android | root-detection.md |
| Jailbreak detection | iOS | jailbreak-detection.md |
| Debugger detection | Android · iOS | android · ios |
| Emulator detection | Android | emulator-detection.md |
| Simulator detection | iOS | simulator-detection.md |
| Hook / instrumentation detection | Android · iOS | android · ios |
| App integrity | Android · iOS | android · ios |
| Secure hardware | Android · iOS | android · ios |
| Biometrics | Android · iOS | android · ios |
| Network posture | Android · iOS | android · ios |
| Screen capture | Android · iOS | screen-security.md |
| Topic | Documentation |
|---|---|
| How the risk score is calculated | risk-scoring.md |
| Expressing what your app should do about a result | security-policy.md |
| What has and has not been verified on hardware | validation.md |
Every page answers the same questions: what the check detects, how it works, which signals it uses, what confidence they carry, its false positives and false negatives, its platform limitations, and what your application should do about a result.
Two conventions run through all of them:
unknownis notsecure. A probe that could not run producesindeterminate, and any indeterminate signal downgrades the whole check tounknown. Absence of evidence is never reported as evidence of absence.- Confidence comes from corroboration. A single filesystem path is weak evidence, however severe root access would be. Confidence rises when independent signals agree.
No check here is bypass-proof, and none of them can prove a device is uncompromised. They run inside the process they protect, which means an attacker with code execution in that process can interfere with the checks themselves. What they buy is cost: they raise the effort required from "attach and go" to "attach, then hide".
Real trust decisions belong on a server, informed by hardware-backed attestation — Play Integrity on Android, App Attest on iOS.