之前有过一篇专门的iOS反调试及其绕过的文章,原本以为市面上能遇到的反调试可以绕过了,但是今天遇到了硬茬,这里记录一下。
反调试情况
首先直接找反调试函数无果,全局搜索SVC 0x80,找到下图,明显是反调试,内嵌汇编调用ptrace,这里有个比较奇怪的地方,判断并没有走上面的mac_syscall,而是进入下面SDImage函数
调试崩溃的地方定位到如下地址,SVC 0x50,如果你以为和之前处理SVC 0x80只需要nop掉即可,那你可太年轻了,这个调用会返回一个结构体,后续有代码会将一些值写入这个结构体,如果nop之后会出现无法写入改地址的情况。
反反调试方法
上述情况该怎么绕过呢,查看在调用SVC 0x50之前x0寄存器的值是31,这个应该是在调用ptrace,那么我们修改这个值即可,将寄存器x0修改为0,就可以绕过这个反调试。
最后记录一下另外一个收获,在我绕过反调试之后发现APP部分功能无法使用了,怀疑还有其他检测检测到了调试器,直接通过iFunBox替换Library目录(将重装后的copy下来,然后出问题了将其替换既可正常使用)