iOS是怎么检测虚拟定位的

detectRiskOfFakeLocation,请问下 检测代码是怎么找到的啊

张总,能否在详细说下hook _dyld_get_image_header 方法后应该怎么做?看了下检测cryptid,应该只是遍历load command吧?好像与_dyld_get_image_header方法的关系不大,请张总解惑 谢谢

我现在知道的信息是,当我们砸壳之后 冲签名 ipa 这个软件就已经检测出来了,和虚拟定位应该没有关系。 http://bbs.iosre.com/t/ios-app/10432 我开这个问题就是因为我也遇到了让人脸识别。

从header才能定位到lc的内存地址啊。。。。。。。

如何检测是否重签?我hook了能看到的所有检测isJaibreak方法,都没有被调用。重签检测应该是c的方法了吧

// mach_header*   _dyld_get_image_header(uint32_t image_index)
%hookf(mach_header *, _dyld_get_image_header, uint32_t image_index) {
    mach_header * result = %orig; // Call the original implementation of this function
    return result;
}

是这样来 hook _dyld_get_image_header 函数吗?为什么不起作用,加 log 这里不显示?

哦哦 我理解错了 我以为是hook该方法 谢谢大神,我接着分析

额 我没有用theos去hook 我是用fishhook去hook的 不过没用 大神上面说了,要从这个方法入手去找C的内存地址,不过的确看到钉钉有调用这个方法

试出来的。

这个地方虽然没有出现“人脸识别验证”,但是在日志中会报“SG ERROR: 202
, There is a mismatch between application’s bundle identifier and SecurityGuardSDK’s jpg file (yw_1222).” 感觉钉钉会记录到这个ID是不对的,不知道是不是钉钉故意不报错,然后偷偷记录你的行为,大神可以看看这个问题吗

目前来说应该找到了调用 _dyld_get_image_header的函数了,给hook后发现没用,然后继续找 发现了 [ SecurityGuardOpenSecurityBody getSecurityBodyDataEx:appKey:authCode:extendParam:flag:env:error:]这个方法,返回值是一段加密的字符串,应该就是验证的这段字符串,而且应该是在js里面验证的,那个地方感觉没办法去接触了,个人愚见感觉是■■掉他的加密方式应该就好了,看了下汇编代码,实在是能力达不到,基本不懂,暂时止步在这了,看下大神们有没有什么好的建议

1 个赞

Hook [LAWebView stringByEvaluatingJavaScriptFromString] 可以看到整个 js 与 native app 的交互流程,而里面就有 getSecurityBodyDataEx 返回的值。

对啊 问题就是这个返回值了,只要搞明白怎么加密的就好了,好长一段汇编…

自己调用原来的js来模拟就好了啊不一定需要还原算法本身

js全是注入的,如果是在JS里面做手脚的话 正版简单的改下方法名那我们不就得重新弄了吗?现在在狂啃那段汇编,感觉这辈子啃不完了:joy:

JavaScript->AST 然后基于AST作特征分析。简单的改方法名可以解决

感谢张总耐心指导:joy:,不过我感觉我已经无可救药晚期了,语法树这玩意不会玩…还是得去多多学习

这个好像是阿里百川以前的安全图片吧,我们公司也有用到 如果包名不一致的话是会爆掉的,这个是单独做处理了吗?请问有没有什么好的思路可以绕过?

这个组件加了混淆,静态分析还是比较困难,自己从字符串入手,看哪些地方调用了bundleIdentifier,或者直接parser反混淆,符号执行跑一下,流程清楚了,就剩一些无意义的符号。

它查看的是否是Entitlements里面的application-identifier?重签名后 info.plist的里面的应该是没有变化的吧?