Skip to content

Jailbreak detection (iOS)

final result = await DeviceShield.checkJailbreak();

iOS only. On Android, and on the iOS Simulator, the status is CheckStatus.notApplicable. Use root detection on Android.

Signal What it checks Strength
jailbreak_app_paths /Applications/Cydia.app, Sileo.app or Zebra.app exists Strong
suspicious_system_paths One of 9 paths that stock iOS doesn’t expose, such as /Library/MobileSubstrate/MobileSubstrate.dylib, /bin/bash, /usr/sbin/sshd, /etc/apt Strong
writable_outside_sandbox The app can write, then delete, a file under /private/ Strong
process_spawn_check posix_spawn("/bin/ls") succeeds, which the sandbox normally blocks Strong
dyld_env_var DYLD_INSERT_LIBRARIES is set, meaning libraries are being injected Strong

Every jailbreak signal is strong, so any one of them means detected.

  • Rootless jailbreaks (Dopamine, palera1n rootless) install under /var/jb and may not trigger the classic path checks.
  • Jailbreak-hiding tweaks can hook the file-system calls these checks use.
  • posix_spawn and writes to /private/ may draw questions in App Store review. See iOS setup.