关于hook exit()函数的问题

向前辈们请教个问题

自己写的一个demo工程, 在ViewController类里面,写上这个方法, 然后方法里面调用exit(0),
实现的功能就是点击页面,调用exit(0)函数闪退, 如下图所示:

然后我自己写tweak,就是MSHookFunction hook exit 函数, 如下图所示:

image

(1) 其实我想得到的结果是,点击页面之后不闪退, 然后app正常运行,
(2) 但是最终测试发现, 用 MSHookFunction hook exit() 函数之后, 不调用orig函数, app确实没有闪退, 但是app页面会卡住, 好像成了一种假死的状态, 这是为什么呢 希望大佬解惑

之前听大佬说过,exit() 的汇编调用并不会保留返回地址,所以在调用完成后不会正常返回。

1 个赞

exit作为一个不会返回的函数,在编译的时候就不会保证他的下一条指令是什么


这个例子是直接到下一个函数去了

image
这个例子是直接到下一个块去了

所以你直接返回没有意义

2 个赞

image

这样我不去return, 可以么,hook成功了,但是好像点击屏幕还是闪退

你觉得你这样hook以后程序执行流程是什么

希望exit函数被hook掉不执行,点击页面app正常运行 不闪退 :persevere:

什么都不加,跟只加一个return有啥区别?

上面Ouroboros前辈指点 exit是不会返回的函数, 我在想是不是因为我return返回了,所以我把return也注释了

去学学正常开发吧