2014-05-23 18 views
2

我有一个需要以超级用户身份运行的越狱应用程序,因此在main函数的开头,我调用setuid(0);当我想通过任务切换器终止应用程序时出现问题。我从多任务栏中删除它,但它继续在背景中运行。有人知道如何解决这个问题吗?我知道“iFile”有一段时间有这个问题。以超级用户身份运行的iOS应用拒绝关闭

回答

1

你的问题其实很简单。
SpringBoard因此多任务栏作为用户mobile运行,而您的应用程序运行为rootmobile用户无法终止运行为root的进程。
我的第一个想法是将(MobileSubstrate)挂接到多任务栏,并且由于MS的调整可以作为root运行,检测用户何时杀死你的应用程序并以root用户身份自杀,因为SpringBoard根本无法做到这一点。
或者,如果这不能解决问题,请问做了iFile的人,他真的很有帮助,我相信他会给你一些指导这个问题。

+0

是的,我给他发了一封电子邮件,但我得到了他的自动回复告诉我,他收到了很多邮件,并且可能无法回复我一个月。当应用程序被“要求”终止时,是否有任何类型的事件被调用?我知道applicationWillTerminate存在,但只在应用程序实际退出时才起作用。我想知道是否有任何应用程序收到信号告诉它退出的事件? – Finke

+1

调整不能“运行”,它是一个动态库。调整将具有所有特权,沙盒限制以及它所加载进程中的所有内容。因此,如果一个流程像手机一样运行,那么您的调整也将以移动方式运行,因为它们作为一个流程存在。显而易见的解决方案是挂钩到SpringBoard并发送通知,当应用程序在多任务栏中死亡时。在应用程序中收到时,只需调用'exit(0)'。但我认为'applicationWillTerminate'应该称为进程权限。这只是一个事件,SpringBoard应该能够将它发送到“root”进程。 – creker

+0

它不是因为进程权限而被调用,因为应用程序没有终止而没有被调用 – Finke

0

我会建议调查究竟你如何取得root权限升级,并且它建成一个正常UIApplication,并安装在/Applications/

我不认为这应该阻止你杀了应用程序。看看Cydia应用程序本身,它也以root身份运行。

我可以通过任务切换器(通过ps命令后验证)毫无问题地杀死Cydia。

如果您登录到一个越狱的手机,一起来看看:

/Applications/Cydia.app/Cydia 
/Applications/Cydia.app/MobileCydia 

我相信技术是well described here。否则,您可能需要发布更多关于您如何编写应用程序代码的信息。

+0

它从/ Applications /的权限设置为7555运行。我已经使用了cydia使用的相同技术。我有一个脚本运行我的实际可执行文件并将其设置为root,然后在应用程序的“main”中,我使用setuid(0) – Finke

+0

我将尝试运行我自己的一个应用程序,看看我是否可以重现问题。你能重现我用Cydia描述的东西吗?换句话说,在你的手机上,你是否看到从任务切换器中杀死Cydia确实有效? – Nate

+0

是的,这一直工作 – Finke

相关问题