创建具有Root权限的App
(当然,首先是需要你的移动设备已经越狱了)
1.创建并编写有Root的程序(例如名字为Demo),在main.m的main函数第一条代码执行setuid(0)命令
int main(int argc, char * argv[]) {
setuid(0);
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
2.编译程序,把APP拷贝出来一份,打开APP的包内容,在运行文件名的后面加条下划线(Demo改为Demo_)
3.把程序的入口关掉(注释main.m里面的入口代码),在main函数里面加上以下代
int main(int argc, char * argv[]) {
NSString* string = [[NSBundle mainBundle]pathForResource:@"CreateRawSocket_" ofType:nil];
argv[0] = (char*)[string UTF8String];
execve([string UTF8String], argv, NULL);
// setuid(0);
// @autoreleasepool {
// return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
// }
}
4.编译程序,把APP里面的运行文件拷贝到刚才拷贝出来的APP里面,这时APP里面就有2个运行文件了(Demo与Demo_)
5.根据以下的目录结构创建相对应的目录与文件
deb (文件夹)
|----DEBIAN (文件夹)
|-----control (配置文件)
|----Applications (文件夹)
|----- APP (APP程序)
6.修改deb文件夹与里面文件的权限,因为如果不修改成这个权限,后面打包deb的命令可能会失败
sudo -R 0755 chmod deb/
7.进入APP包里面,修改Demo_的所属组与权限,(也可以在手机上安装完之后再用Terminal修改,但是不喜欢用手机手机敲命令)
sudo chown root:admin Demo_ (可能没有admin这个组,例如我的linux里面默认存在的是root:roor,这时把组root改成admin就可以了)
sudo chmod 777 Demo_
sudo chmod u+s Demo_
8.打包deb文件 (最好在Linux系统里面,因为我在mac里面不装fink的情况下生成失败了)
dpkg-deb -b deb Demo.deb
9.拷贝Demo.deb到手机,用iFile安装(这时是看不到安装了的APP的图标的),用PP助手修复图标或重启即可看到图标