在SpringBoard中用system函数启动的命令行程序如何使用cycript...

首先,把命令行程序放入/var/root/目录,然后hooksb开机自启动它
tweak.xm:

%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
        system("/var/root/XXX &"); //这里的XXX是一个命令行程序,直接用ssh可以执行并且cycript -p XXX可以实现注入
}
%end

然后看看效果:

iPhavonz:/ root#: killall SpringBoard
iPhavonz:/ root#: cycript -p XXX
dlopen(/usr/lib/libcycript.dylib, 5): Library not loaded: /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore
 Referenced from: /usr/lib/libcycript.dylib
 Reason: image not found

求解,如何注入到一个被其它App(不限于SpringBoard)启动的命令行程序的进程中

你确定system()执行成功了吗?

ps -e

看得到目标进程吗?

ps -u 0
ps -ax

都能看得到
确定执行成功了

是不是SpringBoard的system执行的程序处于沙盒中?

应该是处于沙盒中的,但Cycript的对象一般是AppStore App,也在沙盒中,所以我觉得不是这里的问题。你google看看提示的错误信息能不能找到什么线索

嗯,我搜过了,两个信息来源
其一是官方提到的
To deal with the sandbox issues opening libraries, it is normally sufficient to simply install Cycript to /usr. To do this, place Cycript’s dylib files into /usr/lib and Cycript’s Cycript.lib/cycript binary as /usr/bin/cycript. You might also want to copy the Cycript modules directory (cycript0.9) to /usr/lib. Even from /usr, however, Cycript doesn’t always work.
但我看了一下cycript的路径貌似就是在usr下

另外一个搜索结果就是一个无人问津的提问

原来是root权限运行的程序无法使用cycript注入

那也不对啊,SpringBoard里调用system,启起来的进程怎么会是以root权限运行的呢?

chmod 7777 XXX
我用 cycript -p MobileCydia也出了一模一样的错误,估计就这个没跑了