frida hook java

发布于:2024-05-10 ⋅ 阅读:(27) ⋅ 点赞:(0)

代码例子

原函数:

在这里插入图片描述

hook函数:

if(Java.available){
    Java.perform(function(){
        var a = Java.use("com.sankuai.waimai.foundation.utils.security.a");
        a.a.overload("java.lang.String","java.lang.String","long","int").implementation=function(str1,str2,long1,int1){
            var result = this.a(str1,str2,long1,int1);      
			
			send("string1:" + str1 + ",string2:" + str2 + ",long1:" + long1 +",int1:" + int1 +  ",result: " + result);
			return result;
        }
    });

}


js代码解释:

Java.use:返回类实例。
s.a.overload: 重载a方法。当然,如果确定目标函数没有重载,可以去掉".overload(param)",如果不确定,为了保险起见,可以无脑使用此参数。
this.a:调用原来的a函数。
Java.available:这个字段标记Java虚拟机( Dalvik 或者 ART)是否已加载, 操作Java任何东西之前,要确认这个值是否为true。
Java.perform(fn):在Javascript代码成功被附加到目标进程时调用。

hook执行后输出:
在这里插入图片描述

变量类型:

基本类型 缩写
int I
long J
booleab Z
byte B
char C
float F
double D
short S
String java.lang.String

需要注意的是:
使用数组时才会使用缩写,如上例中的变量类型。

使用步骤

列出android手机上的进程:

ps -A 

或者:

frida-ps -U

启动frida-server:

 ./frida-server-x86-64

注入代码:

frida -U -f com.sankuai.meituan.takeoutnew -l d:\adbtest\mt_mtgsig.js -no-pause

按爪ctrl + c后,输入exit推出frida:

在这里插入图片描述

参考链接

  1. https://www.cnblogs.com/luoyesiqiu/p/10718997.html
  2. https://blog.csdn.net/freeking101/article/details/112634649

网站公告

今日签到

点亮在社区的每一天
去签到