13

iOS安全:Tweak开发环境及入门

 2 years ago
source link: https://easeapi.com/blog/blog/155-tweak.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

iOS安全:Tweak开发环境及入门

2021-08-26 12:00:11 / easeapi / 错误反馈

Tweak原指微调以增强电子系统功能的实用工具;在iOS中,Tweak是广泛使用的越狱插件开发工具,通过创建dylib注入到宿主进程,完成各种HOOK操作。阅读本文将快速入门Tweak开发。

Tweak开发环境

Theos

Theos是一个越狱开发工具包,用来创建Tweak项目。

export THEOS=/opt/theos
git clone https://github.com/theos/theos.git $THEOS
cd /opt/theos
git submodule update --init --recursive

ldid是签名工具,运行在越狱手机上用于取代XCode自带的codesign。下载之后放在/opt/theos/bin目录,并赋予可行性权限:

sudo chmod 777 /opt/theos/bin/ldid

OpenSSH

在越狱iPhone Cydia中搜索OpenSSH安装,安装完成即可通过ssh登录到iPhone。

/*
保持mac和iPhone链接同一个WiFi。iOS上用户有两个:root和mobile。密码默认是:alpine。
*/
ssh mobile@iphone's IP

CydiaSubstrate

CydiaSubstrate是HOOK框架,为进程注入指定了标准接口,是Tweak项目的依赖库。

在越狱iPhone上通过OpenSSH拷贝CydiaSubstrate.framework中的两个库文件到/opt/theos/lib/,并重命名。

sudo scp mobile@(iphone's IP):/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate* /opt/theos/lib/
sudo mv CydiaSubstrate libsubstrate.dylib

dpkg-deb

deb是越狱开发安装包的标准格式,dpkg-deb是用于制作deb安装包的工具。下载dm.pl,重命名为dpkg-deb,放到/opt/theos/bin/目录下,赋予其可执行权限:

Tweak项目入门

新建Tweak项目

环境准备好之后,新建一个工作目录,创建一个Tweak项目:

/opt/theos/bin/nic.pl

选择iphone/tweak序号,依此输入工程名称、包名、作者名称等信息即可创建完成。默认会创建四个文件:

  • control

包含工程名称、包名、作者名称、版本号依赖等。

  • Makefile

编译脚本文件。

  • Tweak.x

采用Logos语法的Tweak源代码文件,类似于C/C++源代码。通过Makefile中的[Project Name]_FILES指定参与编译的源文件。有两种格式的后缀:x和xm:x代表源文件支持Logos和C语法;xm代表源文件支持Logos和C/C++语法。

  • [Project Name]Test.plist
{ Filter = { Bundles = ( "com.apple.springboard", "com.easeapi.app" ); }; }

指定该Tweak项目将注入那些APP。

exec of lzma -c1 failed:

open2: exec of lzma -c1 failed: No such file or directory at /opt/theos/bin/dm.pl line 116.
make: *** [internal-package] Error 2

vim $THEOS/makefiles/package/deb.mk
_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= lzma
//修改为:
_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip

Makefile解释

include $(THEOS_MAKE_PATH)/tweak.mk

Theos工程有Application、Tweak和Tool三种类型,对应的.mk文件分别是application.mk、tweak.mk和tool.mk。

ARCHS = armv7 arm64

指定处理器架构。

TARGET := iphone:clang:latest:7.0

指定SDK版本。

[Project Name]_FRAMEWORKS = UIKit CoreTelephony

导入公开的framework。[Project Name]请替换成项目名称。

[Project Name]_PRIVATE_FRAMEWORKS = ChatKit IMCore

导入私有framework。如果导入的是自己的framework等,需要把framework放在/opt/theos/vendor/lib目录,头文件放在/opt/theos/vendor/include或当前工程根目录都可以。

[Project Name]_FILES = One.cpp Tweak.x

指定参与编译的文件。

[Project Name]_LDFLAGS = -lz –lsqlite3.0

配置链接库。

make package

编译打包,实际上是先执行make,再执行dpkg-deb。make package之后会生成.thos/_目录,就是deb的格式。

make package install

在Makefile最前面添加:

THEOS_DEVICE_IP = "iOS IP"
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0

执行make package install就可以将动态库安装到iOS越狱iOS设备上,目录为:

/Library/MobileSubstrate/DynamicLibraries

Logos语法

%hook

指定需要HOOK的class,必须以%end结尾。

在%hook和%end内使用,打印log。

%orig

在%hook和%end内使用,执行被hook的函数的原始代码。

%ctor

类似C/C++的constructor函数,完成初始化工作。

在%hook和%end内使用,给class添加函数。

iOS安全:iOS APP注入动态库重打包(非越狱)
iOS安全:使用dumpdecrypted/Clutch 砸壳
iOS安全:修改Mach-O
iOS安全:LC_LOAD_DYLIB和LC_ID_DYLIB



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK