iOS攻防 - (十)theos的介绍,安装和使用
iOS攻防 - (十)Theos的介绍,安装和使用
1.介绍
Theos就是一套越狱开发工具包
2.安装
2.1 下载地址 : https://github.com/iOS-Reverse-Engineering-Dev/theos
但是一般我们使用命令下载并安装
export THEOS=/opt/theos
sudo git clone https://github.com/iOS-Reverse-Engineering-Dev/theos $THEOS
2.2 等待下载完成后,下载ldid,并赋予权限
sudo brew install ldid
sudo chmod 777 /opt/theos/bin/ldid
2.3 生成libsubstrate.dylib库
sudo /opt/theos/bin/bootstrap.sh substrate
如果生成失败,则从越狱的iPhone上的Cydia下载Cydia Substrate,然后拷贝 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate
到OS X的目录 /opt/theos/lib/
,并修改名称为 libsubstrate.dylib
2.4 配置dpkg-deb
下载地址 : https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl
新建一个文件,名称:dpkg-deb
内容是刚下载dm.pl文件里的全部
拷贝dpkg-deb
文件到目录 /opt/theos/bin/
,并赋予它执行权限
sudo chmod 777 /opt/theos/bin/dpkg-deb
2.5 在额外下载5个模板到theos里
下载地址 : https://github.com/DHowett/theos-nic-templates/archive/master.zip
下载完后,把5个模板都拷贝到 /opt/theos/templates/iphone/
目录下。
如果想自定义模板,看这个教程 :http://iphonedevwiki.net/index.php/NIC#How_to_set_default_values
3.使用theos
3.1 在终端输入以下命令可以看到
/opt/theos/bin/nic.pl
3.2 这里我们做一个最简单的栗子,每个应用启动时都会弹出一个UIAlertView
根据步骤3.1的命令,然后我们选择9,然后根据提示输入
(1)输入你的工程的名字(Project Name,必选项),此处我们工程的名字是iOSReGreetings
(2)输入包名(Package Name),包名的命名规则一般是你们公司域名的到这写,如: com.victor.iosregreetings;切记:包名一定要小写,如果在使用make package
时发生错误,请看这里 http://bbs.iosre.com/t/theos/2049
(3)输入作者的名字(Author/Maintainer Name), 此处我们输入的是: Victor
(4)然后输入com.apple.springboard,因为这里是拿SpringBoard举栗子,实际中,你要填写你想hook的应用的Bundle Identifier
(5)直接回车
创建完成后,如下目录显示
以下准备修改一些文件的内容,你暂时不用管什么意思,照着写就行,后面我会说明这些参数和内容的具体意思,其中注意安装到越狱的iphone时,连接的IP地址是你的手机连接到WiFi的IP地址
3.3 修改Tweak.xm文件
%hook SpringBoard
- (void)applicationDidFinishLaunching:(id)application {
%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Come to http://bbs.iosre.com for more fun!" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show];[alert release]; }
%end
3.4 修改Makefile文件
注意:第一行 export THEOS_DEVICE_IP = 10.18.136.168
这个IP,是你的越狱iphone连接的WiFi IP地址
export THEOS_DEVICE_IP = 10.18.136.168
export ARCHS = armv7 arm64
export TARGET = iphone:clang:latest:8.0include theos/makefiles/common.mkTWEAK_NAME = iOSReGreetings
iOSReGreetings_FILES = Tweak.xm
iOSReGreetings_FRAMEWORKS = UIKitinclude $(THEOS_MAKE_PATH)/tweak.mkafter-install::install.exec "killall -9 SpringBoard"
3.5 修改control文件
Package: com.victor.iosregreetings
Name: iOSReGreetings
Depends: mobilesubstrate, firmware (>= 8.0)
Version: 1.0
Architecture: iphoneos-arm
Description: This is my first tweak project , very simple!
Maintainer: Victor
Author: Victor
Section: Tweaks
Homepage: http://www.googleplust.party
3.6 打包,并安装到iPhone
cd iOSReGreetings/
make package install
make package install
其实是这三种命令的组合 make
、make package
和 make install
安装期间,会让你输入两次ssh连接的密码,这是安全并且正常的,如果不知道如何使用ssh连接iphone,百度一下吧,超简单
最后,手机会重启,重启完后,不要解锁,按开关键,让手机屏幕亮起,你会看到如下图的效果
然后解开锁后,打开Cydia应用,你会看到你刚才开发的应用
4.解释下theos工程目录的文件的意思
4.1 说明Tweak.xm文件,文件的内容都是Logos语言,这里有Wiki解释
我们这里只用了几种常用的,分别解释如下
- %hook 指定需要hook的类名,以%end结尾
- %log 用来打印log的,将信息输入到syslog中,如%log((NSString *)@”Victor”)
- %orig 执行被hook函数的原始函数,类似于OC的语法: [super method]功能
- %group 该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中可以包含多个%hook
- %init 该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。
- %ctor tweak的构造器,用来初始化,如果不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped). 如:%ctor { %init(_ungrouped)}
- %new 该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。
- %c 该指令用来获取一个类的名称,类似于objc_getClass。
4.2 说明Makefile文件,指定一些frameworks和libraries
1. export THEOS_DEVICE_IP = 10.18.136.168
指定要导入到越狱设备IP
2. export ARCHS = armv7 arm64
指定CPU架构,不同的CPU架构用空格分开
3. export TARGET = iphone:clang:latest:8.0
指定SDK版本,latest意思是Base SDK使用当前MAC OS X最新的,8.0表示最低发布版本
4. include theos/makefiles/common.mk
固定模式,别修改此文件
5. TWEAK_NAME = iOSReGreetings
项目名称,创建时就指定了,以后别再修改了
6. iOSReGreetings_FILES = Tweak.xm
tweak项目的源文件,不能指定头文件,但是可以如下这样写
7. iOSREProject_FILES = Tweak.xm Hook.xm New.x ObjC.m ObjC++.mm
8. iOSReGreetings_FRAMEWORKS = UIKit
编写Tweak.xm文件时,依赖的公开的API库
9. iOSReGreetings_PRIVATE_FRAMEWORKS = UIKit
编写Tweak.xm文件时,依赖的私有API库
10. include $(THEOS_MAKE_PATH)/tweak.mk
根据不同的theos项目类型,他可以是application.mk, tweak.mk and tool.mk
11. after-install::
安装完后,重启SpringBoard
install.exec "killall -9 SpringBoard"
如果你使用的库在iOS7,iOS8, iOS9都不一样的的话,那就需要用
函数dlopen(), dlsym() 和 dlclose() 来解决这个问题,运行时动态加载
4.3 说明control文件
control文件中存储的内容记录了deb包管理系统所需的基本信息,会被打包进deb包里。包含:包唯一标识符,包名,依赖,版本,架构,描述,作者,主页等等
4.5 编译,打包和安装
编译
make
打包
make package
安装
make install
以上三条命令合并一条是
make package install
清除命令
make clean 会删除项目打包时的文件
rm *.deb 会删除.deb安装包
iOS攻防 - (十)theos的介绍,安装和使用相关推荐
- iOS攻防 - (十二)LLDB和DebugServer配合使用
iOS攻防 - (十二)LLDB和DebugServer配合使用 1.介绍 debugserver是运行在iOS上.从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC ...
- iOS流媒体直播整个框架介绍(HLS、RTSP)
iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...
- iOS攻防——(四)class-dump-与-Dumpdecrypted-使用
1 class dump class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用.实用的命令行工具. 1.1 class dump ...
- iOS Hacker 使用Theos开发tweak
iOS Hacker 使用Theos开发tweak mkdir /opt export THEOS=/opt/theos sudo git clone git://github.com/DHowett ...
- iOS越狱开发theOS搭建
iOS越狱开发theOS搭建 越狱环境搭建 TheOS Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并 ...
- 思科IOS软件命名规则简单介绍:
思科IOS软件命名规则简单介绍: AAAAA-BBBB-CC-DDDD.EE 1. AAAAA 这组字符是说明文件所适用的硬件平台, 2. BBBB 这组字符是说明这个IOS中所 ...
- 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- HarmonyOS实战[一]——原理概念介绍安装:基础篇
[本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...
- iOS攻防 - (十三)基本工具的使用OpenSSH, iFile, MTerminal和syslogd
iOS攻防 - (十三)基本工具的使用OpenSSH, usbmuxd, iFile, MTerminal和syslogd 1. OpenSSH OpenSSH是一个远程安全登录的工具 在Cydia里 ...
最新文章
- fiddler设置抓取https请求后打开网页总是报“你的连接不是私密链接”的解决办法
- 0362计算机应用基础在线考试,0362《计算机应用基础》(本科)2017年6月期末考试指导.doc...
- mybatis mapper.xml --注释 带参数的坑
- Linux学习笔记6月1日任务
- 【收藏】Sentinel 高可用流量管理框架、服务熔断降级等
- 以太坊同步节点_如何同步以太坊节点而不会犯我的错误
- python 函数编程
- python生成器yield原理_Python的迭代器和生成器 使用实例及yield的使用
- JQuery的Alert插件介绍
- leetcode 算法 Excel表列序号 python实现
- 验证码~正则表达式【整理汇总】
- android 远程调试工具,Android 远程调试工具STF——开源项目
- 共享服务器协议,3.5.7 文件共享服务及SMB协议
- 测试报告html模板,测试报告模板(标准版)
- Unity Navigation烘焙路面与自动寻路
- linux邻近进化树分析,使用evolview美化进化树
- C语言函数定义和函数调用
- nw.js html5,用nw.js构建项目
- 课堂笔记 Numpy酒鬼漫步
- 如何画出美丽漂亮的三维立体图——Mathematica的快速上手
热门文章
- 过敏体质也会遗传给孩子,孕期妈妈应该尽早预防
- PyQt5_pyqtgraph蜡烛图
- 项目开发流程(简述)
- ①Linux简明系统编程(嵌入式公众号的课)---总课时12h
- ARC101E Ribbons on Tree 容斥原理+dp
- 如何做好“强势型”领导的向上管理?
- 路由器NAT模式和路由模式的区别
- Vue 实例实战之 Vue webpack 仿去哪儿网App页面开发(应用中的几个页面简单实现)
- 古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力
- uni-app 即时聊天:朋友圈