java程序如何hook? 先说下背景我需要的是在安卓平台上 HOOK某个进程的JAVA代码这两天查了很多资料 以为反射可以做到,发现根本不是一回事。Windows平台的HOOK的意思是 钩子在你想HOOK的某处代码 通过各种方法 执行到你的代码上 现在要做的是 某安卓进程中的JAVA代码 A方法调用B方法我想在A方法调用B方法的时候 拦截到A传给B的参数进行过滤不知道JAVA中怎么做到这样。 说到底,就是我要把B方法完全替换成我的代码。不知道这样说是否能明白 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 之前有个阿里的jvm工程师讲过这个,没听大懂,据说openJDK预留了很多hook,可以利用。建议查下阿里的资料。 step 1:先so ptrace注入到宿主进程step 2:在so里加载自己的jarstep 3:在jar里反射注入B 你好,我前天花了一天的时间来学习反射,看完之后发现反射应该是做不到的。我的需求是, 修改B的方法,让A调用B的时候,调用成我的方法。但是看反射里面,我只能修改B的属性以及数据,根本不能修改B的方法。请问如何修改啊? 是hook jvm吗?我得出的结论是如果既想HOOK java层的代码又无法直接对java做hook的话,就去hook jvm的 classloader 然后在classloader 载入此类的时候,装载我的类。。(纯属理论) 是hook jvm吗?我得出的结论是如果既想HOOK java层的代码又无法直接对java做hook的话,就去hook jvm的 classloader 然后在classloader 载入此类的时候,装载我的类。。(纯属理论)好像是的,是对jvm的优化。 单元测试用的mock系统基本都可以做到推荐 Mockito,它提供的 spy 功能就是你要的。JDK本身提供的动态代理实现也可以做到。也可以自己实现动态代理做到,你需要的是动态生成代码,动态编译、加载。有几种调用是不能代理的:方法内部的硬编码调用静态方法调用final的方法的调用这几种也被称为“对单元测试不友好”的代码。延伸开去说的话,这也是使用所谓“抽象工厂模式”或者类似 Spring 这种框架的意义之一,即避免成员对象实例化的硬编码。 楼主这个问题,建议用字节码解析吧,不过稍微有点复杂! 你可以了解一下Javassist等字节码工具,spring的AOP就有点像你的那种情况,拦截调用并且插入自己的切面逻辑,再执行B 关于泛型数组的问题 java和uml 给出一个int型数,比如5310 ,给他分成四个128以内的数,注意 不是随机的,通过这四个数不管如何计算,最后能得到5310 请教如何让一个文件中的两端rtf被分别读取到两个styledDoc中~~~ java源代码编辑器关键字颜色显示实现原理? JSP[相对路径问题] 谢谢大家。。。 g.drawString(....),怎样设置字体 [求助]我这里有段程序,无法运行,请高手指点! 求救!!各位高手!jbuilder的下载。 请指一条考高程之路! 一个java算法小题,大家帮帮忙 一段matlab的代码翻译成java的
step 2:在so里加载自己的jar
step 3:在jar里反射注入B
你好,我前天花了一天的时间来学习反射,看完之后发现反射应该是做不到的。我的需求是, 修改B的方法,让A调用B的时候,调用成我的方法。但是看反射里面,我只能修改B的属性以及数据,根本不能修改B的方法。请问如何修改啊?
是hook jvm吗?我得出的结论是如果既想HOOK java层的代码又无法直接对java做hook的话,就去hook jvm的 classloader 然后在classloader 载入此类的时候,装载我的类。。(纯属理论)
是hook jvm吗?我得出的结论是如果既想HOOK java层的代码又无法直接对java做hook的话,就去hook jvm的 classloader 然后在classloader 载入此类的时候,装载我的类。。(纯属理论)
好像是的,是对jvm的优化。
方法内部的硬编码调用静态方法调用final的方法的调用
这几种也被称为“对单元测试不友好”的代码。延伸开去说的话,这也是使用所谓“抽象工厂模式”或者类似 Spring 这种框架的意义之一,即避免成员对象实例化的硬编码。