frida Hook 重载方法

用overload("int")

import frida, sys

jscode = """
Java.perform(function () {
    var utils = Java.use(‘com.xiaojianbang.app.Utils‘);
    utils.getCalc.implementation = function (a, b) {
        console.log("Hook Start...");
        send(arguments[0]);
        send(b);
        send("Success!");
        var num = this._getCalc(100, 200, 300);
        send(num);
        return num;
    }

    var money = Java.use(‘com.xiaojianbang.app.Money‘);
    money.$init.implementation = function (a, b) {
        console.log("Hook Start...");
        send(arguments[0]);
        send(b);
        send("Success!");
        return this.$init(10000, "美元");
    }

    utils.test.overload("int").implementation = function (a) {
        console.log("Hook Start...");
        send(arguments[0]);
        send("有参数!");
        return "有参数";
    }
    utils.test.overload().implementation = function (a) {
    console.log("Hook Start...");
    send(arguments[0]);
    send("没有参数!");
    return "没有参数";
    }

});
"""

def message(message, data):
    if message["type"] == ‘send‘:
        print("[*] {0}".format(message[‘payload‘]))
    else:
        print(message)

process = frida.get_remote_device().attach(‘com.xiaojianbang.app‘)
script= process.create_script(jscode)
script.on("message", message)
script.load()
sys.stdin.read()


原文地址:https://blog.51cto.com/haidragon/2396981

时间: 2024-10-13 01:01:22

frida Hook 重载方法的相关文章

操作符重载方法

CLR规范要求重载操作符重载方法必须是public和static方法 C#要求操作符重载方法至少有一个参数的类型与当前定义的这个方法类型相同 为了减少运行时开销,编译器会直接针对基元类型执行运算,并直接生成操作这些类型的实例的中间代码(IL)指令,所以在Framework标准库中没有定义基元类型的操作符重载 代码示例 public sealed class Complexe { public static Complexe operator +(Complexe c1, Complexe c2)

重载方法匹配算法

(2.3.1的补充资料)泛读 Java overload resolution--重载方法匹配算法如下: (1)找出所有能够调用的方法.能够调用的方法意味着形参个数等于实参个数,实参的类型能够转换为方法形参的类型. (2)如果实参与形参的类型能够直接对应,则执行该方法. (3)如果能够调用的方法只有一个,则执行该方法. (4)能够调用的方法不止一个时,逐一作出判断:如果一个方法的类型签名都可以赋值给另一个方法,则后者(类型大者)被排除:重复此操作,直到无法排除为止. (5)经过步骤(4),如果只

Physics.Raycast重载方法的参数隐式转换引发的血案

我用Raycast检测两个物体是否碰撞,发现无论如何结果都不太对劲,ray貌似忽略了我设置的LayerMask 代码是这样的: Physics.RaycastAll(start, Vector3.down, 1 << mask); 看出来问题在哪里了么? 尼玛,根本没有Physics.Raycast(Vector3 start, out RaycastHit hit, int layerMask) 这样的重载好不好... 我不知道从哪儿得来的一个印象,觉得有这么一个重载,就一直在用. 但是为什

【译】UNIVERSAL IMAGE LOADER. PART 3(四个DisplayImage重载方法详解)

在之前的文章,我们重点讲了Android-Universal-Image-Loader的三个主要组件,现在我们终于可以开始使用它了. Android-Universal-Image-Loader有四个重载方法 void displayImage(String url, ImageView view) void displayImage(String url, ImageView view, DisplayImageOptions options) void displayImage(String

Parallel.For 你可能忽视的一个非常实用的重载方法

 说起Parallel.For大家都不会陌生,很简单,不就是一个提供并行功能的for循环吗? 或许大家平时使用到的差不多就是其中最简单的那个重载方法,而真实情况 下Parallel.For里面有14个重载,而其中那些比较复杂的重载方法,或许还有同学还不知道怎么用呢~~~ 刚好我最近我有应用场景了,给大家介绍介绍,废话不多说, 先给大家看一下这个并行方法的重载一览表吧... 一:遇到的场景 我遇到的场景是这样的,项目中有这样一个功能,这个功能需要根据多个维度对一组customerIDList进行筛

frida hook构造函数

frida hook这种写法的话 进程必须是打开状态 import frida, sys ''' 我们要hook构造函数,和普通的函数是有区别的,要用$init这种形式,并且要return this.$init(arg1,arg2)调用原始的函数实现 ''' jscode = """ Java.perform(function () { var utils = Java.use('com.xiaojianbang.app.Utils'); utils.getCalc.impl

JAVA的List接口的remove重载方法调用原理

前言 说真的,平常看源码都是自己看完自己懂,很少有写出来的冲动. 但是在写算法的时候,经常用到java中各种集合,其中也比较常用到remove方法. remove有重载函数,分别传入参数是索引index或者数据Object(指定泛型后自动转换),如果指定泛型是其他数据类型还好,但是指定的是Integer或者是int的话,或者就有点懵了. 这曾经也困惑过我,所以我就唯有用实践解惑了. 测试类设计 测试类一 public class Text { public void remove(int ind

Frida HOOK微信实现骰子作弊

由于微信摇骰子的功能在本地进行随机后在发送,所以存在可以hook掉判断骰子数的方法进行修改作弊. 1.frida实现hook java层函数1)写个用来测试的demo,当我们点击按钮的时候会弹出窗口显示数字.代码中我是传进的参数是4,显示为8. package com.example.fridatest; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import

python重载方法

据说,python的对象天生拥有一些神奇的方法,他们总被双下划线包围,他们是面向对象Python的一切.他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发生的. Python的魔法方法非常强大,然而随之而来的则是责任.了解正确的方法去使用非常重要! 注:原文地址http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D4