0x01前言

之前学习了Xposed如何实现不重新打包APP的条件下,实现函数的Hook,在使用过程中,除了方法的hook,比如我要实现某些函数额调用,不同类中的函数和Native方法的调用。

0x02 测试环境

1.待测试的APP,这里写了一个测试APP,Mainactivity实现界面,定义两个函数:

public String test1()
Public String test2(String str)

2.新建一个Class为test,并定义两个函数 ,和mainactivity一样,test1()和test2(String str),

3.新建一个testNdk的class,实现native方法,并定义两个函数,

public native String teststr();
public native String mytest(String str);

一个带参数和一个没有参数。

0x03 Xposed 实现方法的调用

这里我们hook mainactivity的btntest方法,

final Class <?> test = XposedHelpers.findClass("com.debug.xposed.xposedtest.test", lpparam.classLoader);final Class <?> testndk = XposedHelpers.findClass("com.debug.xposed.xposedtest.testndk", lpparam.classLoader);findAndHookMethod("com.debug.xposed.xposedtest.MainActivity", lpparam.classLoader, "testbtn", View.class, new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("Hook之前");//getSign}@Override//函数执行后protected void afterHookedMethod(MethodHookParam param) throws Throwable {XposedBridge.log("Hook之后");try {String str1 = (String) XposedHelpers.callMethod(param.thisObject, "test1");Log.i("debug","mainactivity test1 return "+str1);String str2 = (String) XposedHelpers.callMethod(param.thisObject, "test2","xposed input main test2");Log.i("debug","mainactivity test2 return "+str2);Object testObject = test.newInstance();String str3 = (String) XposedHelpers.callMethod(testObject,"test1");Log.i("debug","test test1 return= "+str3);String str4 = (String) XposedHelpers.callMethod(testObject, "test2", "hello ", "txmg");Log.i("debug","test test2 return= "+str4);Object testndkobject = testndk.newInstance();Method myteststr =  XposedHelpers.findMethodBestMatch(testndkobject.getClass(), "teststr");String str5 = (String) myteststr.invoke(testndkobject);Log.i("debug","ndk teststr return= "+str5);Method mytest =  XposedHelpers.findMethodBestMatch(testndkobject.getClass(), "mytest"," gggg");String str6 = (String) mytest.invoke(testndkobject,"mytest input test ");Log.i("debug","ndk mytest return= "+str6);}catch (Exception e){e.printStackTrace();}

Log输出:

原文地址: https://www.ijiza.cn/2016/02/14/xposed%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%B1%BB%E4%B8%AD%E5%87%BD%E6%95%B0%E7%9A%84%E8%B0%83%E7%94%A8/

Xposed如何实现类中函数的调用相关推荐

  1. python类中函数互相调用记得带self

    import time from selenium import webdriver import pymysql import uuid class  main (object): def  __i ...

  2. 梳理:python—同一个类中的方法调用

    为什么突然在此提到这个梳理问题呢? 因为在自己实践综合练习学过的知识时,突然觉得有些知识点的运用总是不成功,于是翻过课本进行回顾,总是觉得是对的,可是当再进一步思考"既然是对的,为什么在程序 ...

  3. python为什么closed_为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed])...

    为什么python类的函数被调用两次[关闭](Why a function of python class is called twice [closed]) 我遇到了两次调用的python类函数的问 ...

  4. c++模板(函数模板,类中函数模板,类模板)

    作用: 减少程序中的冗余信息.如:多个函数或类的除了参数类型外,其余都完全相同时,可以使用模板来减少重复信息(参考函数重载时,输入参数数量也相同的情况) 1.函数模板 即建立一个通用函数,只不过该函数 ...

  5. 站长在线Python精讲:在Python中函数的调用详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的调用详解>.本文的主要内容有:调用函数的基本语法和调用自定义函数的实例讲解. 目录 1.调用函数的基本 ...

  6. @Transactional-同一个类中方法自调,调用方法事物失效

    问题分析 一个类中的方法调用另一个事物传播性为创建事物的方法,调用的方法事物失效? SpringAOP 代理的Service对象调用了其方法,这个方法再去调用这个Service中的其他方法是没有使用A ...

  7. golang 相互引用_golang go run undefined 同一个package中函数互相调用的问题

    golang中同一个package中函数互相调用的问题 同一个packge中(test) a.go package main func main(){ Test() } b.go package ma ...

  8. @transactional注解_为啥同一个类中普通方法调用Spring注解方法,注解会失效?看完你就明白,So easy!...

    Spring注解(如@Transactional.@Cacheable.@Async等),在使用不当时,很可能会失效.失效的情况有很多种,本文我们就来瞅瞅,为啥同一个类中普通方法调用Spring注解方 ...

  9. 类中函数模板 typeof_Julia中的typeof()函数

    类中函数模板 typeof Julia| typeof()函数 (Julia | typeof() function) typeof() function is a library function ...

最新文章

  1. 微服务架构——不是免费的午餐
  2. 送书拉!给开发者们的几本书籍 |福利
  3. 工业机器人什么情况下会出现奇点_【怎么解释机器人奇点造成的结果?】-工业-有米下载-6miu.com...
  4. aws创建html网页,AWS: 在AWS上创建一个网站,综合运用(Lambda + Api Gateway + Dynamodb + S3)...
  5. QI实例-改变空间参考
  6. 不要再问我跨域的问题了
  7. c#常用类库----计算机信息类
  8. [渝粤教育] 西南科技大学 经济法学 在线考试复习资料(1)
  9. 基于STM32F4系列 之 霍尔编码器减速直流电机
  10. 程序员的底层思维:逻辑思维
  11. 电路设计_STM8S003F3P6 AWUADC使用小结
  12. ios 开发控件中心点_IOS开发UI篇—手写控件,frame,center和bounds属性
  13. Pro Tools 贴士- 使用Snapper快速试听和导入音频素材
  14. 从 0 到 1 学习 elasticsearch ,这一篇就够了!(建议收藏)
  15. 国家普通话水平测试官方手机软件,普通话测试软件 – 免费手机普通话测试软件,用手机模拟测试普通话水平[Android]...
  16. Python软件编程等级考试三级——20210905
  17. 解决操作必须使用一个可更新的查询
  18. 私有云的优缺点_什么是公有云、私有云、混合云 ?各自的优缺点有哪些?
  19. 语义分割Trick集合
  20. 分别用 for,while,do…while 语句编写程序,实现求前 n 个自然数之和

热门文章

  1. 【Demo 0062】目录及文件基本操作
  2. Delphi将输入汉字自动产生拼音简码
  3. 吴恩达 coursera ML 第十一课总结+作业答案
  4. linux常用关机、重启、注销命令
  5. TOPSIS(逼近理想解)算法原理详解与代码实现
  6. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  7. 【无标题】科大星云诗社动态20220109
  8. 晚安科大20211130
  9. 中文文件名乱码_全能型Mac解压缩软件 MacZip2.0.1(41)中文版 原ezip
  10. 系统间通信1:阻塞与非阻塞式通信B