iOS(越狱) 应用脱壳反编译hook教程 (系统ios11.3.1)

为什么会有这边博文?

因为公司原因,领导又让我捡起荒废了一年多的ios,了解对ios应用脱壳以及反编译hook相关知识.相比于安卓的hook来说(想了解安卓hook的可以参考我的另外一篇文章),ios的hook要麻烦的多,前人栽树后人乘凉,希望我的这边文章能给大家对ios的hook有个清晰的认识和思路.

一. 项目需求

本文以很久以前上架的一个练手app为例(app有点烂,将就一下吧,点击传送门). app大概是这个样子
在这里插入图片描述

点击生成二维码,会进入到一个生成二维码的界面.我们本次的任务就是篡改点击事件,实现点击生成二维码,弹出一个弹窗.

二. 项目流程

逻辑比较清晰,参考下图:

在这里插入图片描述

三. 工具准备

1. 一台越狱设备(不知道怎么越狱的自己先行百度,本人试验机是ipad 11.3.1系统)
2. 安装要脱壳的应用

四. 脱壳

以下是主流的目前三种脱壳方式,前两种貌似在高版本中都会出现问题,如果你的系统在9.0以下,可以考虑使用,如果是9.0以上,建议使用第三种.

1. Clutch工具静态砸壳

这个方式主要是利用Clutch工具进行砸壳,可以参考友军的文章,我就不重复造轮子了.(注意高版本ios系统可能会出现kill9错误,无法脱壳)

2.dumpdecrypted.dylib动态库 砸壳

从github上下载代码(传送门),编译动态库dumpdecrypted.dylib.利用该动态库进行脱壳,可以参考友军文章,缺点是低版本有效,高版本会出现各种问题.

3.frida-ios-dump 砸壳

由于该项目是个python项目,所以需要python环境.

++第一步++,

手机端打开cydia 添加源: https://build.frida.re
打开刚刚添加的源 安装 frida
安装完成!检查是否工作可以可在手机终端运行 frida-ps -U 查看

++第二步:++

电脑端下载源码,千万注意这个源码是分3.x和2.x python版本的,一定要根据自己的ptthon环境版本下载相应版本的源码!!!

++第三步++

编译源码(可能会遇到各种安装第三方库错误,耐心解决近,或者下方私信我).修改dump.py文件,把ip改成手机端ip

在这里插入图片描述

++第四步++:

执行脱壳命令
./dump.py 应用名称

成功后就会在项目目录中产生相应的脱壳后的ipa文件,如下图

在这里插入图片描述

五. 使用Class-dump导出头文件

第一步:
下载
Class-dump
,得到Class-dump 运行库

在这里插入图片描述

第二步,解压我们刚才得到的ipa文件(修改成.zip解压即可),得到QrCode.app文件

第三步:

导出.h文件

执行命令class-dump -H QrCode.app文件路径 -o 导出的文件夹路径

完成后就能看到导出的.h文件了

在这里插入图片描述

六. 分析源码

第一步.

安装MonkeyDev,如何安装请参考神器开源项目[传送门],里面有详细文档

第二步.

安装成功后您的xcode新建项目时就会出现如下图工程:

在这里插入图片描述

第三步:

选择MonkeyApp新建工程,将我们脱壳后的ipa文件放入项目对应文件夹,其他都不用修改,选择真机直接运行

在这里插入图片描述

第四步:

调试应用,得到扫描界面的控制器类MainController,我试图获取uiveiw的action,但发现他的action是动态写在代码中的

在这里插入图片描述

我们搜索我们上面得到的头文件,找到MainController.h文件,代码如下:

在这里插入图片描述

可以看到有个setListener方法和两个uiveiw,基本我们可以确定我们需要的点击事件就在setListener方法中.下面我们验证下.

第四步:

对刚才我们得到的QRCode.app文件显示包内容,可以得到moth-o类型的源码文件QRCode

在这里插入图片描述

下载Hopper工具,将QRCode文件拖进去,就可以查看响应的oc伪码,以及汇编代码.如下图

在这里插入图片描述

搜索MainController,找到setListener方法,查看oc伪码

在这里插入图片描述

发现他跳转了menuAction方法,我们双击点进去

在这里插入图片描述

可以看到,就是通过在这里处理跳转事件,控制程序跳转到下个控制,也验证了我们的猜想是正确的,我们只需要拦截 setListener方法,当他点击生成二维码这个图片view的时候,让他弹个窗即可.

七.编写hook拦截代码

回到我们新建的MonkeyApp工程,新建HookAlert.m文件,编写hook逻辑,拦截代码

在这里插入图片描述

运行后点击生成二维码查看效果:

在这里插入图片描述

出现弹窗,拦截成功!

补充说明:

MonkeyApp提供了多种hook的写法,这里我们使用的是CaptainHook的写法,我简单介绍下用法(官方竟然没有详细的api说明!)

一个单独的hook类,大概包含以下三部分,看一查看我写的注释

#import <Foundation/Foundation.h>
#import <CaptainHook/CaptainHook.h>
#import <UIKit/UIKit.h>
CHDeclareClass(MainController)   //声明hook的类
//声明hook的方法,数字代码参数个数,第一个参数一般是self,第二个参数代表返回值,第三个参数是类名,第四个是方法名,后面接方法参数以及类型
CHOptimizedMethod1(self, void, MainController, menuAction,id,arg1){   //获取类变量view的值UIView* item2= CHIvar(self, _item2_bgview,__strong UIView*) ;UIView* item=[arg1 view];if(item2==item){//拦截 点击事件UIAlertView *alert=[UIAlertView new];[alert setTitle:@"提示"];[alert setMessage:@"拦截成功"];[alert show];NSLog(@"测试成功...%@ : %@",arg1,item2);}else{// 其他逻辑正常执行元源代码CHSuper1(MainController, menuAction, arg1);}
}// 构造方法, 
CHConstructor{CHLoadLateClass(MainController);  //再次声明hook的类CHClassHook1(MainController, menuAction);  //再次声明hook的方法}

八. 总结

至此,我们的ios从脱壳到分析再到代码拦截就完成了,网上很多文章都是要么写怎么脱壳,要么怎么写hook,要么就是写怎么分析,很少有一个写全面流程的文章.希望这边文章对大家有帮助,喜欢就伸手点个关注吧.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35516.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS 越狱检测/反越狱

在 iOS 越狱设备上&#xff0c;游戏外挂开发人员可以对游戏程序砸壳用于逆向分析&#xff0c;也可以利用 substrate 对游戏逻辑进行 hook 从而制作出各种游戏外挂。这些游戏外挂程序可以被其他越狱玩家直接安装&#xff0c;也可以通过 cydia 商店进行分发。鉴于用户使用越狱设备…

初涉iOS逆向工程:免越狱修改微信(外观篇)

点击上方“iOS开发”&#xff0c;选择“置顶公众号” 关键时刻&#xff0c;第一时间送达&#xff01; 美国学者埃德加戴尔&#xff08;Edgar Dale&#xff09;1946年提出了“学习金字塔”&#xff08;Cone of Learning&#xff09;的理论。他提到&#xff1a;学习效果在50%以上…

【电商运营】如何吸引客户?经典WhatsApp营销案例分享!

关键词&#xff1a;电商运营&#xff0c;WhatsApp营销 电子商务日趋成熟&#xff0c;竞争也越来越激烈。如果企业想保持领先地位&#xff0c;持续吸引客户&#xff0c;则需要将WhatsApp等消息传递应用程序添加到你的营销渠道。但是什么类型的WhatsApp营销活动适合电子商务呢&a…

通达信超跌反弹选股公式,使用筹码函数WINNER

在前面的文章中&#xff0c;已经介绍了WINNER函数&#xff0c;不过对于如何使用函数&#xff0c;当时只进行了简单举例&#xff0c;没有做深入研究。本文将结合WINNER函数的特性&#xff0c;编写通达信超跌反弹选股公式。 WINNER函数表示获利盘比例&#xff0c;取值范围是0-1&…

散户打板,一夜暴富?Pyhton量化11万次涨停,跟着买,收益竟...?【邢不行

你问我涨停敢死队算什么东西&#xff1f;我现在告诉你&#xff0c;你们机构不敢买的涨停&#xff0c;我们买&#xff1b;你们机构不敢割的肉&#xff0c;我们割。 一句话&#xff0c;机构能买的我们买&#xff0c;机构不能买的我们更要买&#xff01;追逐涨停&#xff0c;只买…

交易员普遍使用的几个高胜率指标公式分享给你

交易者普遍运用的都是以下几个技术指标&#xff1a; 1、MACD指标 2、DMI指标 3、KDJ指标 4、布林线 5、移动平均线 6、RSI指标 7、波段买卖点技术指标 第7个那个指标我也是听朋友说他在做的比较好用的&#xff0c;而且没有滞后性。具体如下&#xff1a; 看下图 &…

教你炒股票7:给-赚-了指数亏-了-钱的一些忠告

教你炒股票7&#xff1a;给-赚-了指数亏-了-钱的一些忠告 2006/11/16 12:00:01 周四 今天不宠幸孔-二爷了&#xff0c;宠幸一下股票。早就说过&#xff0c;中国没有人有资格和本ID谈论股票。国庆前&#xff0c;香-港有几个大的基-金-经理过来&#xff0c;吃饭时让本ID给修理了一…

Java 的完整故事-从 1991 年到 2022 年

Java 的完整故事&#xff0c;从 1991 年到 2022 年 个人网站&#xff1a;www.gydblog.com 01、前言 今天&#xff0c;Java已经发展为世界上最流行和最受欢迎的编程语言之一&#xff0c;每年有超过数以万计的人在学习Java或从事Java开发相关的工作。毋庸置疑&#xff0c;Java技…

53岁周鸿祎晒清华录取通知书,攻读博士!网友:导师管你你服管吗?

上一篇&#xff1a;阿里将推行季度考核&#xff0c;员工转岗需先离职再入职 导读&#xff1a;今天换一换口味&#xff0c;摘个瓜尝尝。我们发现360创始人周鸿祎这两天又上了微博热搜了。 近日&#xff0c;周鸿祎在个人微博晒出清华大学录取通知书&#xff0c;称“终于考上了&am…

海尔智家业绩尚可,但其智能家居“全场景”没做起来

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日&#xff0c;海尔智家发布了其2022年年报&#xff0c;数据显示&#xff0c;2022年海尔智家实现收入2435.14亿元&#xff0c;同比增长7.2%&#xff1b;扣非归母净利润139.63亿元&#xff0c;同比增长18%&#xff0c;利润…

微软成立 48 周年 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 4 日&#xff0c;清明节。扫墓祭祖与踏青郊游是清明节的两大主题&#xff0c;而埋葬总陪伴着新生&#xff0c;在 1896 年的今天&#xff0c;首届现代奥运会…

劳动部门建议孟羽童举报工作21小时;百度也要造手机了;Safari 超过 Edge 成为第二流行的桌面浏览器 | EA周报...

EA周报 2023年5月12日 每个星期1分钟&#xff0c;元宝带你喝一杯IT人的浓缩咖啡&#xff0c;了解天下事、掌握IT核心技术。 周报看点 1、劳动部门建议孟羽童举报工作21小时 2、马斯克宣布将卸任推特CEO&#xff1a;转战技术岗位 接班人是女性 3、百度也要造手机了&#xff0c;小…

雅思考试口语怎么备考才能拿到7分

很多学生在雅思考试里拿到总分7分的好成绩&#xff0c;雅思的口语要怎么准备才能拿到这样的好成绩&#xff1f;其实雅思口语7分的难度不高&#xff0c;下面就来看看雅思口语应该如何备考&#xff1f; 一、雅思口语考试怎么考7分 1、“流利度”如何拿7分 很多雅思口语提升攻略…

微信会员卡创建

微信会员卡可通过微信公众平台手动创建&#xff0c;也可以通过微信卡券接口创建&#xff0c;接口创建具有更灵活的定制性&#xff0c;本系列主要介绍微信会员卡的接口创建。 准备工作 正式开发前&#xff0c;开发者需要去公众平台开通微信卡券功能&#xff0c;添加功能插件、…

微信卡券之会员卡(导入型)

1.注意创建会员卡时参数&#xff0c;导入型会员卡和指定code 不一样 # 创建会员卡 此创建为在微信公众平台创建一类卡public function createCard($value){$access_token $this->getAccessToken();$data $this->request->param();$url "https://api.weixin.q…

zotero翻译设置

https://zotero.yuque.com/staff-gkhviy/pdf-trans/ehbm2d 下载一个 T r a n s l a t e Translate Translate 插件点进首选项到这个插件的翻译服务区域&#xff0c;根据需求按上面的链接注册获得激活密钥 注&#xff1a; 有道不太对&#xff0c;有道志云还行&#xff0c;试了…

iOS App的生命周期

App的生命周期 App从启动到退出的过程中&#xff0c;iOS应用程序不断从系统接收各种事件&#xff0c;如&#xff1a;用户点击了屏幕、用户点击了Home键&#xff0c;并对这些事件进行响应。接受事件是UIApplication对象的工作&#xff0c;但是&#xff0c;响应事件就需要由程序…

裁员10%,暴跌14%,这家IT独角兽正在被抛弃!

撰稿 | 言征 流量一跌再跌&#xff0c;Stack Overflow 简直被狠狠地上了一课&#xff01; 3 月份 Stack Overflow 的流量下降了近 14%。该公司的 CEO 压力空前&#xff0c;甚至昨天决定裁员 10%&#xff01; 平均每月下降6%&#xff0c;上月直接跌了近14% 开发人员越来越多地…

Uni-Mol: A Universal 3D Molecular Representation Learning Framework

Uni-Mol: 一个通用的三维分子表示学习框架 ICLR 2023 Uni-Mol 论文&#xff1a;Uni-Mol: A Universal 3D Molecular Representation Learning Framework | OpenReview Uni-Mol 代码&#xff1a;&#xff1a;GitHub - dptech-corp/Uni-Mol: Official Repository for the Uni-Mo…