Fythem 发表于 2022-7-11 10:44

记一次iOS越狱检测绕过

开始入坑 iOS 逆向了,碰到了一个应用有越狱检测。




应用在启动的时候就检测了设备的越狱情况,如果是越狱设备,只能点击弹窗中的“退出应用”。故考虑先通过frida-ios-dump获取应用ipa包,然后找到检测点,进而对越狱检测进行绕过。

ps:进行frida-ios-dump失败,原因未知,dump进程一直卡住,用了绕过越狱检测的KernBypass + LibertyLite也未能成功,但是同事的设备环境就没问题,这里用的是同事dump获得的ipa



拿到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



编写frida hook代码,需要注意的是越狱检测是在应用启动时进行的,如果直接attach的话,很难执行到我们修改返回值的位置。
所以这里需要先spawn进程,再attach并注入js代码,最后resume让程序继续运行

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()

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,绕过了越狱检测,可以进入应用并继续后续的测试了。



Fythem 发表于 2022-7-20 16:45

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

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

cheny12120 发表于 2022-7-11 12:07

牛啊,学习了

ZhuanZhuYuIT 发表于 2022-7-11 13:03

膜拜大佬

richyfly 发表于 2022-7-11 13:08

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

烟草a 发表于 2022-7-11 13:25

感谢分享。

torrent 发表于 2022-7-11 14:02

厉害了,大佬

kip1914 发表于 2022-7-11 14:03


膜拜大佬{:1_932:}

gland 发表于 2022-7-11 14:27

支持一下

yzx159357123 发表于 2022-7-11 15:05

感谢分享

string2016 发表于 2022-7-11 15:18

厉害了,大佬
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 记一次iOS越狱检测绕过