美文网首页
Theos: iOS越狱插件开发工具

Theos: iOS越狱插件开发工具

作者: 什么东东额 | 来源:发表于2016-08-25 15:23 被阅读0次

    --------------- 前言 ---------------

    Theos是什么?
    Theos是国外大神DHowett发明的开发 iOS 越狱插件的工具,DHowett的 Theos 大幅简化了编写越狱程序的流程。DHowett介绍了如何在Mac和Linux上开发iOS越狱程序,本文将只介绍如何在Mac上开发。
    本文内容:hook springBoard 。每次springBoard重启都会执行hook 。
    本文大部分搬运自以下书籍和帖子 :
    【iOS应用逆向工程:分析与实战】沙梓社 吴航 著
    【iOS应用逆向工程(第2版)】沙梓社 吴航 著
    帖子:
    Theos:iOS越狱程序开发框架
    ios插件开发-theos环境搭建

    --------------- 正文 ---------------

    一、越狱程序开发需要安装的工具(Mac端)

    1. 安装 Xcode
    2. 安装 command line tools
    3. 安装 MacPorts
    • 那啥是MacPorts呢,Mac下面除了用dmg、pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样。MacPorts就像apt-get、yum一样,可以快速安装些软件。经常用linux服务器的人就非常的熟悉了吧,总是用这么些好人,已经替我想好了很多的东西。那为什么需要这个MacPorts,因为我们要打包deb,需要用到dpkg。我们想很快的安装dpkg,就选择了port。
      https://www.macports.org/install.php
    4. 设置配置
    export THEOS=/opt/theos  
    
    • 类似于起别名,THOES 代表 此目录
    • 每次打开终端都要重新设置一次,或者可以编辑/etc/profile文件,把上面那一行添加进去,这样不用每次打开命令行都重新设置一次。【我没找到etc文件夹】
    5. 下载theos
    sudo git clone --recursive git://github.com/DHowett/theos.git $THEOS
    
    • 会把theos下载到 Step 4 所设置的目录中,会提示你输入mac的密码。--recursive 表示包括下载子目录文件,这与参考书籍与帖子中不同,也是导致我参考书籍帖子没能成功的主要原因。
    6. 下载ldid - 用于模拟证书
    • ldid的作用是模拟给iPhone签名的流程,使得你能够在真实的设备上安装越狱的apps/hacks。

      curl -s http://dl.dropbox.com/u/3157793/ldid > ~/Desktop/ldid
      chmod +x ~/Desktop/ldid
      sudo mv ~/Desktop/ldid $THEOS/bin/ldid
      

    先是下载到桌面,然后改执行权限,然后移动到指定目录。
    由于伟大的墙,下载这个你需要自备梯子。
    注:我把这个工具下载下来放到了http://pan.baidu.com/s/1kTHoIGZ,也可以从这里下载,然后给它添加执行权限(chmod +x ldid)并移动到opt/theos/bin/这个目录下。

    7. 安装dpkg
    • dpkg能够把你的app打包成Debian Package,可以分发的Cydia的存储目录中。
      先安装homebrew,再执行下面命令

      brew install dpkg
      
    • 也可以用另一个工具Cakebrew来安装或者查看dpkg,前提也是要安装homebrew。

    二、构建 Tweak 程序

    1. 准备工作

    从手机中拷2个文件出来,可以用同步助手。

    • 动态库文件MobileSubstrate.dylib 改名 libsubstrate.dylib 拷贝到 /opt/theos/lib
    屏幕快照 2016-08-24 17.58.47.png
    • 头文件CydiaSubstrate 改名 substrate.h 拷贝到/opt/theos/include
    屏幕快照 2016-08-24 17.59.29.png
    2. 下载iOS 头文件
    • 很可能theos本身就自带了你所需要的头文件,但是,如果你编译程序的时候提示你头文件相关的问题,那你就需要准备相关的头文件了。

    • 下面命令会在当前目录新建header文件夹并下载文件

      git clone https://github.com/rpetrich/iphoneheaders.git header 
      
    屏幕快照 2016-08-25 10.39.47.png
    • 然后拷贝header文件到/opt/theos/ 目录下 ,改名include 【合并】原来的include文件夹,因为如果mac权限问题,用命令行移动会丢失一些隐藏文件,所以直接拷贝。拷贝后注意文件大小。
    屏幕快照 2016-08-25 10.40.41.png
    3. 创建项目
    export THEOS=/opt/theos
    $THEOS/bin/nic.pl
    
    • 选择 tweak
    • 填信息
    • 创建工程成功之后,mac用户目录下会生成对应工程名的文件夹
    屏幕快照 2016-08-25 10.51.58.png
    4. Tweak File
    • 一旦你创建了项目,工程目录下生成了一个叫做Tweak.xm的文件,这是个特殊的文件,hook的相关代码就将写在这个文件。
    屏幕快照 2016-08-25 11.24.56.png
    • Tweak.xm中默认所有代码都是被注释起来的,你需要把注释拿掉。
      %hook 和 %end

      %hook Springboard
      // overwrite methods here
      %end
      
    • %hook后面跟的是你要hook的类名称,以一个%end结尾。上面的代码说明我们会hook Springboard类里面的method。
      当在一个method内部的时候,%orig会调用原来的方法(original method)。

    • 你甚至可以给原来的method传递参数,例如:%orig(arg1,arg2)。如果你不调用%orig,原来的方法就绝对不会被调用。
      所以,如果你hook了SpringBoard的init方法,但是没有调用%orig。那么你的iphone就将不可用,除非你通过ssh删除你的app。

    5. 添加hook代码
    • 打开Tweak.xm,然后加上代码:
      #import <SpringBoard/SpringBoard.h>
      %hook SpringBoard
      -(void)applicationDidFinishLaunching:(id)application {
      %orig;
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"你好" message:@"欢迎使用" delegate:nil cancelButtonTitle:@"hook成功了" otherButtonTitles:nil];
      [alert show];
      }
      %end
    6. 添加 framework
    • 把环境变量、IP写入,后面可以不写

      export THEOS = /opt/theos
      export THEOS_DEVICE_IP = 192.168.1.146【设备IP】
      
    • 因为我们依靠UIKit framework来显示alert,所以需要在Makefile中加上如下一行:

      demo_FRAMEWORKS = UIKit
      
    屏幕快照 2016-08-26 18.29.10.png

    三、安装到手机上

    1.编译 make

    首先需要转到 tweak 工程目录 demo 下,然后执行命令:

      make
    
    2.打包 make package
    make package
    

    demo目录下packages文件夹会产生相应 .deb文件

    3.安装 make install

    安装前需要指定手机IP,最好手机电脑连接同一个wifi ,手机上查看IP,点开连接上的wifi右边 Ф 图标。

    export THEOS_DEVICE_IP=192.168.1.146【你的设备IP】
    

    后面root@IP 的密码是 alpine

    4.完成

    每次重启springboard 都会弹出alerView

    IMG_0006.PNG
    欢迎留言讨论,我会尽量及时回复,共同进步~~~

    相关文章

      网友评论

          本文标题:Theos: iOS越狱插件开发工具

          本文链接:https://www.haomeiwen.com/subject/jdkosttx.html