iOS逆向小知识: 将功能独立的tweak 合并到同一个deb 包

简介: iOS逆向小知识: 将功能独立的tweak 合并到同一个deb 包

引言

昨天讲解了如何搭建私有Cydia源来批量部署插件,今天就来聊一聊如何讲将功能独立的tweak 合并到同一个deb 包。

I、功能独立的tweak合并到同一个deb 包

搭建私有Cydia源时,发现deb 包的目录结构很简单,于是乎就产生了合并多个tweak的想法。

deb包本质是一个压缩包文件,里面包含一些特定的目录和文件.

image.png

dpkg打包时会复制当前目录下layout下所有文件和目录,layout相当于设备的根目录。

image.png

  1. 将tweak合并到同一个deb 包,只需将dylib和对应的plist文件放到layout目录。
5 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100755 Layout/Library/MobileSubstrate/DynamicLibraries/SBLockScreenViewController.dylib
 create mode 100644 Layout/Library/MobileSubstrate/DynamicLibraries/SBLockScreenViewController.plist
  1. 在%ctor 中根据 processName 进行%init group

%ctor 必须放置于最后,否则找不到group

%ctor
{
 if ([[[NSProcessInfo processInfo] processName] isEqualToString:@"knWeChat"])
  %init(wxHook);
 if ([[[NSProcessInfo processInfo] processName] isEqualToString:@"SpringBoard"])
  %init(sbHook);
}

II、基础知识储备:logos 语法

2.1 %ctor

  1. tweak的constructor,完成初始化工作;如果不显示定义,Theos会自动生成一个%ctor,并在其中调用%init(_ungrouped)。
  2. %ctor一般可以用来初始化%group,以及进行MSHookFunction等操作

2.2  %group

  1. 该指令用于将%hook分组,便于代码管理及按条件初始化分组,必须以%end结尾。
  2. 一个%group可以包含多个%hook,所有不属于某个自定义group的%hook会被隐式归类到%group_ungrouped中。

2.3  %init

该指令用于初始化某个%group,必须在%hook或%ctor内调用;如果带参数,则初始化指定的group,如果不带参数,则初始化_ungrouped.

只有调用了%init,对应的%group才能起作用!

2.4 %property

如果你想使用全局变量,推荐你尝试应用下这个熟悉。

  1. Add a property to a %subclass just like you would with @property to a normal Objective-C subclass as well as adding new properties to existing classes within %hook.
  2. %property (nonatomic|assign|retain|copy|weak|strong|getter|setter) Type name;

2.5 %subclass

  1. Subclass block - the class is created at runtime and populated with methods. ivars are not yet supported (use associated objects).
  2. The %new specifier is needed for a method that doesn't exist in the superclass. To instantiate an object of the new class, you can use the %c operator.
  3. Can be inside a %group block.

see also

目录
相关文章
|
6月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
99 1
|
6月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
91 1
|
6月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
74 0
|
6月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
98 0
|
14天前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
26 3
|
4月前
|
人工智能 搜索推荐 iOS开发
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,探索iOS 18 Beta 4新功能与改进: CarPlay壁纸、iCloud设置访问优化、相机控制记忆、隐藏文件夹设计变更、深色/浅色模式图标同步、股票应用图标调整、iPhone镜像功能增强、控制中心蓝牙切换键、AssistiveTouch新增Type to Siri等,以及Apple Intelligence暗示。开发者可通过苹果计划提前体验。
97 12
|
6月前
|
安全 开发者 iOS开发
iOS16系统手机设置开启开发者模式才能安装ipa包
iOS16系统手机设置开启开发者模式才能安装ipa包
205 1
|
6月前
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
271 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能