Skip to main content
Participant
November 5, 2019
Question

AIR Jailbreak detection

  • November 5, 2019
  • 1 reply
  • 312 views

What is currently the best way to dectect a jailbroken device (Android and iOS) with AIR?

This topic has been closed for replies.

1 reply

mprabhu33
Participating Frequently
November 8, 2019

//Android

public function isRooted():String
{
var places:Array = [ "/sbin/su", "/system/bin/su", "/system/xbin/su",
"/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/data/local/su"];

var str:String = checkFilePermission(places);
return str;
}

//iOS

public function isJailbroken():String
{
var places:Array = [ "/Applications/Cydia.app","/Library/MobileSubstrate/MobileSubstrate.dylib","/bin/bash",
"/usr/sbin/sshd","/etc/apt"];
var str:String = checkFilePermission(places);
return str;
}

public function checkFilePermission(places:Array):String
{
var str:String = "FALSE";
var flg:Boolean = false;
var rootFile:File = new File();
if (File.permissionStatus != PermissionStatus.GRANTED)
{
rootFile.addEventListener(PermissionEvent.PERMISSION_STATUS, function(e:PermissionEvent):void {
str = "FALSE";
if (e.status == PermissionStatus.GRANTED)
{
flg = checkFiles(places);
if(flg)
{
str = "TRUE";
}
}else if (e.status == PermissionStatus.DENIED)
{
str = "DENIED";
}

// Dispatch event with str
});

try {
rootFile.requestPermission();
} catch(e:Error)
{
}
}else
{
flg = checkFiles(places);
if(flg)
{
str = "TRUE";
}
}

return str;
}

private function checkFiles(arr:Array):Boolean
{
for each (var s:String in arr )
{
var f:File = new File( s ) ;
if ( f.exists )
{
return true ;
}
}
return false;
}