ios - 从越狱应用程序 ios 7 启动命令行

标签 ios iphone command-line admin jailbreak

我有一个 iPhone 5s 在 ios 7.1.2 上越狱,我想做一个调整,通过按下按钮操作启动一些命令行。所以为此我有几个问题:

  • 我读到可以在 mac os x 应用程序中通过 NSTask 启动命令行,但我也读到 NSTask 在 ios 中不可用。那么我该怎么做才能根据用户操作启动多个命令行呢?

  • 我需要一些命令的管理员权限,如果我将我的应用程序放在/Applications/中,我将自动拥有管理员权限,对吗?所以不需要调用 su binary etc ...?

我是 ios 和越狱开发的新手,所以如果我说了愚蠢的事情,请纠正我!提前致谢

最佳答案

感谢其他成员和一些搜索,我找到了 2 个问题的答案:

  • (非常感谢@Nate 的回复),通过将头文件导入应用程序项目,可以在 ios 中使用 NSTask。语法与 mac os x 应用程序中的用法相同,但您可以找到一些帮助 here

  • 放在/Applications/中的应用没有管理员权限。为此,您必须:

1) 在 main() 函数中添加 setuid(0);setgid(0);

2) 正常构建应用。

3) 如果您构建一个名为 HelloWorld 的应用程序,Xcode 将创建一个
HelloWorld.app目录,里面有一个名为HelloWorld的文件,
是可执行的。例如,将此可执行文件重命名为 MobileHelloWorld

4) 完成后,在 HelloWorld.app 中创建一个新文件 名为 HelloWorld 的目录,并使用文本编辑器对其进行编辑以提供 此内容:

#!/bin/bash
dir=$(dirname "$0")
exec "${dir}"/MobileHelloWorld "$@"

当您点击应用程序的图标时,该脚本将运行,因为在 app的Info.plist文件,可执行文件的名字是

<key>CFBundleExecutable</key>
<string>HelloWorld</string>

HelloWorld 现在是一个 shell 脚本,它调用 MobileHelloWorld, 重命名的二进制可执行文件。

5) 在终端中,导航到应用程序包。

6) chmod 0775 原始可执行文件和 chmod 6775 复制的 可执行文件。

7) 将应用程序包复制到 /Applications 到设备。重启跳板 你应该可以开始了。如果应用程序未启动,请重复第 5 步 & 6 在设备上。

对于这个问题,所有学分归功于(再次:P)@Nate(here)和@JonasG(here)

关于ios - 从越狱应用程序 ios 7 启动命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121313/

相关文章:

ios - HTML5 中嵌入的视频无法在 UIWebView 中播放

ios - RESTKit - 如何始终替换所有缓存的对象而不是更新?

iphone - 如何从命令行运行 UIAutomation 脚本到模拟器

C++ 以<输入文件和>输出文件启动程序

c++ - 如何使 linux 命令行程序在 windows 中运行?

ios - 立即 dimissViewController 后,presentViewController 时为空白

ios - 可定制的曲线图,可以显示不同点的图像

iphone - NSUrl 变为 null 时有效的 URL 字符串

c++ - 为什么这段代码不运行?

objective-c - 路由我 : Location & Screen Position