(更简单的做法,是 Acitivity透明法子,真心好用。)
最近自己晚上在研究Supersuser。apk 权限控制软件。当然自己的想法需求很简单:
1、能拦截任何软件偷偷权限请求2、允许我们自己程序有权限,其他程序偷偷请求权限,一律KIll掉,不做响应。
起初,因为su超级权限,请求是c层的代码,当应用通过以下代码去请求su
String cmd
=
String.format(
"echo %s > %s\n", arg, mSwitchUsbFileTextEdit.getText().toString());
try {
Process exeEcho
=
Runtime.getRuntime().exec(
"su");
exeEcho.getOutputStream().write(cmd.getBytes());
exeEcho.getOutputStream().flush();
}
catch (IOException e) {
showMessage(
"Excute exception: "
+ e.getMessage());
}
也就是su---------->Activity。
前面自己的想法是通过修改su.c增加个sqlite3的一个数据库插入方法,但是迫于对c语法不熟悉,以及JNI之间的调用调试并不是很方便,因此一直搁浅着 。
今早突然想到,加个中间的Service服务,来做为中间服务。由service是后台界面,我们即可静默的去处理拦截。
具体实现Superuser.apk 请需要的人,自行去同步源码,自行编译。以及NDK 编译su.c 。 su跟Superuser是一一对应的请熟知。