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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glt_code/article/details/78125503

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

扫描二维码关注公众号,回复: 4874763 查看本文章
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 此时在手机锁屏界面上出现了弹框如图



整个使用过程结束

猜你喜欢

转载自blog.csdn.net/glt_code/article/details/78125503