突破 BTrace 安全限制

本文介绍了BTrace的安全限制,包括不能创建新对象、调用任意方法等,并揭示了如何通过设置`com.sun.btrace.unsafe`为`true`来关闭这些限制,从而增强BTrace的功能。通过示例展示了如何使用此开关执行更复杂的脚本,同时警告在线上环境中谨慎使用此模式以防止意外情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

      普通情况下,Btrace脚本有诸多的限制:

 

 

 

     BTrace的作者这样做也是有安全方面的考虑,不过有些时候,如果能关闭这些限制,BTrace的功能将大大增强。

     通过starfish的脚本发现这个限制的开关原理就是com.sun.btrace.unsafe,设置在${BTRACE_HOME}/bin/btrace 中

${JAVA_HOME}/bin/java -Dcom.sun.btrace.probeDescPath=. -Dcom.sun.btrace.dumpClasses=false -Dcom.sun.btrace.debug=false -Dcom.sun.btrace.unsafe=false -cp ${BTRACE_HOME}/build/btrace-client.jar:${TOOLS_JAR}:/usr/share/lib/java/dtrace.jar com.sun.btrace.client.Main $*

一行,

     测试如下:

     测试程序源代码:

 

   测试btrace脚本:

 

启动测试程序,输出如下:

 

正常情况下启动btrace:

 

报错,显然不允许调用BTraceUtils以外的方法,修改com.sun.btrace.unsafe为true,再次启动测试:

目标测试程序输出所需结果:

 

 

哈哈,done!随便拦截任何目标java程序代码并执行其他代码,功能好强大!

 

不过线上使用时,还是要小心小心再小心,才可以开启unsafe开关,避免造成事故。

 

-- EOF --

 



 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值