前言
一般的iOS*应用都是.ipa格式的,Deb格式是Linux下的一种打包方式,相比于.ipa格式需要证书验证那些步骤,在越狱设备下.deb*文件的安装和卸载都比较容易,用终端指令即可。
环境
macOS Sierra 10.12.3
流程
大致分为
- 创建工程
- 编译
- 安装
创建工程
越狱环境下创建工程一般有两种,一种是有GUI模板的iOSOpenDev,Github地址已经比较久时间不更新了,安装后的效果图大致如下:
还有一种是用theos,这个在《iOS应用逆向工程》中见到的比较多,本文主要也就用这种方式创建工程。
bla,bla,bla在成功安装theos后,就可以开始了
创建好的工程目录如下
依次进行简单说明
control
描述了这个deb包的一些信息
xxx.h xxx.m
这个不用说,iOS工程师应该都知道
Makefile
描述了该工程如何进行编译,引入thoes*的一些文件,参与编译的.m文件(比如*DEBAppDelegate.m),要链接的库文件(比如 UIKit),安装成功后要kill的进程,当然还有其他字段,比如处理器的架构,SDK的版本,这些在《iOS应用逆向工程》中也有说明
编译
bla,bla,bla 在.h,.m*中写完代码后,到工程目录下 *make package
如果是第一次安装编译,可能编译的过程会出现不通过的情况,只要根据报错的原因,上Google或stackoverflow搜索一般就能解决。虽然也想贴图说明我遇到的问题,但是当时没有记录下来,以后有空会再试试,换个角度想,为什么写blog呢?如果不写的话,以后忘了,就没有地方找了,一开始多留心些,后面大概就可以省力些吧。
编译成功后
多了两个目录obj和packages,package下就是编译后的deb*包名,每编译一次,后面的-1,就会++*,记录你是第几次成功编译这个包吧
安装
因为生成deb包还是要到手机上运行才行的,所以需要用到scp这个指令,越狱设备一般都会装openssh这个插件,提供远程登陆,方便数据传输。
1 | scp ./packages/com.coder.createdeb_0.0.1-1+debug_iphoneos-arm.deb root@192.168.5.105:/var/root/ |
这个问题大致是因为IP*没变,设备变了,而/.ssh/known_hosts文件中记录的是原来设备的信息,解决方法,删除/.ssh/known_hosts*中的记录
再试一次
ssh登陆设备后,查看root的家目录
已经在设备上了
1 | dpkg -i dpkg -i com.coder.createdeb_0.0.1-1+debug_iphoneos-arm.deb |
当然也可以一条龙服务,直接在Markfile的最上一行加上远程设备的IP地址
1 | THEOS_DEVICE_IP = 远程设备的IP |
安装指令改为
1 | make package install |
然后ssh输入密码的过程也可以去掉
安装成功后,手机桌面可能没有出现安装的deb文件,这时候可以执行以下指令
1 | su mobile -c uicache |
应用截图