美文网首页
各种越狱开发工具(tweak开发工具)的理解

各种越狱开发工具(tweak开发工具)的理解

作者: D_8270 | 来源:发表于2020-07-14 14:01 被阅读0次

    Theos

    theos是后面iOSOpenDev和MonkeyDev的基础,安装教程就不再多说
    着重说一下theos的Tweak模板:
    通过这个模板编译出来,得到是一个deb安装包,只能在越狱机上安装,此deb包中主要包含一个libXXX.dylib和XXX.plist

    XXX.dylib就是代码编译出来的产物,它的Logos语法也是基于CydiaSubstrate的MSHooFunction和MSHookMessageEx,既能hook C函数也能hook OC方法,因此它必须依赖CydiaSubstrate.framework这个库,通过他的Mach-O分析,它是以”/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate“, 即直接引用依赖越狱机上的CydiaSubstrate库

    XXX.plist里标写了一些bundleIdentifier,表示当前这个xxx.dylib动态库会挂载在哪些应用上,即这些应用启动的时候,越狱系统会把xxx.dylib库注入到目标应用中以实现hook效果

    因此,Theos编译出来的产物是完全丢给越狱系统进行注入挂载的,如果编写出来的XXX.dylib库需要直接注入到应用中,需要使用工具insert_remove_dylib将其注入到应用的二进制文件中,同时将CydiaSubstrate.framework拷贝到应用包中,修改XXX.dylib中之前的引用方式,MonkeyDev的MonkeyApp模板就包含这样的流程,只不过它将CydiaSubstrate.framework转成了一个libsubstrate.dylib,然后XXX.dylib对libsubstrate.dylib是一个弱引用而已,这样一来,如果XXX.dylib中有使用到MSHooFunction,则不会生效,即使最终的安装包安装在越狱机上也不会生效,这也许是越狱系统在CydiaSubstrate上另外再做了些什么(区别在于XXX.dylib一个是由系统注入到目标程序,一个是本身就已经静态注入到了目标程序,由目标程序自己引入),但MSHookMessageEx不受影响

    MonkeyDev

    MonkeyDev基于Theos实现,着重说一下MonkeyApp模板:
    用的最多的CaptainHook(#import <CaptainHook/CaptainHook.h>),是monkey大人基于OC的runtime编写的一个库,所以只能针对OC方法
    如果需要hook C函数,该模板已经引入fishhook的两个文件.h和.m文件,直接 #include "fishhook/fishhook.h",至于#import <CydiaSubstrate/CydiaSubstrate.h> 已经感觉没有必要,毕竟用MonkeyApp模板最终生成的ipa包是要安装到非越狱机上的,CydiaSubstrate已失效

    相关文章

      网友评论

          本文标题:各种越狱开发工具(tweak开发工具)的理解

          本文链接:https://www.haomeiwen.com/subject/zrvirxtx.html