Frida Travel 1

admin 2023年10月31日10:10:04评论49 views字数 978阅读3分15秒阅读模式

frida [java.lang.Object 构造


背景

在学习frida的过程中,遇到一个比较有趣的函数,需要对其进行hook,函数如下:


public static void foo(Object[] data){        ......}



其中data 可以传多个不同类型的数据,比如true,1233,string等,我需要对其进行调用


调用


由于参数是一个array,使用frida的Java.array(data,class)进行调用,但是当我传递

var array = Java.array('java.lang.Object',[aClass.$new(),true,123])的时候,frida 就报错了



Error: invalid argument value    at frida/node_modules/frida-java-bridge/lib/env.js:166    at frida/node_modules/frida-java-bridge/lib/class-factory.js:106    at /test.js:36    at ye (frida/node_modules/frida-java-bridge/lib/class-factory.js:574)    at frida/node_modules/frida-java-bridge/lib/class-factory.js:557



搜了一堆资料之后,偶然发现了Integer这个类,突然想到在java中,基本类型是不继承Object类的,所以123,true

这些值是不能存在于数组中的。知道了问题的根源后,其实解决方案也很好做,只要使用继承自Object的类就行了

于是就有了如下的代码

var array = Java.array('java.lang.Object',[aClass.$new(),aClass.$new()])array[1]= Java.cast(Boolean.$new(true), Objectx);this.Check(array);


总结


frida 的大部分hook代码都用js编写,除了要了解js的语法之外,frida自带的api功能也很强大,但是自己对这块用的太少了,看到大佬们的代码,发现真的好多都没看懂


原文始发于微信公众号(SecurityWay):Frida Travel 1

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月31日10:10:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Frida Travel 1http://cn-sec.com/archives/1131336.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息