Frida简单使用.md

Hook 拦截

选择某一个设备

adb -s 设备名 shell 

server的通信端口,但是我没有执行,好像也没事,不确定是不是我记错了

adb forward tcp:27042 tcp:27042

server方式

push文件并且改名字

adb push file /data/local/tmp/fs 

需要在root环境下完成

查看手机进程

-u:就是USB

frida-ps -u 

Hookjava层

  • 普通方法
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.add.implementation = function (a,b) {
    //1.打印方法的参数
    //ab是方法的参数值
    console.log(a)
    console.log(b)
    //方法二:通过argement[0]这种方式进行
    console.log(arguments[0])
    console.log(arguments[1])

    console.log(
        "Focus change:",
        this.getClass().getName(),
        "hasFocus=" + hasFocus
    );
    return this.onWindowFocusChanged(hasFocus);
};
  • 构造方法
var money = Java.use("com.tony.Money");
money.$init.implementation = function (a,b) {
    return this.$init();
}
  • 函数重载
var mainActivity = Java.use("com.tony.MathActivity");
"java.lang.String"
mainActivity.add.overload("int").implementation = function (a,b) {
    //1.打印方法的参数
    //ab是方法的参数值
    console.log(a)
    console.log(b)
    //方法二:通过argement[0]这种方式进行
    console.log(arguments[0])
    console.log(arguments[1])

    console.log(
        "Focus change:",
        this.getClass().getName(),
        "hasFocus=" + hasFocus
    );
    return this.onWindowFocusChanged(hasFocus);
};
  • 构造对象参数
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
    //ab是方法的参数值
    console.log(a)



    //构造
    var people = Java.use("com.tony.People")
    //创建对象
    people.$new("xx",100)


    return this.test(a);
};
  • 修改参数
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
    //ab是方法的参数值
    console.log(obj)
    console.log(obj.name.value)
    // 修改
    obj.name.value = "xx"
    
    return this.test(a);
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容