首页
课程
问答
CTF
社区
招聘
看雪峰会
发现
企服
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
企服
专栏
CTF
排行榜
知识库
工具下载
看雪峰会
看雪20年
看雪商城
证书查询
专栏首页
安全鸟一起飞
文章详情
Frida官方手册 - 在iOS上使用Frida
freakish
举报
2017-10-20 20:49
1868843
在iOS上使用Frida
在iOS设备上,Frida支持两种使用模式,具体使用哪种模式要看你的iOS设备是否已经越狱。
使用场景
已越狱机器
未越狱机器
已越狱机器
在越狱的环境下,是用户权限最大的场景,在这样的环境下你可以很轻松的调用系统服务和基础组件。
在这篇教程中,我们来看下如何在iOS设备上进行函数追踪。
设置iOS设备
启动
Cydia
然后通过
Manage -> Sources -> Edit -> Add
这个操作步骤把
https://build.frida.re
这个代码仓库加入进去。然后你就可以在
Cydia
里面找到
Frida
的安装包了,然后你就可以把你的iOS设备插入电脑,并可以开始使用
Frida
了,但是现在还没有必要马上插到电脑上。
快速的冒烟测试
现在在你的主控端电脑上(Windows、macOS)执行如下命令,确保Frida可以正常工作:
如果你还没有把你的iOS设备插入到电脑里面(或者插到电脑但是没有被正常识别),那应该会像下面这样提示:
如果iOS设备已经正常连接了,那应该会看到设备上的进程列表了,大致如下:
如果到了这一步没有问题,那就可以很开心的继续往下走了。
跟踪Twitter中的加密函数
OK,现在我们来开始搞点好玩的。在你的设备上启动Twitter,然后让它持续的保持在前台,并确保你的机器不会进入睡眠状态。现在在你的主控端的机器上执行如下命令:
目前, 很多App的加密、解密、哈希算法基本上都是使用
CCryptorCreate
和相关的一组加密函数。
现在,开始尝试在App里面触发一些网络操作,然后就应该能看到一些输出了,比如我的输出是下面这样的:
现在,你还可以实时的修改JavaScript脚本,然后继续在App里面深挖各种功能。
没有越狱的iOS设备
为了让一个App能使用Frida,必须想办法让它加载一个
.dylib
,就是一个
Gadget
模块。
在这篇教程里面我们需要配置一下
xcode
的编译配置来让你的App可以集成Frida。当然也可以使用相关的工具来修改一个已经编译好的App, 比如
insert_dylib
这样的工具。
定制你的xCode工程
给iOS设备下载最新的
FridaGadget.dylib
库,然后给这个库签名:
在xCode里面打开你的工程,然后把
Frameworks
文件夹拖动到
AppDelegate
旁边,注意一定要拖动整个文件夹,而不是文件,xCode会提示你
Choose options for adding these files:
, 然后选择
Copy items if needed
选项,并且勾选
Create folder references
,然后点击
完成
。然后选中项目,切换到
Build Phases
页面,展开
Frameworks
文件夹,然后把
FridaGadget.dylib
拖进
Link Binary With Libraries
一节,并确保
Frameworks
文件夹被加入了
Copy Bundle Resours
一节。
快速的冒烟测试
在xCode里面启动App,然后就应该能看到下面的输出:
现在你会发现App处于挂起状态,这是因为集成进来的Frida起作用了,Frida正在等待你来执行任何你感兴趣的API 或者你可以选择直接让程序继续运行。
现在Frida正在等待我们操作,并且集成到App内部的
Gadget
和
frida-server
提供的是一样的接口,现在我们尝试枚举一下进程列表试试:
不同于
frida-server
,我们只能枚举到一个进程,就是这个App本身。
我们还可以使用下面的命令来看下可以运行哪些App:
到目前为止还不错, 现在如果我们调用
attach()
函数,目标App就会结束等待状态,继续运行。但是如果我们一开始使用
spawn([“re.frida.Gadget”])
启动App的话,我们这个时候再
attach()
的话,这个时候目标App也不会直接运行的, 除非我们主动调用
resume()
,也就是说使用前一种方式我们的代码执行时机晚一点,后一种方式可以在更早的时机执行我们的代码。
跟踪libc函数
现在假如你使用xCode启动的程序,现在App处于挂起状态,现在我们尝试开始和Frida交互吧,看下面的例子:
现在你可以实时的编辑JavaScript脚本了,然后继续在iOS的App里面深挖。
使用模拟器
现在在模拟器中进行测试,就要把上面的命令行中的
-U
替换成
-R
,这样一来底层的内部调用也从
get_usb_device()
变成
get_remote_device()
。
打造自己的工具
像是 Frida,Frida-trace 等这些工具确实很有用,但是有时候你会发现你还是需要定制自己更加个性化的功能,那就最好去读一下
Functions
和
Messages
这两章,比如当你使用到
frida.attach()
的时候,其实底层调用的就是
frida.get_usb_device().attach()
。
收藏
分享
分享到微信
分享到QQ
分享到微博
声明:该文观点仅代表作者本人,转载请注明来自看雪专栏
最新评论
(
1
)
自由快挂
2018-9-24
举报
1
楼
iPhone 4s, 9.3.5 attach,一直会导致设备重启。
举报原因
×
广告灌水
涉黄涉暴
反动语言
其他
50
/50
登录后即可评论
安全鸟一起飞
创建者:
freakish
持续关注Windows安全、Andorid安全
215
关注数
31
文章数
关注
该专栏热门文章
1
Frida官方手册 - JavaScript API(篇二)
JavaScript API Int64 new Int64(v): 以v为参数,创建一个Int64对象,v可以是一个数值,也可以是一个字符串形式的数值表示,也可以使用 Int64(v) 这种简单的方式。 a...
2
Frida官方手册 - JavaScript API(篇一)
JavaScript API 目录 Global console rpc Frida Process Module ModuleMap Memory MemoryAccessMonitor Thread Int64 UInt64 NativePoint...
3
Frida官方手册 - 在iOS上使用Frida
在iOS上使用Frida 在iOS设备上,Frida支持两种使用模式,具体使用哪种模式要看你的iOS设备是否已经越狱。 使用场景 已越狱机器 未越狱机器 已越狱机器 在越狱的环境下,是用户权限最大的场景,在这样的环境下你可以很轻松的调用系统服务和基础组件...
4
Frida官方手册 - 函数Hook
函数Hook 这一篇我们看下如何在目标进程中对程序中的函数进行调用监视、参数修改、以及函数的主动调用 准备环境 创建文件 hello.c,内容如下: 使用如下命令进行编译: 启动程序,然后记下函数 f() 的地址(在这个例子中,值是0x400544):...
5
Frida官方手册 - 安装Frida
安装Frida 从零开始安装使用Frida大概只需要几分钟的时间就可以搞定。如果你安装的过程中发现什么问题,可以告诉我们(请参考原文链接https://www.frida.re/docs/installation),看看我们是否有比较好的解决方案。 安装环境...
6
[开源]Android逆向中So模块自动化修复工具+实战一发
前言 Android加固方案经过这么长时间的发展,从开始的整体dex加密压缩方案逐步开始往native层发展,市面上知名的几款商业级加固方案中很容易发现这种方案的身影。这样看来,在今后相当长的一段时间内,Android逆向中不可避免的会频繁接触到与So加固的...