记一次iOS越狱检测绕过

查看 236|回复 10
作者:Fythem   
开始入坑 iOS 逆向了,碰到了一个应用有越狱检测。


图1.png (660.97 KB, 下载次数: 0)
下载附件
越狱检测
2022-7-11 10:35 上传

应用在启动的时候就检测了设备的越狱情况,如果是越狱设备,只能点击弹窗中的“退出应用”。故考虑先通过frida-ios-dump获取应用ipa包,然后找到检测点,进而对越狱检测进行绕过。
ps:进行frida-ios-dump失败,原因未知,dump进程一直卡住,用了绕过越狱检测的
[color=]KernBypass + LibertyLite也未能成功
,但是同事的设备环境就没问题,这里用的是同事dump获得的ipa


图2.png (180.53 KB, 下载次数: 0)
下载附件
frida-iOS-dump失败
2022-7-11 10:31 上传

拿到ipa后直接将ipa包中的可执行程序丢入 ida,在 Function Window 窗口中过滤 “jail” 字段,可以找到在 AppDelegate 类中的 [- checkJailbreaking] 和 [- showJailbreakingAlert] 方法。
根据方法名判断,我们接下来需要绕过越狱检测的目标函数就是 [- checkJailbreaking] 了(顺带学习一下,常见的越狱检测会检测哪些内容)
百度搜罗了一下越狱检测,对应到这个应用,这个应用一共检测了三个地方:
1、Cydia.app
2、stat是否出自系统库,如果不是 /usr/lib/system/libsystem_kernel.dylib 就表示越狱
3、当前程序的运行环境,getenv("DYLD_INSERT_LIBRARIES"),未越狱设备返回 Null


图3.png (229.07 KB, 下载次数: 0)
下载附件
ida查找jail函数
2022-7-11 10:31 上传

编写frida hook代码,需要注意的是越狱检测是在应用启动时进行的,如果直接attach的话,很难执行到我们修改返回值的位置。
所以这里需要先spawn进程,再attach并注入js代码,最后resume让程序继续运行
[Python] 纯文本查看 复制代码import frida
import sys
if __name__ == '__main__':
    device = frida.get_usb_device()
    pid = device.spawn(['xxx.xxxx'])
    session = device.attach(pid)
    JSFile = open('xxxx.js')
    JsCodeFromfile = JSFile.read()
    script = session.create_script(JsCodeFromfile)
    script.load()
    device.resume(pid)
    sys.stdin.read()
[JavaScript] 纯文本查看 复制代码if (ObjC.available){
    console.log(" ObjC available!")
    var class_name = 'AppDelegate'
    var method_name = '- checkJailbreaking'
    var hook = eval('ObjC.classes.' + class_name + '["' + method_name + '"]');
    Interceptor.attach(hook.implementation, {
        onEnter:function(args){
            console.log("==== onEnter ====")
        },
        onLeave:function(retval){
            console.log("==== onLeave ====")
            console.log("Return: " + retval)
            retval.replace(0x0);    //修改 checkJailbreaking 函数的返回值
        }
    });
}
最后我们成功将 checkJailbreaking 函数的返回值从 0x1 修改为 0x0,绕过了越狱检测,可以进入应用并继续后续的测试了。


图4.png (26.92 KB, 下载次数: 0)
下载附件
绕过越狱
2022-7-11 10:31 上传

下载次数, 函数

Fythem
OP
  


Adm1nistrator 发表于 2022-7-20 13:01
检测越狱环境一般是涉及到金融支付类的app吧,支付宝这种

有些厂家对自己的应用要求比较高,也会进行越狱环境检测,就看检测方式是否全面了
Fythem
OP
  


Emoei_PG 发表于 2022-7-12 08:27
xd,我看成了  开发越狱。  现在ios15发布已经快一年了,还是没有越狱放出。

hhh,这个只有等等了,我手头有一台iOS15等着越呢
cheny12120   

牛啊,学习了
ZhuanZhuYuIT   

膜拜大佬
richyfly   

虽然不需要,但是支持一下~
烟草a   

感谢分享。
torrent   

厉害了,大佬
kip1914   

膜拜大佬
gland   

支持一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部