/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
使用brew安装 ldid
brew install ldid
添加环境变量
open ~/.zshrc
注意,mac新版系统环境变量不再是~/.bash_profile
在文件里添加一行,新建环境变量THEOS,让这个变量等于你硬盘下存储theos的文件路径,例如我存到下面的路径里,PATH是把theos安装文件夹下的bin当做默认可执行目录,在任意位置都能执行theos文件夹下bin下的文件,
因为这个bin目录下的nic.pl会创建文件到bin目录下,并且bin目录下不允许用nic.pl创建文件,所以要把bin目录添加的PATH环境变量,这样就可以在其他文件夹下执行bin下的文件nic.pl了
export THEOS=/Volumes/SN7501T/越狱相关代码/theos
export PATH=$THEOS/bin:$PATH
冒号:$PATH是引用以前的PATH值,冒号是添加
把冒号左边的添加到PATH里面,如果不加:$PATH,就会把$PATH覆盖
让文件~/.zshrc生效
source ~/.zshrc
安装 theos
使用递归下载 git clone --recursive加github地址 加刚才的环境变量$THEOS,把theos 下载到你的硬盘上
git clone --recursive git@github.com:theos/theos.git $THEOS
如果递归安装报错 443 没有权限下载,请查看我写的这篇文章,可以帮你分开下载子模块
git clone --recursive递归下载github出现443子模块无权限下载的解决方法
安装完以后,因为上面设置了环境变量$PATH,所以现在在任何目录下,都可以执行nic.pl指令,注意这个指令不要再theos文件夹下执行
安装好以后执行在任意目录下执行.theos/bin目录下不能执行这条命令,会提示在你其他目录新建项目
nic.pl
出现下面界面代表已经安装成功
运行要hook的app ,例如下面这个app neteasemusic
cycript -p neteasemusic
获取app的bundleID
[NSBundle mainBundle].bundleIdentifier
获得id :com.netease.cloudmusic
执行theos指令nic.pl在mac端新建一个文件夹,在里面输入命令
nic.pl
会列出一个列表
tdw@tdwdeMini-m1 hook % nic.pl
NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/activator_event
[2.] iphone/activator_listener
[3.] iphone/application_modern
[4.] iphone/application_swift
[5.] iphone/control_center_module-11up
[6.] iphone/cydget
[7.] iphone/flipswitch_switch
[8.] iphone/framework
[9.] iphone/library
[10.] iphone/notification_center_widget
[11.] iphone/notification_center_widget-7up
[12.] iphone/preference_bundle_modern
[13.] iphone/theme
[14.] iphone/tool
[15.] iphone/tool_swift
[16.] iphone/tweak
[17.] iphone/tweak_with_simple_preferences
[18.] iphone/xpc_service
[19.] iphone/xpc_service_modern
Choose a Template (required):
hook功能选择tweek
选择 iphone/tweak的位置 输入16
Project Name (required): 是自己起的项目名: music
Package Name 是你自己起的bundle名字
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: 这个输入上面用cycript获取的要破解的app的bundleID
下面的都输入回车就行了,显示如下,出现Done.代表新建项目完成
Project Name (required): music //自己起的项目名
Package Name [com.yourcompany.music]: com.tdw.music //自己起的包名
Author/Maintainer Name [谭迪文]:
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.netease.cloudmusic //app原来的bundle ID
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
Instantiating iphone/tweak in music/...
Done.
建立好以后这个文件夹是这样出来4个文件,如下图:
用Sublime Text打开Makefile文件,添加2个环境变量,因为用usb链接的,所以就填写localhost的本机ip:127.0.0.1 ,端口是usb映射的端口,我映射的是20000
export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=20000
也可以把这两行添加到环境变量里,这样就不需要每次makefile都添加这2行了
open ~/.zshrc
然后再里面添加这2行,再让文件生效
source ~/.zshrc
修改
打开Tweak.x文件,把里面开头结尾的注释符号手动去掉,然后选择objective-C查看文件,如下图
我写的这篇文章内容详细写了如何脱壳
ios脱壳工具frida使用教程和各种踩坑总结(app store可用脱壳)
是否需要脱壳,请直接查看上面这篇文章最下面,使用otool macho-文件名 -l | grep crypt 指令查看app是否加密
使用frida之后会在frida-ios-dump-master文件夹下获得.ipa文件如下图
把.ipa文件重命名为.zip文件,然后解压缩,如下图
在解压缩之后的文件夹下会找到脱壳后的包.
用终端进入这个包的目录,执行命令
class-dump -H 包名 -o 导出目录名
例如:
class-dump -H neteasemusic -o headers
我在下面这篇文章中写了如何使用class-dump导出.h文件
ios逆向工具Class-dump的安装和导出.h文件的教程
执行class-dump后,会在包的目录下找到,我们导出的目录headers,里面有这个app的.h头文件,如下图:
reveal的使用教程请查看我写的下面这篇文章
ios逆向视图查看器Reveal安装和使用教程
例如,我要改的视图是这个class: NMHomeBannerEntityCell
我把上面用class-dump导出的.h文件中找到这个.h文件,把所有.h文件的文件夹拖拽进Sublime Text中,然后command+p,搜索:NMHomeBannerEntityCell.
查找到NMHomeBannerEntityCell.h文件
在里面,找到,我要改的方法,例如我修改init方法
- (id)initWithFrame:(struct CGRect)arg1;
我把,类名NMDiscoveryBannerView,复制进theos创建的Tweak.x文件中的%hook 后面,代表要hook的class名,删掉文件中的其他方法,再复制刚才.h文件中要改的方法名,在这个方法名,写入你自己要修改的方法.我在下面方法里面添加一个红色的view,在里面加了一个label文字
%hook NMDiscoveryBannerView
- (id)initWithFrame:(struct CGRect)arg1{
return nil;
}
%end
把hook代码写入带app中
确保此时 usb连接越狱手机的root账户没有断开,如果断开重新连接
.在mac上theos创建的Makefile文件所在的项目文件夹下,终端执行 make编译文件
make
执行生成deb包的指令make package包含了 make的编译 *** 作,所以第一步make可以省略
make package
安装到手机中
make install
会提示是否安装输入yes
安装完以后会在手机目录下出现两个文件,文件名字就是你起的项目名,例如下图用ifunbox查看多了2个文件:
music.dylib
music.plist
每次启动app都会加载这2个文件,执行自己hook代码代替原来app的方法
make clean是清除之前编译结果,要不然如果代码没改变,就不会重新编译.
把下面的代码存入到 .sh文件中,例如保存成:theos.sh
debug 版本
make clean && make package && make install
release 版本
make clean && make package debug=0 && make install
然后把这个theos.sh的文件所在路径添加到环境变量中,就可以在任何地方执行这个theos.sh文件
添加环境变量的方法:open ~/.zshrc
然后在里面添加一行,例如theos.sh文件的所在位置是JailBreak
export PATH="JailBreak:$PATH"
然后让.zshrc文件生效
source ~/.zshrc
删除掉hook代码
删掉 手机目录 Device/Library/MobileSubstrate/DynamicLibraries 下面的上面2个文件,启动app的时候就不会加载hook代码,而是变成默认的app
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)