首页 > 其他分享 >Frida native 使用

Frida native 使用

时间:2022-11-22 21:47:09浏览次数:42  
标签:00 console addr lib log 使用 Frida total native

Interceptor使用

native函数原型

long total;

template<typename T>
T addNum(T const x, T const y) {
    return x + y;
}

extern "C"
jint getNum(JNIEnv *env, jobject thiz, jint x) {
    int now = x * x + addNum(x, x);
    total += now;
    return now;
}

extern "C"
jlong getTotal(JNIEnv *env, jobject thiz){
    return total;
}
var lib_addr = Module.findBaseAddress("libdynamic.so")

function frida_Interceptor() {

    Interceptor.attach(Module.findExportByName('libdynamic.so', "getNum"), {
        onEnter: function (args) {
            //args[2]对应函数原型中第三个参数
            console.log("getNum: " + args[2].toInt32());

            // //输出
            // console.log('Context information:');
            // //输出上下文因其是一个Objection对象,需要它进行接送、转换才能正常看到值
            // console.log('Context  : ' + JSON.stringify(this.context));
            // //输出返回地址
            // console.log('Return   : ' + this.returnAddress);
            // //输出线程id
            // console.log('ThreadId : ' + this.threadId);
            // console.log('Depth    : ' + this.depth);
            // console.log('Errornr  : ' + this.err);
        },
        onLeave: function (retval) {
            //打印返回值, 转成int32
            console.log("retval:" + retval.toInt32())
            
            console.log("lib_addr")
            console.log(hexdump(ptr(lib_addr), {
                length: 16,
                header: true,
                ansi: true
            }))
            
            //total	0000000000002FE8	
            var total_addr = lib_addr.add(0x02FE8);
            
            console.log("total_addr")
            console.log(hexdump(ptr(total_addr), {
                length: 16,
                header: true,
                ansi: true
            }))
            
           
            //var buf = Memory.readByteArray(total_addr, 4);
            console.log("total " +  total_addr.readLong());
        }
    });

}

输出结果

getNum: 43
getNum: 43
retval:1935
lib_addr
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
7f067ea000  7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
total_addr
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
7f067ecfe8  6d 4d 00 00 00 00 00 00 00 00 00 00 00 00 00 00  mM..............
total 19821
retval:1935
lib_addr
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
7f067ea000  7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
total_addr
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
7f067ecfe8  6d 4d 00 00 00 00 00 00 00 00 00 00 00 00 00 00  mM..............
total 19821

App效果

总结

通过Module.findBaseAddress("libdynamic.so"),我们拿到libdynamic.so的地址,后面我们hexdump了此地址,与ida也一致

通过Interceptor.attach()中设置回调,我们获取了getNum函数传入的参数,通过args[2].toInt32()获取参数值

0x02FE8 是total的地址 ,利用lib_addr.add(0x02FE8);偏移到total的地址,通过total_addr.readLong()读取total的值

标签:00,console,addr,lib,log,使用,Frida,total,native
From: https://www.cnblogs.com/tangshunhui/p/16916454.html

相关文章

  • FastAPI使用typing类型提示
    typing是Python标准库,用来做类型提示。FastAPI使用typing做了:编辑器支持;类型检查;定义类型,requestpathparameters,queryparameters,headers,bodies,depende......
  • 使用Pandas把表格中的元素,条件小于0.2的变为0,怎么破?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【北海】问了一个Pandas处理的问题,提问截图如下:原始的代码如下:二、实现过程这里【瑜亮老师】给了一份代码,真......
  • java注解-使用注解处理器实现动态生成get和set方法
    目录一、简介二、如何实现1.环境说明:2.创建项目3.定义@Data注解4.定义@Data的注解处理器5.创建一个测试类6.通过idea的maven工具栏进行编译7.查看编译后的结果8.通过反射查......
  • Nginx 使用ngx_http_map_module模块的map指令遇到的常见问题。
    ngx_http_map_module请先看参阅的NginxMap指令文档后吧。这里的说明比较简略。基本使用Demohttp{map"beijing"$Name{default"中国";"beijing""北......
  • 关于echars在vue3中的使用
    根文件的配置<!--App.vue--><template><router-view></router-view></template><script>import*asechartsfrom'echarts'import{provide}from......
  • Git基础使用
    1、Git工作流程workspace:工作区,平时开发改动代码的地方,这个地方的代码是最新的Index:暂存区,通过gitadd.命令会将代码存放到暂存区Repository:本地仓库,通过gitcomm......
  • AXI iic使用
    本文主要讲述zynq的iic使用,iic作为主站使用,作为从站的本文不适合。Iic的接口在PL端。(iic的接口在ps端的情况下,不适合本文)如果iic的接口在ps端,请看:https://blog.csdn.net/......
  • mysql的基本使用
    目录数据库数据的分类MySQL简介MySQL基本使用系统服务的制作密码相关操作数据库重要概念基本的sql语句数据库1.数据库服务 统一路径统一操作方式(任何语言都可以操作)......
  • #yyds干货盘点#【愚公系列】2022年11月 微信小程序-地图的使用之面聚合
    前言地图基础属性:属性类型默认值必填说明最低版本longitudenumber是中心经度1.0.0latitudenumber是中心纬度1.0.0scalenumber16否缩放......
  • 使用modelsim仿真含Xilinx原语代码块
    很早之前笔者已经写过关于modelsim仿真的文章了,不过之前笔者做的仿真都是有现成代码块的仿真。对于那些使用原语的代码块进行仿真时则需要产生相关的仿真库,笔者这里使......