iOS逆向之theos安装与使用

原创
2019/11/28 22:02
阅读数 144

theos是iOS系统越狱插件开发的集成环境。在mac电脑中安装配置好theos后,就可以根据需求通过theos创建相应的插件工程对iOS app进行hook。


一、theos安装及环境配置

  1. 设置theos存放目录,在终端输入如下命令

    export THEOS=/opt/theos

  2. 载theos到设置的目录中,在终端输入如下命令

  3. git clone https://github.com/theos/theos.git $THEOS

  4. 安装插件工程需要的工具ldid及dpkg,在终端输入如下命令

    brew install ldid (用于签名iOS可执行文件,在越狱iOS中取代Xcode自带的codesign)

    brew install dpkg-deb(新版的theos没有内置dpkg-deb,需要自己安装dpkg-deb。dpkg-deb是操作deb文件的工具,theos通过它将插件工程进行打包成deb文件)


二、创建插件工程测试

  1. 这里以创建一个hook iOS设备中的桌面程序SpringBoard为例,在终端输入如下命令

    /opt/theos/bin/nic.pl (运行theos/bin 目录中的ni c.pl脚本程序,用于开始创建插件工程,运行后的结果如下图所示,有各种不同工程模版可以创建)

  2. 选择 10 按回车键后,创建tweak工程,用于hook iOS app。

  3. 工程开始创建,要求我们填入要创建的插件工程的项目名,这里填写 iosregreetings,如下图所示(项目名可以根据需要任意填)

  4. 填写插件工程的包名,这里填写 com.test.iosregreetings,如下图所示(包名也可以根据需要任意填)

  5. 填写插件工程的作者名,这里填写testTheos,如下图所示(作者名也可以根据需要任意填)

  6. 填写插件工程要hook的iOS app的Bundle identifier,我们要hook的iOS app是SpringBoard,它的Bundle identifier是 com.apple.springboard,因此这里填写的Bundle identifier是 com.apple.springboard,如下图所示(具体要hook哪个iOS app就填写对应的Bundle identifier)

  7. 填写插件工程要hook的iOS app的进程名字,如下图所示(填写进程名字目的是为了当我们要hook的时候,先杀掉它,让它重新启动后能够调用到我们hook的函数,达到我们要的目的)

  8. 最后,成功创建了一个插件工程,如下图所示(接下去就可以根据我们需要开始编写插件代码,代码可直接在Tweak.x中编写,或者新建一个src目录,将代码文件放入其中)

  9. 如我们要hook SpringBoard,让它弹出一个窗口,以及打印出日志,则在Tweak.x中写入我们的hook代码如下所示

  10. #import <UIKit/UIKit.h>%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application{    %orig;    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"welcome" message:@"hellowrold" delegate:nil cancelButtonTitle:@"thanks" otherButtonTitles:nil];    [alert show];    [alert release];    NSLog(@"SpringBoard is hooked");}%end
  11. 写完代码后,则需要修改一下目录中的Makefile配置文件,填写我们iOS设备的IP、port,引用的FRAMEWORKS及代码文件名称,如下所示

  12. THEOS_DEVICE_IP = 127.0.0.1THEOS_DEVICE_PORT = 2222ARCHS = armv7 arm64TARGET = iphone:latest:8.0include $(THEOS)/makefiles/common.mk
    TWEAK_NAME = iOSREGreetingsiOSREGreetings_FILES = Tweak.xmiOSREGreetings_FRAMEWORKS = UIKitinclude $(THEOS_MAKE_PATH)/tweak.mk after-install:: install.exec "killall -9 SpringBoard"
  13. 配置完Makefile后,终端切换到插件工程的根目录中,开始编译插件工程,在终端输入编译指令

    make package install(如果插件工程代码编写正确,及配置正确,则最后编译成功并安装到我们的iOS设备中),结果如下图所示


log日志的话,可以通过 idevicesyslog 进行查看。

本文分享自微信公众号 - 网络安全技术点滴分享(gh_c85d6ae14603)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部