theos 是ios在越狱环境下,开发的工程管理工具 https://github.com/DHowett/theos
下面分享下环境搭建过程:
给xcode安装 command line tools
从10.8开始xcode的command line tools就要自己安装了,如果没安装的话,会出现各种问题,比如gcc没有安装,等等各种诡异的问题。新手很是害怕。
https://developer.apple.com/downloads/?=Command%20Line%20Tools%20
安装 macports
macports是用于安装dpkg的快速安装工具,还可以安装其他很多工具
http://distfiles.macports.org/MacPorts
设置配置
export THEOS=/opt/theos
4.下载theos
sudo svn co http://svn.howett.net/svn/theos/trunk $THEOS
5.下载ldid - 用于模拟证书
curl -s http://dl.dropbox.com/u/3157793/ldid > ~/Desktop/ldid chmod +x ~/Desktop/ldid mv ~/Desktop/ldid $THEOS/bin/ldid
6.安装dpkg
sudo port install dpkg.
7.下载libsubstrate.dylib 拷贝到 /opt/theos/lib
https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib
8.下载substrate.h 拷贝到 /opt/theos/header
https://github.com/kokoabim/iOSOpenDev/blob/master/include/substrate.h
环境基本完成,如果需要hook一些特殊的头文件,自己可以使用class_dump_z解析出来放到header里面,也可以在google中找
---------------------------------------------------凌乱的分割线------------------------------------------
1.创建工程
$THEOS/bin/nic.pl NIC 1.0 - New Instance Creator —————————— [1.] iphone/application [2.] iphone/library [3.] iphone/preference_bundle [4.] iphone/tool [5.] iphone/tweak Choose a Template (required): 5
选择com.apple.springboard开发桌面插件
2.创建成功后,在工程目录下,修改MakeFile 修改头部第一行
export ARCHS = armv7 export TARGET=iphone:latest:5.1 include $(THEOS)/makefiles/common.mk
3.编写TWeak.xm文件代码
%hook SBScreenShotter - (void)saveScreenshot:(BOOL)screenshot { %orig; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@"Welcome to your iPhone love" delegate:nil cancelButtonTitle:@"okokok" otherButtonTitles:nil]; [alert show]; [alert release]; } %end
%hook后面跟的是你要hook的类名称,以一个%end结尾。上面的代码说明我们会hook Springboard类里面的method。 %orig 当在一个method内部的时候,%orig会调用原来的方法(original method)。你甚至可以给原来的method传递参数,例如:%orig(arg1,arg2)。如果你不调用%orig,原来的方法就绝对不会被调用。所以,如果你hook了SpringBoard的init方法,但是没有调用%orig。那么你的iphone就将不可用,除非你通过ssh删除你的app。
上面代码的作用就是在桌面截屏的时候弹出一个对话框!,当然,如果你不知道的想要hook的函数是什么的话,请使用各种分析工具获得!,可以看上面几篇文章
4.增加frameWork
那是因为我们依靠UIKit framework来显示alert,所以需要在Makefile中加上如下一行: WelcomeWagon_FRAMEWORKS = UIKit
5.打包
cd到工程目录下,make,make成功后,使用
设置配置安装
export THEOS_DEVICE_IP=10.242.125.7 (这是手机的IP)
make package install
继续远程安装。一般情况下会安装失败 ,错误是:
/Users/TanghaoTsui/Code/coffee/firstdemo/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries. install.exec "cat > /tmp/_theos_install.deb; dpkg -i /tmp/_theos_install.deb && rm /tmp/_theos_install.deb" < "./com.yourcompany.firstdemo_0.0.1-1_iphoneos-arm.deb" [email protected]'s password: (Reading database ... 12996 files and directories currently installed.) Unpacking com.yourcompany.firstdemo (from /tmp/_theos_install.deb) ... dpkg-deb: file `/tmp/_theos_install.deb' contains ununderstood data member data.tar.xz , giving up dpkg: error processing /tmp/_theos_install.deb (--install): subprocess dpkg-deb --fsys-tarfile returned error exit status 2 Errors were encountered while processing: /tmp/_theos_install.deb make: *** [internal-install] Error 1
解决的办法是
并且已经把https://github.com/moloch--/theos/blob/master/makefiles/package/deb.mk 下载下来替换
到目录
/opt/theos/makefiles/package/
就可以了。
如果还不行,就下载 https://github.com/DHowett/dm.pl/blob/master/dm.pl 到目录 /opt/theos/bin下