UNPKG

cordova-plugin-irooted

Version:

Jailbreak/Root Detection Plugin for Apache Cordova

96 lines (73 loc) 3.31 kB
Jailbreak/Root Detection Plugin for Apache Cordova ================================================== Use this plugin to add an extra layer of security for your app by detecting if the device was `root`ed (on android) or `jailbreak`ed (on iOS). ## Install ```bash cordova plugin add cordova-plugin-irooted ``` ## Upgrade ```bash cordova plugin rm cordova-plugin-irooted cordova plugin add cordova-plugin-irooted cordova prepare ``` ## postInstall ### iOS To avoid errors like > -canOpenURL: failed for URL: "cydia://package/com.example.package" - error: "This app is not allowed to query for scheme cydia" don’t forget to add `"cydia"` in `LSApplicationQueriesSchemes` key of `info.plist`. Otherwise `canOpenURL` will always return `false`. ```xml <xxx> <key>LSApplicationQueriesSchemes</key> <array> <string>cydia</string> </array> </xxx> ``` ## Usage in Javascript ```js // available => iOS + Android IRoot.isRooted(successCallback, failureCallback); // available => Android IRoot.isRootedWithBusyBox(successCallback, failureCallback); ``` - `successCallback(result:boolean)` is called with `true` if the device is Jailbroken/rooted, otherwise `false`. - `failureCallback(error:string)` is called if there was an error determining if the device is Jailbroken/rooted. ## Info Based on: - **iOS** - [cordova-plugin-jailbreak-detection](https://github.com/leecrossley/cordova-plugin-jailbreak-detection) - [Shmoopi Anti-Piracy](https://github.com/Shmoopi/AntiPiracy) - **Android** - [RootBeer](https://github.com/scottyab/rootbeer/blob/master/README.md) - [cordova-plugin-root-detection](https://github.com/trykovyura/cordova-plugin-root-detection) - **Articles** - [Android Root Detection Techniques](https://blog.netspi.com/android-root-detection-techniques/) ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request ## ToDo's 1. Cyanogenmod.superuser > If the Cyanogenmod ROM is installed, the cyanogenmod.superuser activity may be in the com.android.settings package. > This can be detected by listing the activities within com.android.settings. 2. Su > Execute su and then id to check if the current user has a uid of 0 or if it contains (root). > shell@android:/ $ su > shell@android:/ # id > uid=0(root) gid=0(root) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r) 3. Busybox > If a device has been rooted, more often then not Busybox has been installed as well. > Busybox is a binary that provides many common linux commands. Running Busybox is a good indication that a device has been rooted. > root@android:/ # busybox df > Filesystem 1K-blocks Used Available Use% Mounted on > tmpfs 958500 32 958468 0% /dev > tmpfs 958500 0 958500 0% /mnt/secure > tmpfs 958500 0 958500 0% /mnt/asec > tmpfs 958500 0 958500 0% /mnt/obb 4. Check library - https://github.com/Stericson/RootTools/tree/master/src/main/java/com/stericson/RootTools 5. Frida detect 5. Magestic detect