查看: 4177|评论: 0
个人博客

[破解逆向] frida java 反射

admin 2020-05-31 15:18 4177 0
[复制链接]

1417

文章

258

评论

1万

积分

管理员

夏墨独周

积分
10100

论坛元老技术达人

QQ
发表于 2020-5-31 15:18:20 | 显示全部评论序号 |阅读模式
1、hook类构造方法var targetClass = Java.use("com.eumnq.app.XXXX");
targetClass.$init.implementation = function(a,b){
  console.log("hook start...");
  send(arguments[0]);
  send(arguments[1]);
  return this.$init(a,b);
}


2、hook类的重载方法
在方法后面加一个overload属性,参数为函数的类型,类型用字符串传入,用于指定具体要hook的方法。例如XXXX.test.overload("int").implementation。
注意,要填写类的路径,例如如果是字符串类型,则要用overload("int","java.lang.String")
XXXX.test.overload('int').implementation = function(a){
  console.log('hook start...');
  send(arguments[0]);
  console.log('hook success...');
  return 'this overload func is hooked';
}



3、hook对象参数的构造
使用一个类型的$new来实例化一个类对象


4、修改对象属性值
【公有属性】
如果obj.Attr获取到的还是对象,例如a.name的返回值是 {'value': '美元', 'fieldType': 2, 'fieldReturnType': {'className': 'java.lang.String', 'name': 'Ljava/lang/String;', 'type': 'pointer', 'size': 1}} 美元
这个时候使用a.name.value就能获取对象属性的值了。
【私有属性或者保护属性】
可以用java反射的方法设置。
在Java反射中,通过Java.cast(m.getClass(),clazz).getDeclaredField('num'),m为一个实例化对象,后面getDeclaredField可以获得属性。通过Java.use('java.lang.Class');获取类的构造器
这里,通过属性的get(ObjectsInstantiated)可以获取值,通过属性的setInt(ObjectsInstantiated,value)可以设置一个对象的属性值。ObjectsInstantiated为一个对象。
这里,对于反射后的值,用console.log可以很好的输出值,而send在此处会打印对象。

Java.perform(function(){
    var testutils = Java.use('com.eumnq.app.Utils');
    var XXXX = Java.use('com.eumnq.app.XXXX');
    testutils.test.overload('com.eumnq.app.XXXX').implementation = function(a){
      console.log('hook start...');
      var m = XXXX.$new(6666,"RMB");
      var clazz = Java.use('java.lang.Class');
      var num_id = Java.cast(m.getClass(), clazz).getDeclaredField('num');
      num_id.setAccessible(true);
      var value = num_id.get(m);
      console.log(value);
      send(value);
      num_id.setInt(m,23333);
      console.log(num_id.get(m));
      return this.test(m);
    }
  }
);

5、获取frida js里一个对象类型Object.prototype.toString.call(jsobj)  //返回[object String]代表一个字符串 [object Object]代表一个对象



来源:易游模拟器(QQ:207621422),转载请注明出处!
您需要登录后才可以评论 登录 | 立即注册

当前分类积分规则

关闭

站长推荐上一条 /1 下一条

QQ|易游网-易游模拟器 Copyright @2015-2026 ( 浙ICP备15028007号-1 )

© 2026 易游网-易游模拟器 Copyright @2015-2026

快速评论 返回顶部 返回列表