roottoolsAnJaRoot is a new Android root-style framework that’s being developed, which I believe will probably be the next big thing in root applications if it gets off the ground and developers start writing for it. The TL;DR version allows applications to do root work for themselves rather than via shell proxy, and I find it quite interesting.

For quite a while now, we’ve had Superuser applications that allow programs to run on unl0cked rooted devices with elevated access. For the most part, that means that a program can do things outside of the sandbox that Android puts it in. An app can execute a script that allows it to modify another app, it can execute shell commands that it otherwise shouldn’t have access to, and otherwise dig its way out of the baby pen it’s been placed in.

Relatively recently the Xposed framework came out, which allowed an application to modify another application at runtime. With this we were able to take Google Wallet and remove device restrictions and get rid of the annoying unsupported message, without ever modifying the original APK. We weren’t executing a shell script to modify data; rather, we were intercepting code execution at runtime and returning different values to the application so it thought that it was on a supported device. But an application itself generally didn’t have access to root capabilities, just access to a root level shell script (i.e. Application X can’t modify /system, but it can call a shell script to modify /system). This is sort of like operating remotely on a patient with robot arms – you’re getting the job done, but something else is doing the movement.

Now the AnJaRoot framework has been developed to give root level access to applications. For the average end user, this isn’t the most exciting of news, but for application developers, they do not have to worry about what tools the phone supports any more. One of the reasons we install BusyBox on rooted devices is because some of them don’t come with any of the Linux-based commands such as mv, vi, kill, etc. Users of Titanium Backup probably have seen the Problems? button that allows you to install a new BusyBox. That’s because Titanium Backup isn’t doing most of the hard work, but rather it’s executing the scripts to run system level applications that do the work.

With AnJaRoot, assuming it’s adopted and developed for, you’ll be able to have applications have root access themselves, and I’m assuming you’ll have the ability to modify other applications on the fly like you do with the Xposed framework. What this could bring to the Android table is runtime game cheats, third party application enhancements (such as returning Google Latitude functionality to Google Maps), and all sorts of interesting things as your root applications should be able to interact directly with other applications. AnJaRoot is not all that interesting to end users at the moment since there’s nothing that utilizes it, other than one application that tests for AnJaRoot, but if it gets going well, it might be the future of all application development.

For a description of how it works by the author, you can read this post, and you can follow the development thread here if you’re interested.