使用theos 写的 tweak中加入第三方的framework怎么做

使用theos 写的 tweak中加入第三方的framework怎么做,第1张

根据 Better Swift support #2196 的描述,Theos 已经可以编译 Swift 文件,但是氏手在具体开发中出现了一些问题。

过程

使用 Nic.pl 生成基础模板(均采用默认设定),然后将 Tweak.xm 更改为 Tweak.swift

自定义 Makefile 文件,核核仿具体如下:

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = Sample

Sample_FILES = Tweak.swift

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::

install.exec "killall -9 SpringBoard"

首次编译后,产生错误:error: module file's minimum deployment target is ios7.0 v7.0

更新 Makefile 文件,具体如下:

TARGET = iphone:latest:latest

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = Sample

Sample_FILES = Tweak.swift

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::

install.exec "killall -9 SpringBoard"

再次编译后,改纤产生错误:error: missing required module 'os.log'

环境说明

Operating System: macOS Sierra 10.12.3 (16D32)

Platform: macOS

Target Platform: iOS

Xcode Version: 8.2.1 (8C1002)

Toolchain Version: Xcode 8.2.1

SDK Version: 10.2

在iOS逆向工程初学阶段,我们的目标主要是 Application Dynamic Library(以下简称dylib) Daemon 这三类二进制文件,对它们的了解越深入, 逆向工程就会越顺利。这三类文件分工不同,其目录 结构和文件权限也有一些区别。

Application就是我们最熟悉的App了。了解下面的几个App相关概念,是

开始逆向工程前的必备工作。

在Xcode工程里导入的各种framework,链接的各种lib,其实本质都是dylib。如果把焦点转移到越狱iOS中,Cydia里的各种tweak无一不是以dylib的形式工作的,正是这些tweak的存在让我们能够随意定制自己的iOS。在逆向工程中,我们会频繁接触各种dylib,因此有必要了解一些相关知识。

在iOS中,lib分为static和dynamic两种,其中staticlib在编译阶段成为App可执行文件的一部分,会增加可执行文件的大小。因为App尺寸变大,启动时需要加载的内容变多,所以可能会导致App启动变慢。dylib则相对“智能”一些,它不会改变可执行文件的大小,只有当App需要用到这个dylib时,iOS才会把它加载进内存,成为App进程的一部分。

值得一提的是,dylib虽然充斥在iOS的各个角落,是逆向工程的重要目标类型,但其本身并不是可执行文件,不能独立运行,只能为别的进程服务,而且它们寄生在别的进程里,成为了这个进程的一部分。因此,dylib的权限是由它寄生的那个App决定的,同一个dylib寄生在系统App和StoreApp里时的权限是不同的。

例如,你写了一个Instagram的tweak,用来把喜欢的图片保存在本地,如果保存目录是 /var/mobile/Containers/Data/ 下App对应的Documents目录,那么因为Instagram是一个StoreApp,这样的 *** 作是没有问题的,tweak能够正常工作。而如果保存态庆目录是 /var/mobile/Documents ,那么高中在兴高采烈地保存了一大堆美图,准备回头细细品味时,你就会发现/var/mobile/Documents里啥图片也没有—— *** 作都被sandbox给禁掉了。

Daemon为后台运行而生,给用户提供了各戚闭山种“守护”,如imagent保障了iMessage的正确收发,mediaserverd处理了几乎所有的音频、视频,syslogd则用于记录系统日志等。

iOS中的daemon主要由一个可执行文件和一个plist文件构成。iOS的根进程是launchd,它会在开机时检查/System/Library/LaunchDaemons和/Library/LaunchDaemons下所有格式符合规定的plist文件,然后启动对应的daemon。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12325802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存