• 让VisualVM+BTrace进入unsafe mode


    让VisualVM+BTrace进入unsafe mode

    http://kenai.com/projects/btrace/pages/UserGuide

    BTrace很强大,但有很多安全限制,比如:

    --------------------------------------------------------------------------
    can not create new objects.
    can not create new arrays.
    can not throw exceptions.
    can not catch exceptions.
    can not make arbitrary instance or static method calls
        only the public static methods of com.sun.btrace.BTraceUtils class or
        methods declared in the same program may be called from a BTrace program.
    can not assign to static or instance fields of target program's classes and objects.
    can not have outer, inner, nested or local classes.
    can not have synchronized blocks or synchronized methods.
    can not have loops (for, while, do..while)
    can not extend arbitrary class (super class has to be java.lang.Object)
    can not implement interfaces.
    can not contains assert statements.
    can not use class literals.
    --------------------------------------------------------------------------

    下面是一个测试用例:

    --------------------------------------------------------------------------
    import com.sun.btrace.annotations.*;
    import static com.sun.btrace.BTraceUtils.*;
    import java.util.Date;

    @BTrace
    public class TracingScript
    {
        @OnMethod
        (
        clazz       = "CrackMeGUI",
        method      = "VerifyHash",
        location    = @Location( Kind.RETURN )
        )
        public static void Trace
        (
        )
        {
            println( "Now : " + new Date() );
        }
    }
    --------------------------------------------------------------------------
    ** Compiling the BTrace script ...
    来自注释处理程序 'com.sun.btrace.compiler.Verifier' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
    /TracingScript.java:18:+ operator on strings is not allowed, use 'strcat' instead
    !!! Error occured
    --------------------------------------------------------------------------
    ** Compiling the BTrace script ...
    *** Compiled
    com.sun.btrace.VerifierException: object creation is not allowed: java/lang/StringBuilder
            at com.sun.btrace.runtime.Verifier.reportError(Verifier.java:372)
            at com.sun.btrace.runtime.MethodVerifier.reportError(MethodVerifier.java:225)
            at com.sun.btrace.runtime.MethodVerifier.visitTypeInsn(MethodVerifier.java:208)
            at com.sun.btrace.org.objectweb.asm.ClassReader.accept(Unknown Source)
            at com.sun.btrace.org.objectweb.asm.ClassReader.accept(Unknown Source)
            at com.sun.btrace.runtime.InstrumentUtils.accept(InstrumentUtils.java:66)
            at com.sun.btrace.runtime.InstrumentUtils.accept(InstrumentUtils.java:62)
            at com.sun.btrace.agent.Client.verify(Client.java:391)
            at com.sun.btrace.agent.Client.loadClass(Client.java:218)
            at com.sun.btrace.agent.RemoteClient.<init>(RemoteClient.java:59)
            at com.sun.btrace.agent.Main.startServer(Main.java:379)
            at com.sun.btrace.agent.Main.access$000(Main.java:65)
            at com.sun.btrace.agent.Main$3.run(Main.java:166)
            at java.lang.Thread.run(Unknown Source)
    !!! Error occured
    --------------------------------------------------------------------------

    VisualVM+BTrace有很多BUG吧,错误信息都不稳定,居然冒出来两种。

    可以用JD-GUI查看:

    %appdata%.visualvm1.3.4modulesexttrace-client.jar

    com.sun.btrace.compiler.VerifierVisitor这个类里定义了很多方法,包括但不限于:

    visitAssert
    visitTry
    visitCatch
    visitThrow
    visitDoWhileLoop
    visitEnhancedForLoop
    visitForLoop
    visitWhileLoop

    还可以用JD-GUI查看:

    %appdata%.visualvm1.3.4modulesexttrace-agent.jar

    com.sun.btrace.runtime.MethodVerifier这个类里定义了类似的方法,包括但不限于:

    visitJumpInsn
    visitTypeInsn

    这些visit*()就是实施BTrace安全限制的函数。

    BTrace有一个unsafe mode,进入这个模式后前述安全限制就被取消了。对于那些明确
    知道自己在干什么的高级用户,unsafe mode才能真正发挥BTrace强大威力,比如搞点
    hexdump()一类的函数用,比如直接用+号进行字符串拼接。

    如果是命令行启动BTrace,可以修改命令行参数-Dcom.sun.btrace.unsafe=true,以
    此进入unsafe mode。

    我现在用的是:

        x64/Win7
        32-bits Java
        VisualVM 1.3.4
        BTrace Workbench 0.6.5

    本来在BTrace界面上有一个Unsafe复选框,但在我这里死活选不中,也不知是谁的BUG。

    最后没办法了,决定直接修改.class,将unsafe置为true。以这个系统为例。

    解压%appdata%.visualvm1.3.4modulesexttrace-agent.jar,用WinHex修改
    Main.class,文件偏移0x2a92:

    old 12 3b 2c b6 02 a5
    new 00 00 00 00 00 04

    以zip格式重新打包出btrace-agent.jar。

    解压%appdata%.visualvm1.3.4modulesexttrace-client.jar,用WinHex修改
    Compiler.class,文件偏移0x1d64:

    old 1c
    new 04

    以zip格式重新打包出btrace-client.jar。
    删除
    推荐帖
    EIGamal和ECC是什么关系?    QQ不知道被哪个没良心的盗了,密码都改了,求助~~
    求教如何写dota平台改键    谁能破解个手机同步软件Android-Sync
    谁懂的软件汇编(密匙破解)及VC软件开发-急!!!!!!!!!    求高手解md5的明文
    重用key的流加密如何破解?    目前QQ软件加密技术信得过吗?
    防盗版的光盘如何弄成iso镜像文件啊    公司屏蔽淘宝网 除了 用不好使的代理 除了用手机 还有好的办法吗

    似乎本身可以配置的呀
    you can edit "btrace" script to change -Dcom.sun.btrace.unsafe=false to -Dcom.sun.btrace.unsafe=true.

    https://blogs.oracle.com/sundararajan/entry/btrace_unsafe_mode

    【 在 hellguard 的大作中提到: 】
    : 参看:
    : http://kenai.com/projects/btrace/pages/UserGuide
    : BTrace很强大,但有很多安全限制,比如:


    我不是写了么,你没看吧。

    如果是命令行启动BTrace,可以修改命令行参数-Dcom.sun.btrace.unsafe=true,以
    此进入unsafe mode。



    【 在 metamatrix (matrix) 的大作中提到: 】
    : 似乎本身可以配置的呀
    : you can edit "btrace" script to change -Dcom.sun.btrace.unsafe=false to -Dcom.sun.btrace.unsafe=true.
    : https://blogs.oracle.com/sundararajan/entry/btrace_unsafe_mode

  • 相关阅读:
    paip.提升用户体验上传文件图片命名
    paip.提升安全性软键盘的弱点
    paip.java桌面开发应用与WEB RIA应用
    paip.提升安全性WEB程序安全检测与防范
    paip.PHP zend解密—以SHOPEX4.8.4为例
    PAIP.提升安全性COOKIE绑定IP与城市与运营商
    paip.svn不能提交CLEARUP不起作用解决方法
    paip.提升安全网站登录密码明文传输的登录高危漏洞解决方案
    paip.docfile二进制复合文档
    paip.session的调试in php
  • 原文地址:https://www.cnblogs.com/langtianya/p/4447558.html
Copyright © 2020-2023  润新知