首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >frida小功能点备注(Android)

frida小功能点备注(Android)

作者头像
qife122
发布2025-06-16 08:25:30
发布2025-06-16 08:25:30
5010
举报

1.frida命令以启动app的方式注入frida脚本到app,并重定向输出日志到文件中

代码语言:javascript
复制
frida -U -f com.example.application -l script.js > script.log

2.frida hook native jstring转成java.lang.String再打印

代码语言:javascript
复制
var str = Java.use("java.lang.String");
var s = Java.cast(retval, str);
console.log("onLeave NewString result is: " + s);

3.frida hook native 未导出函数,打印寄存器的值 上下文:具有键pc和sp的对象,它们是分别为ia32/x64/arm指定EIP/RIP/PC和ESP/RSP/SP的NativePointer对象。其他处理器特定的键也可用,例如eax、rax、r0、x0等。也可以通过分配给这些键来更新寄存器值

代码语言:javascript
复制
var libxxxAddr = Module.findBaseAddress("libxxx.so");
       var resultAddr = libxxxAddr.add(0x23AA);
       console.log(resultAddr);
       if(resultAddr != null){
           Interceptor.attach(resultAddr ,{
               onEnter:function (args){
                   console.log("hook result on enter");
                   console.log(this.context.x0);
               },
               onLeave:function (retval){
                   console.log("hook result on leave");
               }
           })
       }

4.frida hook native 函数参数包含(JNIEnv *, jobject)时打印参数要找后面的参数,比如下面函数

代码语言:javascript
复制
(JNIEnv_ *env, __int64 a2, __int64 a3, __int64 a4)
实际参数是a3、a4
打印时则
hexdump(args[2])
hexdump(args[3])
前面的env、jobject可不打印

5.frida hook native 输出函数参数内存数据(16进制)

代码语言:javascript
复制
console.log("test str is: " + hexdump(args[1],{offset: 0,length: 40000,prefix: '[+] ',indent: 4,width: 32,uppercase: false,ansi: false}));

6.frida hook native遍历导出函数

代码语言:javascript
复制
const hooks = Module.load('libxxx.so');
var Exports = hooks.enumerateExports();
for(var i = 0; i < Exports.length;i++){
    //函数类型
    console.log("type:",Exports[i].type);
    //函数名称
    console.log("name:",Exports[i].name);
    //属于的模块
    console.log("module:",Exports[i].module);
    //函数地址
    console.log("address:",Exports[i].address);
}

7.frida hook native 打印指定变量内存数据

代码语言:javascript
复制
var dword_1A450Addr = libxxxAddr.add(0x1A0A0);
console.log("dword_1A010Addr is: " + hexdump(dword_1A450Addr));

8.frida hook native函数堆栈调用

代码语言:javascript
复制
console.log('RegisterNatives called from:\\n' + Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\\n') + '\\n');
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全技术点滴分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档