代码注入(11)

简介: 代码注入(11)

代码注入(11)


framework注入


假工程里写代码不会走,是因为APP(MachO)文件整个都被替换了


  • 通过Xcode新建Framwork,将库安装进入APP包
  • 通过yololib注入Framwork库路径。命令:$yololib(空格)MachO文件路径(空格)库路径


  • 所有的Framwork加载都是由DYLD加载进入内存被执行的
  • 注入成功的库路径会写入到MachO文件的LC_LOAD_DYLIB字段中


Tips


  • 注意: MachView(烂苹果) -> 拖拽打不开,右键打开文件可解决
  • MachOView


流程


  • 可执行文件 -> dyld加载 -> Load Commands -> LC_MAIN ->  LC_LOAD_DYLIB加载动态库 (通过路径加载) -> 将自己的代码, 包装在一个动态库里面, 再让IPA加载 (以动态库的形式注入)
  • framework里面的代码也要加载, framework里面也是可执行文件


yololib使用


需要修改MachO -> ./yololib WeChat framework路径


dylib也可以


  • 通过Xcode新建Dylib库(注意:Dylib属于MacOS所以需要修改属性)
  • 添加Target依赖,让Xcode将自定义Dylib文件打包进入APP包。
  • 利用yololib进行注入。


添加lib ->  更改配置

用脚本yololib

yololib

shell脚本


./yololib "$TARGET_APP_PATH/$APP_BINARY" "framework路径"


appSign


Method Swizzle


framework注入

破坏微信, 窃取密码 -> 界面事件相应链,慢慢找

静态分析!!! -> class-dump (获取类,方法列表)


./class-dump -H WeChat -o ./headers/


class-dump

Sublime Text -> onNext没有参数(self, _cmd)


第一种Hook


Method Swizzle 方法交互修正


//第一种
/**
+(void)load{
    //原始的Method
    Method onNext = class_getInstanceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(onNext));
    //添加新方法!
    class_addMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(new_onNext), new_onNext, "v@:");
    //交换
    method_exchangeImplementations(onNext, class_getInstanceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(new_onNext)));
}
//新的IMP
void new_onNext(id self,SEL _cmd){
    UITextField * pwd = (UITextField *)[[self valueForKey:@"_textFieldUserPwdItem"] valueForKey:@"m_textField"];
    NSLog(@"密码是:%@",pwd.text);
    //调用回原来的逻辑!!
    //调用原来的方法!
    [self performSelector:@selector(new_onNext)];
}


隐患:  回不去了!!!(没法调用原来的实现!, 因为不是在该类的分类去交换的)


第二种


class_replaceMethod


/*
+(void)load{
    //原始的Method
    Method onNext = class_getInstanceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(onNext));
    old_onNext = class_replaceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(onNext), new_onNext, "v@:");
}
//原来的IMP
IMP (*old_onNext)(id self,SEL _cmd);
//新的IMP
void new_onNext(id self,SEL _cmd){
    UITextField * pwd = (UITextField *)[[self valueForKey:@"_textFieldUserPwdItem"] valueForKey:@"m_textField"];
    NSLog(@"密码是:%@",pwd.text);
    //调用回原来的逻辑!!
    //调用原来的方法!
    old_onNext(self,_cmd);
    //objc_msgSend();
}


第三种, 最好的, 推荐


大部分HOOK框架

method_getImplementation

method_setImplementation


+(void)load{
    //原始的Method
    old_onNext = method_getImplementation(class_getInstanceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(onNext)));
    method_setImplementation(class_getInstanceMethod(objc_getClass("WCAccountMainLoginViewController"), @selector(onNext)), new_onNext);
}
//原来的IMP
IMP (*old_onNext)(id self,SEL _cmd);
//新的IMP
void new_onNext(id self,SEL _cmd){
    UITextField * pwd = (UITextField *)[[self valueForKey:@"_textFieldUserPwdItem"] valueForKey:@"m_textField"];
    NSLog(@"密码是:%@",pwd.text);
    //调用回原来的逻辑!!
    //调用原来的方法!
    old_onNext(self,_cmd);
}



目录
相关文章
|
数据安全/隐私保护 iOS开发 开发者
iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)(上)
iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)
890 0
|
3月前
|
IDE Shell Go
真香,Cursor懂的都懂(学习用哈),22.5k一键重置Cursor试用限制!被全网疯狂收藏!
go-cursor-help是一款用 Go 编写的开源工具,可在 3 秒内刷新 Cursor IDE 的机器码,绕过试用限制。支持 Windows、macOS 和 Linux,具备跨平台兼容性,自动配置系统架构。核心功能包括一键重写 `storage.json`、可选随机化 MAC 地址、禁用 Updater 避免版本升级干扰,以及内置历史版本回滚机制。
948 1
|
消息中间件 存储 Java
场景题:如何提升Kafka效率?
场景题:如何提升Kafka效率?
165 0
场景题:如何提升Kafka效率?
|
9月前
|
人工智能 自然语言处理 前端开发
三大行业案例:AI大模型+Agent实践全景
本文将从AI Agent和大模型的发展背景切入,结合51Talk、哈啰出行以及B站三个各具特色的行业案例,带你一窥事件驱动架构、RAG技术、人机协作流程,以及一整套行之有效的实操方法。具体包含内容有:51Talk如何让智能客服“主动进攻”,带来约课率、出席率双提升;哈啰出行如何由Copilot模式升级为Agent模式,并应用到客服、营销策略生成等多个业务场景;B站又是如何借力大模型与RAG方法,引爆了平台的高效内容检索和强互动用户体验。
2095 5
|
8月前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
547 1
|
9月前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
132 7
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
1602 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
11月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
|
人工智能
钉钉AI助理创造大赛来袭,百万奖金等你拿!
尽情发挥你的想象力与创造力吧>>
|
11月前
|
传感器 机器学习/深度学习 弹性计算
Agent与大模型的区别
本文详细对比了人工智能领域的两个重要概念——Agent和大模型。大模型如GPT-3、BERT等,擅长自然语言处理任务,如文本生成、翻译等;Agent则是自主的软件实体,能够在特定环境中感知、决策并执行任务,如管理日程、控制智能家居等。文章介绍了它们的定义、功能、技术架构及应用场景,并总结了两者的核心差异和未来发展方向。
3813 0

热门文章

最新文章