一、Theos 安装
Theos-wiki 上有比较详细的介绍,下面我简单记录一下自己的安装过程:
1.在 ~/.bash_profile下添加环境变量
export THEOS=/opt/theos
export PATH=$THEOS/bin/:$PATH
如果没有/opt/theos ,自行创建。
2. 环境变量添加成功后 执行 ,(如果环境变量不好使 source 一下)
git clone --recursive https://github.com/theos/theos.git $THEOS
--recursive 这个参数必不可少,表示递归调用。
其实对使用最关键的就是 /opt/theos/bin/nic.pl文件,配置完环境变量后我们就可以 直接调用 nic.pl
3.安装ldid ,Idid用来专门签名iOS可执行文件的工具,用以在越狱iOS中取代Xcode自带的codesign。
brew install ldid
安装就先告一段落了 ,接下来动态分析
二、动态分析实战
首先usb连接手机,并ssh登录手机。
ps -A 找到虎牙进程
18107 ?? 0:05.59 /var/mobile/Containers/Bundle/Application/F378B195-0C4B-43D0-BEF7-457088276651/kiwi.app/kiwi
然后cycript 依附进程
cycript -p 18107
声明自己的 cy文件 @import com.evol 这里不懂的要翻一下之前章节 自定义cy文件。
1. 获取elappid = @"com.yy.kiwi" 这里保存一下,后来要用。
2. elcurrentvc() 获取当前ViewController <HYRootViewController: 0x12e576e80>
3.elview(#0x12e576e80.view)获取当前视图层级
4.搜索登录的Unicode编码
定位到该按钮<UIButton: 0x130121d10>
这里可以用# 0x130121d10.hidden=true 来验证一下。
5.
通过以上几步 获取到按钮的点击事件
也就是我们要hook的类HYLoginViewController 及方法loginButtonClick:
三、Hook
在mac的终端执行 nic.pl,该目录不能有汉字最好 (已经配置了环境变量)
然后就会生成
接下里修改 Makefile 文件
export THEOS_DEVICE_IP = 127.0.0.1
export THEOS_DEVICE_PORT = 12345
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = HuYa
HuYa_FILES = Tweak.xm
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
因为我这里使用的是USB链接 并将端口映射了12345 所以是这样的
export THEOS_DEVICE_IP = 127.0.0.1
export THEOS_DEVICE_PORT = 12345
这两个字段 可以直接配置到环境变量里面去 就不用每次都写了
接下来修改Tweak.xm文件 先将所有注释清空
%hook HYLoginViewController
- (void)loginButtonClick:(id) sender {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hook is coming" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
%end
我这里是添加了一个 Alert 提示 Hook is coming
然后 终端cd到该目录下 执行
make package install
过一会儿你的手机便会重启,再次打开虎牙登录界面点击 登录 便会弹出Alert。
用MonkeyDev 写tweak 基本差不多 ,就不介绍了。