博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS逆向之旅(进阶篇) — HOOK(Logos)
阅读量:7257 次
发布时间:2019-06-29

本文共 1499 字,大约阅读时间需要 4 分钟。

简介

Logos本是Theos的一个组件,Monkey将里面libsubstrate.dylib移植出来,所以在Monkey工程下也可以使用Logos进行Hook代码

常用到的一些语法

  • HOOK 某个类里面的某个方法
%hook 类名- (void)方法名:(id)arg1 ....{}%end复制代码
  • 为某个类添加新的方法
%hook class_name// 添加一个响应事件%new-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES];}// 添加一个类方法%new+(void) new_func_name { NSLog(@"这是一个类方法!");}%end复制代码
  • 构造函数和析构函数
%ctor	构造函数%dtor	析构函数复制代码
  • 组的概念
%group group1%hook class_name- (void)func_name:(id)arg1 ....{    //修改替换成的内容}%end%end%group group2%hook class_name- (void)func_name:(id)arg1 ....{    //修改替换成的内容}%end%end// 定义了组就必须对其初始化%ctor{NSString * version = [UIDevice currentDevice].systemVersion;if(version.doubleValue >= 10){// 当iOS版本大于10则使用组2的Logos代码,否则使用组1的    %init(group2) }else{    %init(group1)}}复制代码
  • 常用的宏
%log       打印原始方法的所有参数信息%orig      执行原始的方法[%c(ViewController) click];      %c获取类复制代码

案例

本案例在Monkey工厂下,利用Logos语法实现与 中案例一模一样的功能。

  • 首先新建一个Monkey工程

  • 把App放到TargetApp目录下

  • 打开_6_HOOK_LogosDylib.xm文件,在文件上面进行开发

先删除掉运行的内容,开始写Logos语法进行HOOK

%hook WCAccountLoginControlLogic- (void) onFirstViewLogin {    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"你想登录??" message:nil preferredStyle:UIAlertControllerStyleAlert];    [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil]];    [[[UIApplication sharedApplication] keyWindow].rootViewController presentViewController:alertVC animated:true completion:nil];}%end复制代码

通过这段简单的代码,就完成我们之前一系列复杂的HOOK,Logos是不是很强大呢? 来看看效果

转载地址:http://hyvdm.baihongyu.com/

你可能感兴趣的文章
使用git提交本地代码到github
查看>>
从零开始学习ios(UIImageView)控件及其属性
查看>>
MySQL rename database如何做?
查看>>
mysql的线程处于System lock状态下
查看>>
ACTION_CANCEL事件和事件回传
查看>>
java数据库查询类
查看>>
"河北科技创新平台年报系统"课堂讨论
查看>>
这半年的一些事情
查看>>
[30期] 我对人生道路的总结
查看>>
基于ARM处理器的反汇编器软件简单设计及实现
查看>>
巨杉数据库助力民生银行、恒丰银行云化架构升级
查看>>
超好用的VueJs调试工具——vue-devtools
查看>>
对象键
查看>>
[LeetCode] Unique Binary Search Trees, Solution
查看>>
[AtCoder2558]Many Moves
查看>>
【数据库_Mysql】JAVA-数据库Date格式在前台JSP页面的获取
查看>>
程序员的职业发展 (转)
查看>>
mysql中Time Date DateTime TimeStaamp区别
查看>>
STM32是如何进入中断服务函数xxx_IRQHandler的
查看>>
JFinal极速开发框架使用笔记
查看>>