使用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];
}
然后更新到手机上去,效果如下

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];
}
这样点击登录就不会跳到登录界面了,而且还会弹出自己写的弹窗。

网友评论