zoukankan      html  css  js  c++  java
  • frida hook hashmap

    一、hook hasmap:

    js_code = """
    Java.perform(function () {
       var linkerHashMap=Java.use('java.util.HashMap');
        linkerHashMap.put.implementation = function(arg1,arg2){
            send("=================linkerHashMap.put====================");
            var data=this.put(arg1,arg2);
            send(arg1+"-----"+arg2);
            send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            return data;
        }   
    });
    
    """
    
    import logging
    import frida
    import sys
    
    
    def on_message(message, data):
        if message['type'] == 'send':
            print("[*] {0}".format(message['payload']))
        else:
            print(message)
    
    
    rdev = frida.get_remote_device()
    
    session = rdev.attach("com.oppo.market")  # app包名
    print(session)
    script = session.create_script(js_code)
    print(script)
    
    
    def show(message, data):
        print(message)
    
    
    script.on("message", show)
    
    # 加载脚本
    script.load()
    sys.stdin.read()

     

    二. hook JSONObject

    var JSONObject=Java.use('org.json.JSONObject');
    JSONObject.toString.overload().implementation = function(){
        send("=================org.json.JSONObject.toString====================");
        send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
        var data=this.toString();
        send("org.json.JSONObject.toString result:"+data);
        return data;
    }
    for(var i = 0; i < JSONObject.put.overloads.length; i++){
        JSONObject.put.overloads[i].implementation = function(){
            send("=================org.json.JSONObject.put====================");
            if(arguments.length == 2){
                send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
                send("key:"+arguments[0]);
                send("value:"+arguments[1]);
                var data=this.put(arguments[0],arguments[1]);
                return data;
            }
        }
    }
    for(var i = 0; i < JSONObject.$init.overloads.length; i++){
        JSONObject.$init.overloads[i].implementation = function(){
            send("=================org.json.JSONObject.$init====================");
            send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            if(arguments.length == 1){//只有1个string参数
                send("string:"+arguments[0]);
            }else if(arguments.length == 2){ //其他构造函数用到的时候可以继续添加
                
            }
        }
    }
  • 相关阅读:
    鸟哥linux私房菜学习笔记,U盘安装centos5.3不能正常进入图形界面的问题
    loadrunner11的移动端性能测试之脚本录制
    JVM(java 虚拟机)内存设置
    数据结构一元多项式加减乘
    数据结构顺序表
    数据结构栈
    LoadIcon(nFaceID[i])
    数据结构单链表
    mysql得到wenshell
    窗口背景刷新的问题
  • 原文地址:https://www.cnblogs.com/tjp40922/p/15647537.html
Copyright © 2011-2022 走看看