frida so Hook 函数参数返回值修改

![](https://s1.51cto.com/images/blog/201905/21/e59d78e7f1f9e60f376fd81c75cbd12f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
# -*- coding: UTF-8 -*-
import frida, sys

jsCode = """

Java.perform(function(){

    var nativePointer = Module.findExportByName("libhello.so", "Java_com_xiaojianbang_app_NativeHelper_add");
    send("native: " + nativePointer);
    Interceptor.attach(nativePointer, {
        onEnter: function(args){
            send(args[0]);
            send(args[1]);
            send(args[2].toInt32());
            send(args[3].toInt32());
            send(args[4].toInt32());
            args[4] = ptr(1000);   //new NativePointer
            send(args[4].toInt32());
        },
        onLeave: function(retval){
            send(retval.toInt32());
            retval.replace(10000);
            send(retval.toInt32());
        }
    });

});

""";

def message(message, data):
    if message["type"] == ‘send‘:
        print(u"[*] {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/2397665

时间: 2024-10-12 10:41:54

frida so Hook 函数参数返回值修改的相关文章

Python 4.函数参数 返回值与文档查看(基础篇)

本章大纲:(以后文笔格式都会在开头有个大纲) -五大参数- 普通参数 默认参数 关键字参数 收集参数 收集参数解包问题 关键字收集参数 关键字收集参数解包问题 -返回值- -文档查看- -普通参数- 普通参数又名为位置参数,没有默认值,根据具体使用位置进行传值 普通参数和默认参数的不同 普通参数就是如同名字一般普通,没有默认值 而默认参数则可以规定默认值(也就是规定了默认值的普通参数而已) 但是默认参数要牢记一点:默认参数必须指向不变的对象值 请看下面例子 def add_end(L=[]):

Swift 定义函数 参数 返回值

定义多参数函数 - 用func声明函数  func 函数名 (参数名1: 参数类型, 参数名2: 参数类型) ->  返回类型{ 函数体 } func halfOpenRangeLength(start: Int, end: Int) -> Int { return end - start } let value = halfOpenRangeLength(1, end: 9) print(value)

SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改

有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 1 CREATE PROCEDURE [OutValue] 2 @a int, 3 @b int, 4 @c int output 5 AS 6 Set @c = @a + @b 7 GO 打开Settings.ttinclude模板,找到SPParam类,修改为下面代码 1 public class SPParam{ 2 p

自定义函数中的参数返回值 “-> (Int -> Int)”的问题

func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() println(increment(7)) 这里为什么要写两个 Int->Int 这里是返回值是参数,左边是参数,右边是返回值的意思. 自定义函数中的参数返回值 "-> (Int

初识函数、函数的参数、函数的参数传值、函数的调用形式、函数的返回值

初识函数 内置函数自定义函数 定义无参函数 #只打印执行语句的时候def foo(): print('from the foo')# print(foo.__doc__) #查看函数的文档注释 定义有参函数 #依赖外部传来的值的时候def bar(x,y): print(x) print(y) 定义空函数 #程序开发阶段经常使用,写程序框架的时候def auth(): pass 函数的参数 函数的参数介绍形参和实参的概念 def foo(x,y): #在函数定义阶段,括号内定义的参数->形式参数

C++函数的返回值类型和参数类型

在C++中函数的定义为: type name(P1,P2) {stament}; 其中type为函数的返回值,name 为函数的标识符,P1,P2为函数的两个参数,该参数作用范围仅在该函数体内. 当一个函数不要返回任何值时,该函数为空函数,其类型为void,当该函数也没有参数时,也可以用void表示无参数,也可什么都不填,例如: void printmessage (void){  cout << "I'm a function!";} 定义了一个空函数,该函数无返回值,且

函数的返回值、函数的调用、函数的参数

1.函数的返回值 ''' 1.什么是返回值 返回值是一个函数的处理结果, 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 --------(值可以是是以数据类型) 注意: 1.return是一个函数结束的标志,函数内可以有多个return, 但只要执行一次,整个函数就会结束运行------即函数下面有再多代码也不会被执行 2.return 的返回值无类型限制,

函数的返回值与参数

一.函数的返回值 1.什么是返回值 返回值是一个函数的处理结果, 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 注意: 1.return是一个函数结束的标志,函数内可以有多个return, 但只要执行一次,整个函数就会结束运行 2.return 的返回值无类型限制,即可以是任意数据类型 3.return 的返回值无个数限制,即可以用逗号分隔开多个任意类型的值

Python全栈__函数的初识、函数的返回值、函数的参数

1.函数的初识 def关键字 空格 函数名(与变量名命名规则相同):英文冒号 函数体 执行函数:函数名+() 函数是以功能为导向的. def login(): pass def register(): pass 1 def my_len(): 2 l1 = [1, 2, 3, 1, 6, 9, 10] 3 count = 0 4 for i in l1: 5 count += 1 6 my_len() 2.函数的返回值 return: 1.函数中遇到 return 结束函数,下面代码不执行. d