在学习frida的过程中,遇到一个比较有趣的函数,需要对其进行hook,函数如下:
1 | 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 就报错了
1 | Error: invalid argument value |
搜了一堆资料之后,偶然发现了Integer这个类,突然想到在java中,基本类型是不继承Object类的,所以123,true
这些值是不能存在于数组中的。知道了问题的根源后,其实解决方案也很好做,只要使用继承自Object的类就行了
于是就有了如下的代码
1 | var array = Java.array('java.lang.Object',[aClass.$new(),aClass.$new()]) |
frida 的大部分hook代码都用js编写,除了要了解js的语法之外,frida自带的api功能也很强大,但是自己对这块用的太少了,看到大佬们的代码,发现真的好多都没看懂
如果觉得我的文章对你有帮助,可以扫描以下微信二维码提供赞赏,您的支持是对我的认可。