使用OC文件
在逆向过程中自己可能会做一些工具啥的,用到自己编写好的OC代码
- 首先创建自己的
OC文件夹,比如我简单的写一个alert的代码
image.png
里面只写了一个show的方法 - 在
Makefile里增加你要加载的file,如下图,除了加载Tweak.x,还加载myfile下的所有的.m
image.png
这样就可以import使用了
比如上一篇写的基础上再简单加点,在pp虾的登录界面,每次viewDidAppear 都给弹个窗
在%hook BDSUserHomeViewController 里,#import "HJAlertView.h",然后hook方法viewDidAppear,增加弹窗。
- (void)viewDidAppear:(_Bool)arg1{
%orig;
UIViewController *vc = (UIViewController *)self;
[HJAlertView showAlert:vc];
}
然后更新到手机上去,效果如下
Dec-20-2020 15-47-20.gif
logify.pl的使用
这个命令能将一个头文件,快速的转换成带打印信息的.x文件
这样我们就不用一个个去hook, 然后加上log,这有什么用呢,这样我们可以追踪一下操作app的过程中具体调用了什么方法。
实操
- 新建一个文件夹吧,专门存放我们
hook的文件,把我们要转换的.h文件拖进来,把以前的Tweak.x也拖进来。
image.png
-
Makefile也得改一下了
image.png
- 在
hookfile文件夹执行logify.pl命令 。logify.pl BDSUserHomeViewController.h > BDSUserHomeViewController.x,即会生成一个BDSUserHomeViewController.x文件
image.png
image.png
- 这个时候你
make package, 是不通过的·一堆报错,需要处理一下。
image.png
logify生成文件处理
- 删除_weak
- 删除inout
- 删除协议//或者@protocol xx 声明一下
- 替换类名为void, 如XXPerson * 替换为 void * // 或者声明一下@class XXPerson
- 删除 - (void).cxx_destruct { %log; %orig; }
-
根据
make package的报错信息,按上面的方式处理好就行了。 -
编译成功后,装到手机上,打开控制台,选择自己的手机,打开
app,过滤一下app的日志信息。
image.png
-
来到这个
BDSUserHomeViewController界面,看看控制台。
image.png
-
可以看到调用了哪些方法。
-
比如我们点击登录,发现它调用了
- (void)checkInDetailContainerView;这个方法
image.png
-
这样我们就可以
hook这个方法,假设我不想跳到登录界面了,顺便将上面加的弹窗给移到这个点击时响应。
%hook BDSUserHomeViewController
- (void)checkInDetailContainerView{
UIViewController *vc = (UIViewController *)self;
[HJAlertView showAlert:vc];
}
这样点击登录就不会跳到登录界面了,而且还会弹出自己写的弹窗。
Dec-20-2020 16-41-41.gif












网友评论