通过BTrace监控Java进程

admin 2025年6月3日00:24:04评论14 views字数 2270阅读7分34秒阅读模式
通过BTrace监控Java进程

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢

文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。

通过BTrace监控Java进程

字数 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

下载到本地,解压后,配置环境变量

通过BTrace监控Java进程
b6a8276f3fab9c34fc55c84d44170c0a.png

cmd配置临时环境变量

set path=D:xxxxbtrace-v2.2.6-bin;D:xxxxbtrace-v2.2.6-binbin;%path%

查看Java进程

btrace -l
通过BTrace监控Java进程
6c4e6f682e1c243ec9685f22542aba55.png

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脚本代码就能自动补全。

通过BTrace监控Java进程
0a865a0673aa7530d39f3d93d9eee45f.png

演示

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
通过BTrace监控Java进程
478c493dc6dafb028ee86109274de2fe.png

获得pid 22100,执行下面代码

btrace 22100 PrintArgSimple.java
通过BTrace监控Java进程
4a0fbdd7a4e6795e7aa23411d6f6fbc0.png

访问API

通过BTrace监控Java进程
5f9ff1990c4071ecd5766fb20627432d.png

查看打印内容,成功返回传入的参数

通过BTrace监控Java进程
54cf30d339cf91975a98bd8cfed58f8b.png

扩展阅读

  • • 性能工具之Java调试工具BTrace入门https://zhuanlan.zhihu.com/p/387788218
  • • samples下的btrace脚本案例
通过BTrace监控Java进程
0992f75768d56e23ba69cc3260108c0c.png
  • • 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

免费知识星球,每日推送安全文章,欢迎加入。

通过BTrace监控Java进程

原文始发于微信公众号(进击的HACK):通过BTrace监控Java进程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月3日00:24:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过BTrace监控Java进程https://cn-sec.com/archives/4124895.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息