请问大佬, 注入系统进程,触发safemode, 请问该如何排查。 哪里可以看到日志?

请问大佬, 注入系统进程,触发safemode, 请问该如何排查。 哪里可以看到日志?有插件可以看到iOS系统运行日志不。

最近怎么这么多零基础入ios越狱开发的, 是看了什么误导教程吗?

safemode, 就是你的tweak有bug导致springboard进程崩了, 自己调试就行了. 不过要注意watchdog问题, 调试暂停系统服务太久会导致系统重启了, 动作要快

大佬, 我用debugserver, 调试不了。 因为注入安装后, Springboard会重启, 导致lldb不了了。 请问大佬, 该如何调试自己的tweak呢。 我的tweak是这个。

%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application{
%orig;
// char * pointer = NULL;
// pointer[0] = ‘1’;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{

    UIWindow * keyWindow = [UIApplication sharedApplication].delegate.window;

    UILabel * title = [UILabel new];
    title.text = @"key window";
    title.textColor = [UIColor redColor];
    [keyWindow addSubview:title];

});
NSLog(@"SpringBoard is hooked");

}
%end

一直想学习一下越狱, 然后书和教程都是10多年前的, 过时了。现在停留在了解基础,和工具使用, 请问大佬, 有推荐吗

每个人学习方式和学习能力不同, 我进ios逆向这行就从来没看过书/视频, 全靠自己研究就搞定. 书和视频能讲的也就是皮毛, 他最多把你从门外汉带到行业初级水平.

现阶段你应该多利用AI了, AI相当于行业中高级水平, 完全可以起到教学目的. 凡事多思考, 少借助拐杖才是正道, 看问题多几个角度, 思维成熟了以后很多不用问, 等到一定程度你的问题别人解决不了那就是学成了

关于SpringBoard重启无法附加, 这段代码执行的时期在整个运行阶段不算最早, 但也在界面初始化阶段, 所以至少有2种思路:

1. 用等待调试的方式(-waitfor)来调试, springboard进程一启动立刻就注入调试了, 不过注意要先把springboard杀死, 再waitfor, 否则会直接调试现有进程. 杀死的时候注意这玩意儿属于系统服务, 会自动重启, 可以在一个命令里立刻杀死然后立刻启动调试, 也可以选择先把服务停掉再干活. 搞定再启动sb服务

2.在真正代码之前做个日志打印用于提示你可以附加, 然后代码里sleep几秒, 这几秒刚好够你附加, 此方式比较简单

3.非调试法, 先大概确定哪些代码可能有问题, 注释掉, 如果spring不崩就解除注释一些, 然后持续上述过程, 直到找到有问题的代码. 代码太多的情况下可以用二分法思路定位问题代码

总之方法很多了, 要动脑

首先 感谢大佬指点,大佬说的是。 然后我其实在出现问题卡壳的时候去使用ai 帮忙分析问题, 我感觉我应该是对逆向这个方向了解的很少, 所以使用ai去解决问题时, 不能完全把控方向, 导致ai也不一定能真正往正确的方向去分析问题, 得到正确的解决方案。

其次: 我也使用了大佬说的第三种方案, 注释代码, 找到影响点。 如果我把上面那个延迟里的添加UI的代码注释之后, 就没有问题了。 然后大佬说的第一种方法我也会去尝试一下, 因为这个方式是我完全不了解了, 我得还要去查一下“-waitfor”。

总之: 感谢大佬耐心细致的分享。 辛苦。 respect!:saluting_face:

大佬是这样的 我尝试了一下 debugserver , debugserver localhost:1234 -w SpringBoard。 我在安装之后, 自动重启sb, 然后执行debugserver localhost:1234 -w SpringBoard 命令, 然后

$ lldb

(lldb) process connect connect://localhost:1234

Process 1174 stopped

* thread #1, queue = ‘com.apple.main-thread’, stop reason = signal SIGSTOP

frame #0: 0x000000022ef7a630 libsystem_platform.dylib\`\_platform_strcmp

libsystem_platform.dylib`_platform_strcmp:

-> 0x22ef7a630 <+0>: tst x0, #0xf

0x22ef7a634 <+4>:  b.eq   0x22ef7a654    ; <+36>

0x22ef7a638 <+8>:  ldrb   w4, \[x0\], #0x1

0x22ef7a63c <+12>: ldrb   w5, \[x1\], #0x1

Target 0: (SpringBoard) stopped.

(lldb) c

Process 1174 resuming

Process 1174 exited with status = 9 (0x00000009) Terminated due to signal 9

就退出了, 然后系统重启sb 进入safemode, 我其实想看看具体报错日志, 但是这个附加调试这里 返回的 是不是就是killall -9

大佬 我成功了。 感谢!