开发一个root权限的App


#1

需求:我要开发一个拥有root 权限的app 我在论坛浏览了好多,也有很多介绍 但不是很理解,在网上我找到一个demo 但是不太理解它的执行文件的操作意义,能不能解释下。。。 我安装后返回的UID GID 是 0 是成功了么??

main 代码
int main(int argc, char * argv[]) {
@autoreleasepool {
setgid(0);
setuid(0);
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

然后在打包deb的时候 在DEBIAN下 添加了两个可执行文件
1.postinst代码如下:(注:我的工程名为ReverseTest)
#!/bin/bash
cd "/Applications/ReverseTest.app/"

process origin binary

mv ReverseTest ReverseTest_
chown root.wheel ReverseTest_
chmod +s ReverseTest_

cont=`cat <<"EOF"

!/bin/bash

dir=$(dirname "$0")
exec "${dir}"/ReverseTest_ "$@"
EOF
`

create new fake binary

echo -e "$cont" > ReverseTest
chown root.wheel ReverseTest
chmod +x ReverseTest

The RESPRING script after Install

declare -a cydia
cydia=($CYDIA)

if [[ $1 == install || $1 == upgrade ]]; then
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
fi

exit
2.prerm代码如下:

!/bin/bash

rm -f "/Applications/rootApp.app/ReverseTest_"

附demo地址:https://github.com/QbsuranAlang/rootApp


#2

曾经踩过一系列的坑,狗神那个贴下面评论就可以找到线索了,自己实践一下就知道了


#3

好的 谢谢 我看了 狗神的那个帖子 好几遍了 英文的有点困难 话说 返回的UID GID 是什么能确定成功了呢。。 是0?


#4

0


#5
The RESPRING script after Install

declare -a cydia
cydia=($CYDIA)

if [[ $1 == install || $1 == upgrade ]]; then
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
fi

这下面的代码为什么没有生效 我装我的root权限app的时候 没有提示重启。。


#6

我还发现 第一次安装成功后 app打开没反应 直接卡死 如果 我手动重启SpringBoard的话 是正常的


#7

@snakeninny @Akko 求助


#8

我用的也是iOSopenDev ,,我看了你的demo ,,但我不知道你这工程是怎么建立的?