Frida入门使用

本文介绍了如何使用Frida进行Android应用程序的动态分析,重点是hook So层。首先,安装Anaconda和Spyder环境,接着安装并部署frida-server。通过adb命令连接设备并授权,然后在Spyder中编写Python脚本。在hook So层时,先分析apk中的so文件,获取函数名,再编写相应的Py文件实现hook。通过示例展示了hook前后效果,强调了参数和返回值类型的重要性。
摘要由CSDN通过智能技术生成

网上很多教程的python环境都是安装了Anaconda,那就下载吧。但下载之后我们需要用到的工具是里面的spyder,但现在用不到。

在这里插入图片描述

安装完之后,在该文件夹下找到 pip指令,或者在安装anaconda时,选择了添加环境变量的设置,就不需要专门去找该指令的目录。然后 cmd

pip install frida
pip install frida-tools

安装完成后,在github上下载frida-server
链接
在这里插入图片描述
虚拟机用x86,真机用arm

下载完frida-server之后,将目标文件解压,之后放进模拟器(真机中),我使用的是逍遥安卓模拟器,按照好之后需要connect端口。
adb命令如下:

adb push frida-server /data/local/tmp 

之后,进入该目录进行文件授权

adb shell  //进入手机调试

cd /data/local/tmp	//移动到该目录下

ls -l	//查看该目录下的文件列表

chmod 777 frida-server	//对frida-server文件进行授权

./frida-server	//执行frida-server

之后打开一个新的cmd,进行端口转发

adb forward tcp:27042 tcp:27042

打开spyder,新建一个py文件。完整代码如下,右下角是调试窗口

import frida,sys

jscode="""
Java.perform(function (){
   
    var utils=Java.use('com.example.fridatest.Utils');//包名加类名
    utils.getCalc.implementation=function(a,b){
   
        console.log("Hook Start...");
        send("Success!");//发送信息,用于回调python中的函数
        send(a);//获得函数的参数a,b
        send(b);
        return 50;//劫持返回值,修改为我们想要返回的字符串
    }
});   
"""

def message(message,data):
    if message["type"] =='send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)
        
        
process=frida.get_remote_device().attach('com.example.fridatest')  
# get_remote_device():获取远程设备。attach(应用包名)。获得进程
script=process.create_script(jscode)    # 为进程设置一个脚本
script.on("message",message)   #设置监听(绑定事件)
script.load()
sys.stdin.read()

在这里插入图片描述
打开模拟器应用进行调试
原本调试情况:
在这里插入图片描述
运行frida后,可以将js代码中的返回值代替该返回值。

android项目地址:链接


Java层:

# Hook普通方法
jscode="""
Java.perform(function()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值