越狱开发准备工作

时间:2022-10-08 19:02:05
准备工作:越狱的手机(我的是4,直接甩给盘古一键越狱),在 Cydia 中安装以下插件:
  •  OpenSSH:给外界提供一个通过 ssh 接入 iOS 的途径。
  •  Cydia Substrate:防止插件闪退和卡顿。
  •  Cycript:通过-p参数attach到运行的进程上,从而进入该软件的运行时环境。
  •  adv-cmds:如果不想出现报错 -sh: ps: command not found,还是装一下吧。
先测下网络,打开终端(前提是手机与电脑处于同一网络下,比如电脑开个 wifi 给手机)
  •  ssh root@iOS设备IP地址 192.168.X.X(自己的网址)
默认密码是alpine,不安全,建议修改 (2009年的Ikee病毒,2014年 WireLurker感染的就是已越狱并且安装了 ssh 服务,但是没有更改 ssh 默认密码“alpine”,更改命令如下:
  •  passwd root  
  •  passwd mobile
此时有一种error 是IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!)
解决方案:
  •  cd ~/.ssh
  •  rm known_hosts
然后就是测试Cydia Substrate,
  • cd /Library/MobleSubstrate/DinamicLibraries
如果是-sh: cd: /Library/MobileSubstrate/DynamicLibraries: No such file or directory     说明也没成。看了别的博客,还有一种情况是 :
  •  ls -l /Library
查看里面有没有RHRevealLoader,有的话说明是正确的,继续:
  • root# ls -l /Library/RHRevealLoader
会看到libReveal.dylib。其实主要的就是这个。我在测试Cydia Substrate第1步时就报错了,重新打开个终端(cmd + N)
  •  cd /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries
  •  scp libReveal.dylib root@192.168.X.X:/Library/MobileSubstrate/DynamicLibraries/
此处地址换做手机的地址。
然后惯例,还是输入密码 :修改后的密码(反正不是 alpine)。
搞定了这个,才可以在 reveal 中查看到想翻阅的 app。

使用 Theos:
地址:https://github.com/theos/theos 
在一系列安装之前,先装好Homebrew。地址: http://brew.sh/
安装dpkg(打包) ldid(注入)
  •  brew install dpkg ldid
安装设备控制台
  •  brew install --HEAD hbang/repo/deviceconsole
安装ghost
  •  curl https://ghostbin.com/ghost.sh -o /usr/local/bin/ghost
  •  chmod +x /usr/local/bin/ghost
安装Theos
  •  git clone --recursive https://github.com/theos/theos.git
  •  cd 打算安装的文件夹
  •  git remote set-url origin https://github.com/theos/theos.git
  •  git pull origin master
  •  git submodule update --init --remote
(一般来说,如果上述已经做过了,现在是第二次使用时,直接)
  •  cd 打算安装的文件夹
配置Theos环境变量(
  •  cd theos文件
执行NIC创建模版
  •  $THEOS/bin/nic.pl
执行NIC创建模版
  •  $THEOS/bin/nic.pl
执行创建模板时,参数如下
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service

  使用tweak
* Project Name (required): 工程名字
* Package Name [com.yourcompany.myhome]: bundle identifier
* Author/Maintainer Name [***]:作者是谁
* [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:要钩的程序的bundle identifier(可以使用iFunBox来查找到info.plist文件)
* [iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:-
此时打算安装的文件夹中就会出现4个文件,
修改Makefile

处理器架构看情况,比如苹果4 的话就是armv7,机器对指令集的支持是向下兼容的(算了,还是列出来吧) 

armv6

  •     iPhone
  •     iPhone2
  •     iPhone3G
  •     第一代和第二代iPod Touch

 armv7

  •     iPhone4
  •     iPhone4S

 armv7s

  •     iPhone5
  •     iPhone5C

 arm64

  •      iPhone5S
  •      iPhone6
  •      iPhone6s
指定 SDK 版本(还是要考虑下配置问题的,总不能4的手机上8.0吧?)
   TARGET = iphone:lastest:7.0
导入框架
工程名_FRAMEWORKS = UIKit
设置THEOS_DEVICE_IP环境
THEOS_DEVICE_IP = IP 地址
效果如图:
越狱开发准备工作
配置完毕后,打开Tweak.xm,到底处写:
%hook 打算 hook 的类
   hook 的方法
%end

如果想钩其他的程序 :myHome.plist可以用于修改bundle identifier

写完代码后,在终端中进行

  • 编译:make
  • 打包:make package
  • 安装:make package install
  • 清除:make clean
如果想再次使用的话 cd 创建的项目文件位置

在执行 make。


(参考《iOS 应用逆向工程》一书,并向参考的其他博客博主致以谢意。)