IPhone一起玩越狱 -(十六)- tweak 反反插入

引言

通过tweak的原理的研究的出来的结论是:

  • tweak是根据dyld中的DYLD_INSTER_LIBRARIES这个宏环境变量临时插入自己的动态库
  • 在App的MachO文件中存在segmentname、sectionname 分别为__RESTRICT、 __restrict就能够使dyld中的DYLD_INSTER_LIBRARIES这个宏插入动态库失败,也就是tweak失败
  • 在IPhone一起玩越狱 -(十五)- 禁止tweak插入App进程介绍了反tweak插入,也就是防护你的App被tweak篡改

反tweak插入,是一个防护问题,我怎么去攻破这层防护呐?这个防护是完美无缺的吗?

对反tweak插入分析

  • 在dyld源码会直接循环遍历DYLD_INSTER_LIBRARIES中的lib动态库,然后加载到当前目标App进程
  • 当然dyld源码中有加载DYLD_INSTER_LIBRARIES的临时动态库有个先觉条件就是,必须issetugid() == false hasRestrictedSegment(mainExecutableMH) == false
  • 因为没有找到issetugid()相关解释,或者也是apple的私有API,上架的App是无用的
  • hasRestrictedSegment(mainExecutableMH) 分析这个实现得到反tweak的方法就是在你项目生成*.app文件的时候,插入segmentname、sectionname 分别为__RESTRICT、 __restrict的一个Section 详情->戳我
  • 如果想反反tweak目前的方式就是将MachO文件中的__RESTRICT的Section干掉或者修改segmentname、sectionname任意一个,让判断失效

入手操作

通过分析,当前我能做的只能是通过修改MachO二进制文件,难点出现了我怎么修改MachO二进制文件,因为学过一点汇编知识,二进制文件都是0、1组成的机器语言,项目通过通过上层语言、汇编语言,最后生成的二进制的计算机语言,如果在一堆二进制文件中找到这个Section,好比是海底涝针,没法入手,这就靠我们去寻找一些工具,古人云:"工欲善其事,必先利其器。"如果有工具可以使用为什么不用呐? 牛顿:"站在巨人的肩膀上"!
然后我找到了这个神器
Synalyze It! Pro
这个可以修改二进制文件


只要修改以后的内容不等于 __RESTRICT、 __restrict
最后要做的是将MachO文件放回*.app中
注意
修改过后的MachO文件需要重新签名才能够安装到手机里面
无越狱iphone安装多个同样应用的方法(一)
无越狱IPhone安装多个同样应用的方法(二)Xcode签名
无越狱IPhone安装多个同样应用的方法(三)自动化重签名
安装成功以后就可以直接用tweak插入动态库的方式去Hook你的App的代码

码运昌盛

你可能感兴趣的:(IPhone一起玩越狱 -(十六)- tweak 反反插入)