声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 523,阅读大约需 3 分钟
前言
有师傅问Java进程怎么hook?我当时回的Frida也可以hook,但是今天测试之后,发现Frida hook java进程会出现各种各样的问题,效果远不如hook Android要好。
于是搜了一下,找到了github上的一个项目btrace。它对java进程的支持比较好。因为本身也是java写的,所以windows和linux系统都能用。但btrace只能实现监控和分析,并不能修改传入的参数和返回值,存在一定的局限性。
btrace介绍
BTrace是一个强大的Java动态追踪工具,可以在不重启应用的情况下监控Java程序的运行情况。它基于字节码插桩来执行实时监控。BTrace 的主要功能是观察和分析代码的执行情况,如方法的调用、变量的值等。
项目地址:https://github.com/btraceio/btrace
下载到本地,解压后,配置环境变量
cmd配置临时环境变量
set path=D:xxxxbtrace-v2.2.6-bin;D:xxxxbtrace-v2.2.6-binbin;%path%
查看Java进程
btrace -l
IDEA配置btrace脚本开发环境
maven仓库:https://mvnrepository.com/artifact/io.btrace/btrace-maven-plugin
IDEA新建maven项目,在pom.xml中添加依赖
<!-- https://mvnrepository.com/artifact/io.btrace/btrace-maven-plugin --><dependency> <groupId>io.btrace</groupId> <artifactId>btrace-maven-plugin</artifactId> <version>2.2.6</version></dependency>
之后,btrace脚本代码就能自动补全。
演示
hook 打印controller传入的参数
springboot controller代码
@RestControllerpublic class BtraceController { @GetMapping(value = "/arg1") public String arg1(@RequestParam("name") String name) throws InterruptedException { return "hello," + name; }}
编写PrintArgSimple
@BTracepublic class PrintArgSimple { @OnMethod( clazz = "com.hajimi.controller.BtraceController", method = "arg1", location = @Location(Kind.ENTRY)) public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, AnyType[] args) { BTraceUtils.printArray(args); BTraceUtils.println(pcn + "," + pmn); BTraceUtils.println(); }}
注意:我没找到btrace适配gbk的地方,所以如果注释或者打印信息里包含中文可能会报错。
btrace hook arg1方法
btrace -l
获得pid 22100,执行下面代码
btrace 22100 PrintArgSimple.java
访问API
查看打印内容,成功返回传入的参数
扩展阅读
-
• 性能工具之Java调试工具BTrace入门https://zhuanlan.zhihu.com/p/387788218 -
• samples下的btrace脚本案例
-
• https://github.com/btraceio/btrace/blob/develop/docs/BTraceTutorial.md
参考资料
-
• https://www.cnblogs.com/danny-djy/p/9990566.html -
• 性能工具之Java调试工具BTrace入门 https://zhuanlan.zhihu.com/p/387788218
免费知识星球,每日推送安全文章,欢迎加入。
原文始发于微信公众号(进击的HACK):通过BTrace监控Java进程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论