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 其实是这三种命令的组合 makemake packagemake install

安装期间,会让你输入两次ssh连接的密码,这是安全并且正常的,如果不知道如何使用ssh连接iphone,百度一下吧,超简单
最后,手机会重启,重启完后,不要解锁,按开关键,让手机屏幕亮起,你会看到如下图的效果

然后解开锁后,打开Cydia应用,你会看到你刚才开发的应用

4.解释下theos工程目录的文件的意思

4.1 说明Tweak.xm文件,文件的内容都是Logos语言,这里有Wiki解释
我们这里只用了几种常用的,分别解释如下

  1. %hook 指定需要hook的类名,以%end结尾
  2. %log 用来打印log的,将信息输入到syslog中,如%log((NSString *)@”Victor”)
  3. %orig 执行被hook函数的原始函数,类似于OC的语法: [super method]功能
  4. %group 该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中可以包含多个%hook
  5. %init 该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。
  6. %ctor tweak的构造器,用来初始化,如果不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped). 如:%ctor { %init(_ungrouped)}
  7. %new 该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。
  8. %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::
install.exec "killall -9 SpringBoard"
安装完后,重启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的介绍,安装和使用相关推荐

  1. iOS攻防 - (十二)LLDB和DebugServer配合使用

    iOS攻防 - (十二)LLDB和DebugServer配合使用 1.介绍 debugserver是运行在iOS上.从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC ...

  2. iOS流媒体直播整个框架介绍(HLS、RTSP)

    iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...

  3. iOS攻防——(四)class-dump-与-Dumpdecrypted-使用

    1 class dump class dump 是一个用于检查保存在 Mach-O 文件中的 objective-c 运行时信息的工具,攻防中最常用.实用的命令行工具. 1.1 class dump ...

  4. iOS Hacker 使用Theos开发tweak

    iOS Hacker 使用Theos开发tweak mkdir /opt export THEOS=/opt/theos sudo git clone git://github.com/DHowett ...

  5. iOS越狱开发theOS搭建

    iOS越狱开发theOS搭建 越狱环境搭建 TheOS Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并 ...

  6. 思科IOS软件命名规则简单介绍:

    思科IOS软件命名规则简单介绍: AAAAA-BBBB-CC-DDDD.EE 1.  AAAAA    这组字符是说明文件所适用的硬件平台, 2.  BBBB       这组字符是说明这个IOS中所 ...

  7. 电脑安装python3.74_python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  8. HarmonyOS实战[一]——原理概念介绍安装:基础篇

    [本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...

  9. iOS攻防 - (十三)基本工具的使用OpenSSH, iFile, MTerminal和syslogd

    iOS攻防 - (十三)基本工具的使用OpenSSH, usbmuxd, iFile, MTerminal和syslogd 1. OpenSSH OpenSSH是一个远程安全登录的工具 在Cydia里 ...

最新文章

  1. fiddler设置抓取https请求后打开网页总是报“你的连接不是私密链接”的解决办法
  2. 0362计算机应用基础在线考试,0362《计算机应用基础》(本科)2017年6月期末考试指导.doc...
  3. mybatis mapper.xml --注释 带参数的坑
  4. Linux学习笔记6月1日任务
  5. 【收藏】Sentinel 高可用流量管理框架、服务熔断降级等
  6. 以太坊同步节点_如何同步以太坊节点而不会犯我的错误
  7. python 函数编程
  8. python生成器yield原理_Python的迭代器和生成器 使用实例及yield的使用
  9. JQuery的Alert插件介绍
  10. leetcode 算法 Excel表列序号 python实现
  11. 验证码~正则表达式【整理汇总】
  12. android 远程调试工具,Android 远程调试工具STF——开源项目
  13. 共享服务器协议,3.5.7 文件共享服务及SMB协议
  14. 测试报告html模板,测试报告模板(标准版)
  15. Unity Navigation烘焙路面与自动寻路
  16. linux邻近进化树分析,使用evolview美化进化树
  17. C语言函数定义和函数调用
  18. nw.js html5,用nw.js构建项目
  19. 课堂笔记 Numpy酒鬼漫步
  20. 如何画出美丽漂亮的三维立体图——Mathematica的快速上手

热门文章

  1. 过敏体质也会遗传给孩子,孕期妈妈应该尽早预防
  2. PyQt5_pyqtgraph蜡烛图
  3. 项目开发流程(简述)
  4. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h
  5. ARC101E Ribbons on Tree 容斥原理+dp
  6. 如何做好“强势型”领导的向上管理?
  7. 路由器NAT模式和路由模式的区别
  8. Vue 实例实战之 Vue webpack 仿去哪儿网App页面开发(应用中的几个页面简单实现)
  9. 古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力
  10. uni-app 即时聊天:朋友圈