frida hook java 函数_基于frida框架Hook native中的函数(1)

0x01 前言

关于android的hook以前一直用的xposed来hook java层的函数,对于so层则利用adbi,但是不知道为什么adbi给我的体验并不是很好,刚好前段时间了解到frida框架支持android、ios、linux、windows、macos,而且在android设备上可以同时hook java、native十分方便,最重要的一点是不需要重启手机,于是就研究了一下

0x02 搭建环境

操作系统:windwos7

移动设备:Nexus 4 (4.4.4)

首先你需要一个android手机,建议使用google系,这样会省去很多麻烦,而且root的话也十分的方便,只需要去SuperSU下载卡刷包或者apk刷个root进去便可。说回来,frida是python的一个模块,所以使用frida的话还需要一些python的基础,一举两得..顺便入了Python的门,发现python是真他娘的好用 : D

安装frida模块

一定要确保你的windows有安装python(2、3的版本我都安装了),在cmd运行下面命令安装frida模块:pip install frida

如果你同时有两个python版本,你可以使用pip2或者pip3来代替pip

下载frida-server导入手机并运行

点击下载frida-server-10.6.28-android-arm.xz,下载解压后用如下命令把frida-server-10.6.28-android-arm推送到手机上adb push frida-server-10.6.28-android-arm /data/local/tmp/frida-server

更改权限并运行adb shell

su

cd /data/local/tmp

chmod 777 frida-server

./frida-server

测试frida能否成功交互

新开一个cmd,并转发端口(好像不转发也是可以的,我后来用的话都没有转发端口)adb forward tcp:27042 tcp:27042

adb forward tcp:27043 tcp:27043

好了,现在我们测试一下frida是否能成功交互,在cmd中输入如下命令:frida-ps -U

8fc55352bc3fac6ccae9be67b7e4ffa9.png

测试交互

此时可以看到frida可以成功交互了。

0x03 研究frida

利用命令行工具hook libc.so的open()函数

首先我们知道frida是python的一个模块,那么这样我们当然可以通过写python脚本import frida来实现对frida的利用,此外frida同时会提供几个命令行工具(工具存放在python/Scripts目录下面,所以你可以添加到系统环境变量方便使用),例如frida,可以通过frida -help

查看使用帮助:

815dc74ea3e0d0d5254093da1cd4581e.png

frida -help

此外还有frida-ps,还有frida-trace、与frida-dicover,官网上的资料也少,我大概看了看好像也没啥好用的...

继续说回frida这个命令行工具,在上图的帮助信息中我们看到:

"-U" 参数代表我们连接的是远程USB server,同理你也可以使用其他参数来连接,

"-f "参数则表示在手机端启动一个你指定的android程序,那个FILE则表示应用的包名,通常"-f"这个参数配合"--no-pause"参数来使用,因为可能不让进程恢复的话可能会有奇怪的问题,

"-p" 与"-n"命令分别表示attach到进程的名字或者pid,

"-l"参数则是代表需要注入的javascript脚本,而这个javascript的脚本就是我们所写的hook代码,完成函数的hook,内存的dump等一系列功能,所以顺便又可以学一手node.js岂不美滋滋....

当我们使用frida这个命令行工具成功attach到目标进程的时候,frida会给我们返回一个Frida CLI,说明白点就是一个交互窗口,下面我们就能看到。

好了,下面我们就利用frida命令行工具来hook一下chrome浏览器中libc.so的open函数frida -U -f com.android.chrome --no-pause

此次我用的是"-f"参数,也就表示,我需要重新启动这个chrome浏览器,并且attach上去,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值