1. 程式人生 > >Theos的安裝和使用-iOS逆向工程

Theos的安裝和使用-iOS逆向工程

Theos的安裝和使用-iOS逆向工程


Theos就是一套越獄開發工具包


1. Theos的安裝

1.1 安裝homebrew

https://brew.sh/

1.2 安裝dpkg

sudo brew install dpkg

1.3 安裝ldid

sudo brew install ldid

1.4 安裝Theos

sudo git clone --recursive https://github.com/theos/theos.git /opt/theos

1.5 修改許可權

sudo chown $(id -u):$(id -g) /opt/theos

1.6 加入到環境變數到 ~/.bash_profile
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH

如果出現commad not found執行: source ~/.bash_profile

1.7 $THEOS /bin/nic.pl 

1.8 cd到任意可執行目錄執行:

nic.pl

1.9 附加:如果報以下錯誤
(1)dpkg-deb: error: obsolete compression type 'lzma'; use xz instead
解決:找到/opt/theos/makefiles/package/deb.mk檔案,將_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= lzma 改為 _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= xz
(2)dpkg-deb: file `/tmp/_theos_install.deb' contains ununderstood data member data.tar.xz
解決:找到/opt/theos/makefiles/package/deb.mk檔案,將$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)
改為
$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

2. 使用

2.1 cd到任意可執行目錄執行nic.pl ,如圖

2.2 執行完成之後在theoscsdn資料夾中,將看到以下幾個檔案

2.3 打包前的工作編寫Tweak.xm

#import <SpringBoard/SpringBoard.h>

%hook SpringBoard
- (void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello 通" message:@"theos執行成功" delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil];
[alert show];
}
%end

語法補充:

  • %hook 指定需要hook的類名,以%end結尾
  • %log 用來列印log的,將資訊輸入到syslog中,如%log((NSString *)@"tong")
  • %orig 執行被hook函式的原始程式碼,類似於super.method功能
  • %group 該指令用於%hook的分組,%group後邊跟的是組名,%group也是必須以%end結尾,其中可以包含多個%hook
  • %init 該指令用來初始化某個%group,一個group只有被初始化後才可生效,init必須在hook中進行執行。
  • %ctor tweak的構造器,用來初始化,如果不顯式定義,Theos就會自動生成一個%ctor,並在其中呼叫%init(_ungrouped). 如:%ctor { %init(_ungrouped)}
  • %new 該指令用來給現有的class新增一個新的函式。與Runtime中的class_addMethod相同。
  • %c 該指令用來獲取一個類的名稱,類似於objc_getClass。


2.4 配置 Makefile

export THEOS_DEVICE_IP = 192.168.2.98  配置裝置ip

執行完成之後重啟

after-install:: 
install.exec "killall -9 SpringBoard"

#裝置ip地址,放在此檔案最上面
export THEOS_DEVICE_IP = 192.168.2.98

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = TheosCSDN
TheosCSDN_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

#執行完成後重啟SpringBoard
after-install::	 
	install.exec "killall -9 SpringBoard"


3. 編譯

make



4. 打包

make package



5. 安裝(期間輸入兩次密碼,第一次安裝輸入,第二次重啟SpringBoard輸入)

make install



5.1 安裝完成之後在手機Cydia中會出現如圖



5.2 此時在手機鎖屏介面上出現了彈框如圖



整個使用過程結束