zoukankan      html  css  js  c++  java
  • Cydia Tweak--Cydia Substrate

    http://www.jianshu.com/p/8982e9670fc6

    Cydia Substrate、MobileHooker

    • MSHookMessageEx
    • MSHookFunction
    • MobileLoader
    • Safe Mode
    • Logos

    下面进行一一说明

    四、基本原理说明

    1,Cydia Substrate 和 Mobile Substrate

    * Cydia Substrate 原名为 Mobile Substrate 已经正式更名为 Cydia Substrate。

    * 它是越狱后cydia插件/软件运行的一个基础依赖包。提供软件运行的公共库,可以用来动态替换

      内存中的代码、数据等所以iOS系统越狱环境下安装绝大部分插件,必须首先安装Cydia Substrate。

    * Cydia Substrate主要由3部分组成:MobileHooker,MobileLoader 和 safe mode。

    2,MobileHooker、Logos

    * MobileHooker用于替换覆盖系统的方法,这个过程被称为Hooking(挂钩)

    * 它主要包含两个函数:

    void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);

    void MSHookFunction(void*function,void* replacement,void** p_original);

    MSHookMessageEx 主要作用于Objective-C函数

    MSHookFunction 主要作用于C和C++函数

    Logos语法就是对此函数做了一层封装,让编写hook代码变的更直观,上面的例子用的就是logos语法。

    MSHookMessageEx 和MSHookFunction 使用方法这里就不介绍了,大家可去看书籍或者查询相关资料。

    3,MobileLoader

    * MobileLoader用于加载第三方dylib在运行的应用程序中。

    * 启动时MobileLoader会根据dylib的同名plist文件指定的作用范围,有选择的在不同进程里通过dlopen函数打开目录/Library/MobileSubstrate/DynamicLibraries/ 下的所有dylib。

    4,safe mode

    * 因为APP程序质量参差不齐崩溃再所难免,tweak本质是dylib,寄生在别人进程里,如果注入Springboard等。

      系统进程一旦出错,可能导致整个进程崩溃,崩溃后就会造成iOS瘫痪。

    * 所以CydiaSubstrate引入了安全模式,在安全模

      式下所有基于CydiaSubstratede 的三方dylib都会被禁用,便于查错与修复。

    * 本人建议自己测试的时候如果HOOK Springboard的时候一定要注意!如果出错,进入安全模式删除插件即可。

    总结:

    在我的理解就是:我们在Tweak.xm文件里用封装后的logos语法编写代码(底层利用了MSHookMessageEx,MSHookFunction函数,使用 Object-C 的runtime特性发送了method_setImplementation消息)然后theos自动打包成dylib,上传到/Library/MobileSubstrate/DynamicLibraries/里面后,重启Springboard, 利用MobileLoader寻找目录并根据dylib的同名plist文件加载里面的dylib动态库,这时候当我们再打开APP后执行方法时,方法就被替换了。

  • 相关阅读:
    sql性能查询
    ASP.Net Web应用程序与EXCEL交互时遇到的权限问题
    Connection strings for Excel 2007
    获取异常的具体出处dbms_utility.format_error_backtrace
    C#获取Excel架构信息的方法
    Oracle强杀进程
    C#游标溢出(访问数据库)解决方案。
    Visual C# 2008 调试技巧一
    【POI】修改Excel内容
    【Eclipse】在Eclipse工具中自定义类注释
  • 原文地址:https://www.cnblogs.com/feng9exe/p/6874287.html
Copyright © 2011-2022 走看看