开发一个root权限的App

需求:我要开发一个拥有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

1 个赞

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

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

0

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的时候 没有提示重启。。

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

@snakeninny @Akko 求助

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