昨天開始安裝theos,網(wǎng)上資料好多吏口,不知是好還是不好统台,開始根據(jù)【ios應用逆向工程的書】安裝雕擂,發(fā)現(xiàn)已經(jīng)過時。贱勃。然后各種百度井赌,遇到很多坑谤逼,都不知從何說起~
先將參考鏈接附到下面供參考:
http://blog.csdn.net/woaizijiheni/article/details/49332851
http://www.cnblogs.com/ludashi/p/5714095.html
https://my.oschina.net/iq19900204/blog/618713
一、下面分享下環(huán)境搭建過程:
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纹坐,發(fā)現(xiàn)安裝過程比較復雜枝冀,坑比較多,不是很推薦耘子。
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創(chuàng)建糙臼、編譯焕妙、安裝使用工具
上面我們搭建好Theos的環(huán)境后,接下來就開始使用我們的Theos來做些事情了弓摘。接下來我們將要使用Theos來創(chuàng)建一個使用工具焚鹊,并進行編譯,編譯后安裝到我們的越獄手機上韧献。接下來來看一下這一系列的步驟
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.創(chuàng)建成功后铆惑,在工程目錄下范嘱,修改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;執(zhí)行該方法原始代碼,如果去掉就執(zhí)行了.還可以修改原始參數(shù);
%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
編譯完成后,我們要講項目進行打包鸭津,這樣我們的越獄設備才能進行安裝彤侍。下方是調(diào)用make package命令進行項目的打包肠缨。打包后會生成后綴名為deb的安裝包逆趋。
$6.安裝
make install
手機重啟之后,是不是多了一個alertView,鎖屏界面的日期是不是變成了"iOS 8 App Reverse Engineering"
坑一:
一般情況下會安裝失敗 ,錯誤是:
解決的辦法是:
https://github.com/moloch--/theos/blob/master/makefiles/package/deb.mk
下載下來替換到目錄
/opt/theos/makefiles/package/
坑二:
如果報以下錯誤
下載dm.pl文件
https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl
然后重命名為dpkg-deb.pl,放到目錄下面
/opt/theos/bin/
坑三:
如果還是報錯:
參考
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都換了)好像就解決這個問題了脑慧。
ps.......關于輸入密碼太麻煩一事請移駕
http://www.reibang.com/writer#/notebooks/7512122/notes/7503499