第十课、frida环境搭建与使用

文章介绍了如何搭建Frida环境,包括使用frida-server自定义端口、通过VSCode进行typescript开发以及使用frida工具进行远程过程调用(RPC)。同时,展示了如何hookJava的KeyStore.load函数,详细列出了相关代码实现。
摘要由CSDN通过智能技术生成

第十课、frida环境搭建与使用

frida检测名字与端口

  • 修改名字与端口

  • mv frida-server-12.8.0-android-arm64 fs1280a64

  • 查看端口的命令

  • netstat -tuulp |grep fs

  • 默认的是27042

  • 开启自定义端口

  • ./fs1280a64 -v -l 0.0.0.0:8787 listen

  • 在虚拟机上命令

  • frida-ps -H 192.168.31.97:8787 查看进程

  • frida -H 192.168.31.97:8787 -F attach前台程序

  • objection使用

  • objection -N -h 192.168.31.97 -p 8787 -g com.android.settings explore

  • dpkg -i dwada.deb 安装deb格式软件

  • image-20230218230700995

  • frida脚本开发环境正确操作:
    之前建议的这种方法frida-gum.d.ts已经被大胡子删掉了,他现在不赞成使用这种方式。
    目前最新正确的Frida环境搭建方法:
    1. git clone https://github.com/oleavr/frida-agent-example.git
    2. cd frida-agent-example/
    3. npm install
    4. 使用VSCode等IDE打开此工程,在agent下编写typescript,会有智能提示。
    5. npm run watch会监控代码修改自动编译生成js文件
    6. frida -U -f com.example.android --no-pause -l _agent.js
    
  • vscode使用脚本

  • frida -H 192.168.31.97:8787 -F -l _agent.js 这个ip地址是要写手机的ip地址

  • r

  • cn.soulapp.android


RPC调用

function hook_KeyStore_load() {
    Java.perform(function () {
        var StringClass = Java.use("java.lang.String");
        var KeyStore = Java.use("java.security.KeyStore");
        KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
            console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            console.log("KeyStore.load1:", arg0);
            this.load(arg0);
        };
        KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
            console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
            this.load(arg0, arg1);
        };

        console.log("hook_KeyStore_load...");
    });
}
setImmediate(hook_KeyStore_load)

debug_print(‘Resuming PID test {pid}’.format(pid=self.spawned_pid))
self.device.resume(self.spawned_pid)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值