iOS逆向工程工具之Theos

昨天开始安装theos,网上资料好多,不知是好还是不好,开始根据【ios应用逆向工程的书】安装,发现已经过时。。然后各种百度,遇到很多坑,都不知从何说起~

先将参考链接附到下面供参考:

http://blog.csdn.net/woaizijiheni/article/details/49332851
http://www.cnblogs.com/ludashi/p/5714095.html
https://my.oschina.net/iq19900204/blog/618713

一、下面分享下环境搭建过程:

1、给xcode安装 command line tools

https://developer.apple.com/downloads/?=Command%20Line%20Tools%20

2、安装dpkg、ldid
sudo brew install dpkg ldid

有些推荐用macports安装dpkg,我安装了macports,发现安装过程比较复杂,坑比较多,不是很推荐。

3、下载libsubstrate.dylib 拷贝到 /opt/theos/lib

https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib

4、Theos安装

 git clone --recursive https://github.com/theos/theos.git

下载好Theos后,要修改一下文件的权限,如下命令

sudo chown $(id -u):$(id -g) theos

至此,Theos安装完毕,就可以开启你的Theos之旅了。(希望你也如此)

二、使用Theos创建、编译、安装使用工具

上面我们搭建好Theos的环境后,接下来就开始使用我们的Theos来做些事情了。接下来我们将要使用Theos来创建一个使用工具,并进行编译,编译后安装到我们的越狱手机上。接下来来看一下这一系列的步骤

1.配置$THEOS
export THEOS=theos文件所在路径

例如:

export THEOS=/opt/theos
2.新建工程

用终端cd到你工程文件夹下,

$THEOS/bin/nic.pl

有12个模版,我们直接建tweak,选11,之后按照提示填写就好,⚠️尽量不要用字母和+-号之外的符号,否则后面编译有可能报错。

3、编译打包前的准备工作
export SDKVERSION=9.3
export THEOS_DEVICE_IP=ios_device_ip

接着我们要做一些编译打包前的准备工作,SDKVERSION是编译工程时所使用的SDK,因为本机Xcode中是9.3的SDK,所以我们知道的SDKVERSION是9.3。指定完编译所需的SDK后,我们需要指定打包后的文件所安装设备的IP地址,使用THEOS_DEVICE_IP来指定。下方的IP地址是一个越狱手机的IP地址。
我感觉直接写到Makefile文件中也是可以的。
在指定这个设备IP之前,你要保证你的越狱设备安装了OpenSSH,并且可以在Mac的终端上进行ssh登录。
mac连接iphone,在终端输入

ssh root@192.168.30.xx

之后让输入密码,密码默认alpine,可以连接就ok.

2.创建成功后,在工程目录下,修改MakeFile 修改添加头部

THEOS_DEVICE_IP=192.168.30.xx
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0
THEOS_DEVICE_IP = 192.168.30.xx
3.编写TWeak.xm文件代码
%hook SBLockScreenDateViewController //需要hook的头文件,以%end结尾,以下方法就是我们要挂钩子的方法

- (void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{
//%orig;执行该方法原始代码,如果去掉就执行了.还可以修改原始参数;
%orig(@"iOS 8 App Reverse Engineering", arg2);
NSLog(@"askMe:reboot springBoard");
}
%end

%hook SpringBoard

- (void)applicationDidFinishLaunching:(id)application{
%orig;
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Welcome" message:@"HelloWorld!" delegate:nil cancelButtonTitle:@"Thanks" otherButtonTitles:nil];
[alert show];
[alert release];
NSLog(@"askMe:CheckID starting!");
}
%end
4.进行编译
make
5.进行打包
make package

编译完成后,我们要讲项目进行打包,这样我们的越狱设备才能进行安装。下方是调用make package命令进行项目的打包。打包后会生成后缀名为deb的安装包。

$6.安装

make install

手机重启之后,是不是多了一个alertView,锁屏界面的日期是不是变成了"iOS 8 App Reverse Engineering"

坑一:

一般情况下会安装失败 ,错误是:


error1.png


解决的办法是:

https://github.com/moloch--/theos/blob/master/makefiles/package/deb.mk

下载下来替换到目录

/opt/theos/makefiles/package/

坑二:

如果报以下错误


error2.png

下载dm.pl文件

https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl

然后重命名为dpkg-deb.pl,放到目录下面

/opt/theos/bin/

坑三:

如果还是报错:


error3.png

参考

http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununderstood-data-member

我虽然没找到一模一样的那行,但是我把
$(ECHO_NOTHING)COPYFILE_DISABLE...这行直接换成

$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

就好了。

坑四:

记得还报了一个错,

Obsolete compression type ‘lzma’; use xz instead

解决办法:
修改

opt/theos/makefiles/package/deb.mk
第六行:THEOSPLATFORM_DPKG_DEB_COMPRESSION ?= lzma
把最后lzma 改成 xz 就可以了

但是如果坑一填了(deb.mk都换了)好像就解决这个问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值