很久没玩iOS了,看这标题应该猜得到我要干什么? 会开源的啦
目前思路:
- 静态获取RootFS并解密后手动Parse dyld_shared_cache. 但是这个的问题是从iOS10开始固件的RootFS才不再加密,之前的固件版本很多缺少RootFS的解密Key
- 找到某个网站/人在老版本手动提取的dyld cache
很久没玩iOS了,看这标题应该猜得到我要干什么? 会开源的啦
目前思路:
目测0 imports
不明觉厉5个字
x不明觉厉5个字
留名 万一火了呢
不明觉厉 开搞吧
是类似这个东西吗?iOS-System-Symbols
我收集了一份各版本的系统库,都已经从dyld_shared_cache里解压出来了。
目前还差这几个arm64版本的系统库:
11.2 (15C113)
11.1 (15B101)
10.0 (14A346)
9.3 (13E237)
8.0.1 (12A402)
8.0 (12A365)
7.1.2 (11D257)
7.0.2 (11A501)
7.0.1 (11A470a)
被你提醒我才发现,原来iOS10开始固件不加密了啊,那11.2和11.1那两个也能拿到了。
另外这里也有一个收集的网站iOS Symbol Pool,不过它上面的系统库好像只有符号,没有代码段。
感谢。其实我找这玩意儿是为了做加固
又看了一下,那几个缺失的arm64固件也已经有RootFS key了,抽空把它们都补上。
不过10.0 (14A346)固件没有提供下载,拿不到了。
这些东西我是用来符号化crash日志,或者分析crash日志时看看汇编代码。
还能提供什么加固方面的作用?
我在想哈,具体我也不很久不搞iOS了思路可能不一定对哈。
知道相对偏移。运行时拿到基地址,加起来是不是能获得函数的实现地址。接下来搞一个编译器流程把原来的函数调用都换算成对地址的调用。当然初始化这些是一个巨大的性能开销,不过只用执行一次倒还好
留名,伸手了,万一给了呢?
好像有点意思,可以防hook,大佬厉害了。
不过每个方法的相对偏移在每个系统版本上都不一样,需要根据运行时的系统版本进行区分,所以需要维护一张系统版本和偏移量的映射表?如果表太大,估计就只能先处理一部分关键函数了。
是的,本来就是个脑洞。macOS上之前搞了个poc,但是由于macOS的dyld cache可以重新生成,稳定性几乎为0
反hook倒不会有多少效果: P,主要是基于现在Hikari的fco之上进一步恶心攻击者 : P
张总,你这个思路实现个跳转表吧,这个在看雪上的Windows pe crackme 我记着是16年还是17年有人实现的,最开始这个思路也是 病毒先用的。主要是提醒下,如果想做保护的话,Windows上面的那一套有很多可以借鉴的,各种奇技淫巧,你可以去看下看雪那边看下crackme
跳转表我早就做过啦
哎呀,没表达清楚,说的是导入表动态获取函数的跳转表,这个就是你开头说的 模块基址加偏移,还有通过 取 基址+名称 哈希 后取导入地址的,说的就是你主贴提的 函数地址 这个表。你说的混淆的这个跳转表膜拜过啊
这个考虑过,没有客户懒得做这么麻烦的玩意