Frida学习01-脚本入门


Frida学习01-脚本入门

书籍:安卓Frida逆向与抓包实战-陈佳林

作者:狐狸大剑眼镜

Feb-22.2022

Frida脚本入门

这里做个记录,kali上固定使用的版本是14.2.13,因为kali 的python我用pyenv死活切换不了,

掀桌o( ̄▽ ̄)ブ

在Android逆向过程中,Frida存在两种操作模式:一种是通过命
令行直接将JavaScript脚本注入进程中,对进程进行操作,称为
CLI(命令行)模式;另一种是使用Python进行JavaScript脚本的注
入工作,实际对进程进行操作的还是JavaScript脚本,这种操作模式称
为RPC模式。两种模式本质上是一样的,最终执行Hook工作的都是
JavaScript脚本,而且核心执行注入工作的还是Frida本身,只是RPC
模式在对复杂数据的处理上可以通过RPC传输给Python脚本来进行,
这样有利于减少被注入进程的性能损耗,在大规模调用中更加普遍。

IDE配置

vscode

安装nodejs

http://nodejs.cn/

可以使用阿里的国内镜像进行加速。
npm config set registry https://registry.npm.taobao.org

https://npmmirror.com/

使用定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
npm install -g cnpm --registry=https://registry.npmmirror.com

安装模块

$ cnpm install [name]

使用git下载frida-agent-example仓库并配置

git clone https://github.com/oleavr/frida-agent-example.git

cd到目录运行

cnpm install

然后使用vscode打开此工程,在其子目录编写程序就有代码提示了

// 这是我第一个frida hook脚本
setTimeout(
    function () { //匿名函数
    Java.perform(function () {
        console.log("Hello world!")
    })
})

从外层向里看,首先我们把一个匿名函数作为
参数传给了setTimeout()函数,在这个匿名函数体中调用了Frida的
API函数Java.perform(),这个API函数本身又接受了一个匿名函数作
为参数,该匿名函数最终调用console.log()函数来打印一个"Hello
world!"字符串。这里需要调用setTimeout()方法是因为该方法将函数
注册到JavaScript运行库中,然后在JavaScript运行库中调用
Java.perform()方法将函数注册到App的Java运行库中并在其中执行
该函数(本范例打印输出了一条log)。

运行第一个程序

现在手机上运行frider-server

可是使用frida-ps -U 查看手机进程

android.process.media代表的是Android系统手机系统的媒体存储

我们在这个进程上注入以attach方式注入我们的程序

frida -U -l helloworld.js android.process.media

打印出hello world!了,好了frida学习完毕嘿嘿,

开个玩笑( •̀ ω •́ )✧


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM