aiQG's Blog

Happy hacking. Happy developing.

aiQG's GitHub ⛓Links P
Other CTF Swift Developing & Reversing

_ios_hook

6 February 2020

by aiQG_

前提:

对于非越狱设备, 可以在TargetApp文件夹中放入ipa后编译运行一下(安装到设备上), 然后运行Reveal分析APP的UI结构, 记录下需要hook的控件类名, 在用class-dump导出的头文件中找到这个类的相关方法进行hook.

可以在hook代码中利用%log(Logos语法)打印出被hook函数的所有参数, 从而找到有用信息(例如对于UIButton类型的控件, 可以找到点击它调用的方法). // 对于Logos语法的代码写在 HookAppDylib.xm

hook WeChat.app注册和登录页面:

Reveal找到登录和注册两个按钮是FixTitleColorButton类

在class-dump导出的头中找到这个类, 发现是继承UIButton的, 所以hook FixTitleColorButton的 -(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents 方法. (这个函数存在于父类UIButton, 可以从Apple官方文档找到其他有用的函数)

利用%log找到初始化的信息(查看参数controlEvents)

%hook FixTitleColorButton
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents{
	%log;
	%orig(target, action, controlEvents);
}
%end

得到两段输出

WeChat[1136:259626] [1;36m[HookAppDylib] [m [0;36m/Users/zc/Desktop/HookApp/HookAppDylib/Logos/HookAppDylib.xm:9 [m  [0;30;46mDEBUG: [m -[<FixTitleColorButton: 0x14fd411e0> addTarget:<WCAccountLoginControlLogic: 0x2805a9c70> action:onFirstViewLogin forControlEvents:0x40]

WeChat[1136:259626] [1;36m[HookAppDylib] [m [0;36m/Users/zc/Desktop/HookApp/HookAppDylib/Logos/HookAppDylib.xm:9 [m  [0;30;46mDEBUG: [m -[<FixTitleColorButton: 0x14fd67980> addTarget:<WCAccountLoginControlLogic: 0x2805a9c70> action:onFirstViewRegister forControlEvents:0x40]

target分别是 onFirstViewLoginonFirstViewRegister , 类是 WCAccountLoginControlLogic .

直接hook这两个函数

%hook WCAccountLoginControlLogic
- (void)onFirstViewRegister {
	NSLog(@"==\n\nHooked Register\n\n==");
	%orig;
}
- (void)onFirstViewLogin {
	NSLog(@"==\n\nHooked Login\n\n==");
	%orig;
}
%end

重新编译运行, 分别点击这两个按钮

WeChat[1136:259626] ==

Hooked Login

==

WeChat[1136:259626] ==

Hooked Register

==

MonkeyAPP是一个高度集成的工具, 相比于一般的逆向方法_iOS逆向_App修改, 更有脚本小子的感觉更加方便 // 但是看不到汇编, 就感觉像雾里看花啊

Developing & Reversing

return

email:nrxxmzlrovqw4z3fgeztcncaozuxaltroexgg33n