首页
社区
课程
招聘
用Javassis分析jeb.jar
发表于: 2014-7-30 17:45 22932

用Javassis分析jeb.jar

scz 活跃值
5
2014-7-30 17:45
22932

关于jeb.jar,不知上下文而又对本文感兴趣的兄弟,参看:

http://bbs.pediy.com/showthread.php?t=189980

jeb.jar的逆向工作其实已经阶段性中止了。有人提出能不能补上"Save As"功能,我
是业余时间看看,如果它的功能代码本来就存在的话,等我有时间就来补上,如果不
存在,以我的功力就不要指望太多了。

我最初是Eclipse、BTrace、JD-GUI、Source Insight相结合着把jeb.jar剁了,向诸
君推荐BTrace时抱怨过一句:

BTrace还是不够狠,不能修改参数和返回值,只能查看,可以调用public method,可
以直接修改public member,但仍受private的限制。如果这些都能解决该多好。

针对我这个抱怨,有人向我推荐了Javassist。怀着将信将疑的态度研究了一下Javassis。

Javassist和BTrace的侧重不同,仔细测试前者之后感觉前者与后者可以互补。前者在
修改class方面足够强大,但在动态注入方面颇为鸡肋,它的HotSwapper实现远不如
BTrace实用,几乎是个演示性玩具。假设目标进程已经以jdwp方式启动,而Javassist
进程事后通过HotSwapper类Attach上去,reload()时会在reload2()中抛出
"failed to reload"异常。如果二者是合兵一处的,就可以reload()。

如果不考虑动态注入,Javassis确实是个NB工具,不是一般NB,是相当NB。不过要想
爽它,建议还是把它自带教程完整读一遍,然后挨个实测。碰上各个类、方法时,更
应该看在线帮助:

http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/

阅读其源码倒不是特别必要。不知为何大量介绍文章在演示最无聊的writeFile,个
人经验是,只要同时搜到Javassis和writeFile,这篇文章就不值得看,跳过。

扯远了,回到正题,用Javassis分析jeb.jar。我这次演示用Javassist如何修改
jebglobal.rP.dN(byte[] paramArrayOfByte,int paramInt1,int paramInt2)。这个
函数在解码被编码过的敏感字符串,比如"License key error.",你直接在反编译结
果中找不到这个明文字符串,它被编码后存放了。显然那些被编码过的敏感字符串就是
最好的路标,拦截rP.dN(),将它们找出来,再结合行号信息,就比较容易理清整个流
程。推荐作法是写BTrace脚本,自动跟踪rP.dN(),将执行路径上的敏感字符串都解码
还原出来,事实上我就是这样破解jeb.jar的。但我这不是被人忽悠到Javassist上去
了么,于是我就用Javassist重现了BTrace脚本的工作。

用Javassis重新实现了rP.dN(),根据需要,先输出调用栈回溯,再输出解码结果:

--------------------------------------------------------------------------
/*
* javac -g -cp "javassist.jar;jeb.xxx.jar" crack_jeb_o.java
* java -cp "javassist.jar;jeb.xxx.jar;." crack_jeb_o > crack_jeb_o.txt
*
* jeb.xxx.jar就是将jeb.jar中META-INF/下的JEBKEY.*删掉,再编辑一下
* MANIFEST.MF得到。否则java.lang.ClassLoader会在安全检查时抛出异常。
* javassist.Loader的安全检查要弱很多,可是它有别的缺陷导致不能用于此处。
* 最后用jeb.xxx.jar而不是jeb.orig.jar,纯属无奈之举。
*
* 仅为Java逆向之Javassist演示代码,非最终Loader。
*/
import javassist.*;
import jeb.Launcher;

class crack_jeb_o
{
    public static void main ( String[] argv ) throws Throwable
    {
        /*
         * 调试过程中可以在该目录下获取被修改过的class。这条代码本身也是调
         * 试目的,可以注释掉。
         */
        CtClass.debugDump           = "./debugDump/";

        ClassPool   pool            = ClassPool.getDefault();
        pool.importPackage( "jebglobal.rP" );
        CtClass     old_class       = pool.get( "jebglobal.rP" );
        old_class.detach();
        /*
         * 由于jeb.jar混淆得厉害,只能用这种精确方式获取method,否则只需要
         * 用名字即可定位method。
         */
        CtMethod    old_method      = old_class.getDeclaredMethod
        (
            "dN",
            new CtClass[]
            {
                pool.get( byte[].class.getName() ),
                pool.get( int.class.getName() ),
                pool.get( int.class.getName() )
            }
        );
        old_class.removeMethod( old_method );
        /*
         * 跟BTrace比,Javassist在干这类事时简直就是渣。被迫实现Helper.class,
         * Javasssist内置编译器不支持String.format()这种变长形参函数。
         *
         * 没有用Thread.currentThread().dumpStack(),因为它向stderr输出,不
         * 利于分离输出,此外它的显示破坏了我的洁癖。最后用的是
         * Helper.GetStackTrace()。
         */
        CtMethod    new_method      = CtNewMethod.make
        (
            "public static String dN ( byte[] paramArrayOfByte, int paramInt1, int paramInt2 )" +
            "{" +
            "    String  result;" +
            "" +
            "    System.out.println( Helper.GetStackTrace() );" +
            "    result  = new rP(paramArrayOfByte, paramInt1, paramInt2).dN();" +
            "    System.out.println( Helper.hexdump( result.getBytes(), 0, result.getBytes().length, 16 ) );" +
            "    return( result );" +
            "}",
            old_class
        );
        old_class.addMethod( new_method );
        old_class.toClass();
        /*
         * ( new Loader( pool ) ).run( "jeb.Launcher", argv );
         *
         * 这里不能用javassist.Loader,它的实现有缺陷,会导致在
         * jebglobal.eI.<clinit>(SourceFile:158)
         * 抛出异常
         * throw new RuntimeException("Could not determine the program directory")
         *
         * 被迫使用java.lang.ClassLoader
         */
        Launcher.main( argv );
    }
}
--------------------------------------------------------------------------
/*
* javac -g Helper.java
*/
public class Helper
{
    public static String hexdump
    (
        byte[]  buf,
        int     off,
        int     len,
        int     count
    )
    {
        String  ret = "";
        int     offset, k, j, i, m;

        if ( len <= 0 || count <= 0 || null == buf )
        {
            return( ret );
        }
        ret    += String.format( "[%d bytes] -> %d bytes per line\n", len, count );
        i       = 0;
        offset  = 0;
        m       = ( count + 1 ) / 2;
        for ( k = len / count; k > 0; k--, offset += count )
        {
            ret    += String.format( "%08X ", offset );
            for ( j = 0; j < count; j++, i++ )
            {
                if ( m == j )
                {
                    ret    += String.format( "-%02X", buf[off+i] );
                }
                else
                {
                    ret    += String.format( " %02X", buf[off+i] );
                }
            }
            ret    += String.format( "    " );
            i  -= count;
            for ( j = 0; j < count; j++, i++ )
            {
                if ( ( buf[off+i] >= ' ' ) && ( buf[off+i] < 0x7F ) )
                {
                    ret    += String.format( "%c", buf[off+i] );
                }
                else
                {
                    ret    += String.format( "." );
                }
            }
            ret    += String.format( "\n" );
        }
        k       = len - i;
        if ( k <= 0 )
        {
            return( ret );
        }
        ret    += String.format( "%08X ", offset );
        for ( j = 0 ; j < k; j++, i++ )
        {
            if ( m == j )
            {
                ret    += String.format( "-%02X", buf[off+i] );
            }
            else
            {
                ret    += String.format( " %02X", buf[off+i] );
            }
        }
        i      -= k;
        for ( j = count - k; j > 0; j-- )
        {
            ret    += String.format( "   " );
        }
        ret    += String.format( "    " );
        for ( j = 0; j < k; j++, i++ )
        {
            if ( ( buf[off+i] >= ' ' ) && ( buf[off+i] < 0x7F ) )
            {
                ret    += String.format( "%c", buf[off+i] );
            }
            else
            {
                ret    += String.format( "." );
            }
        }
        return( ret );
    }  /* end of hexdump */

    public static String GetStackTrace ()
    {
        int                 i, j;
        String              ret     = "[";
        StackTraceElement[] frame   = new Throwable().getStackTrace();

        if ( null != frame )
        {
            j   = frame.length - 1;
            for( i = 1; i < j; i++ )
            {
                ret    += String.format( "\n%s", frame[i] );
            }
        }
        return( ret + "\n]" );
    }  /* end of GetStackTrace */
}
--------------------------------------------------------------------------

不考虑CtClass.debugDump,crack_jeb_o.java实际就是个Loader,不会静态修改
jeb.xxx.jar。

$ java -cp "javassist.jar;jeb.xxx.jar;." crack_jeb_o > crack_jeb_o.txt

弹出对话框提示输入key时随便输个123456啥的,我们的目的是找出执行过程中会有哪
些敏感字符串出现。展示一下crack_jeb_o.txt:

--------------------------------------------------------------------------
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:125)
jeb.Launcher.main(SourceFile:159)
]
[8 bytes] -> 16 bytes per line
00000000  75 73 65 72 2E 64 69 72                            user.dir
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:58)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6C 61 6E-67 2E 43 6C 61 73 73       java.lang.Class
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:58)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[19 bytes] -> 16 bytes per line
00000000  67 65 74 50 72 6F 74 65-63 74 69 6F 6E 44 6F 6D    getProtectionDom
00000010  61 69 6E                                           ain
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:59)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[30 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 50 72    java.security.Pr
00000010  6F 74 65 63 74 69 6F 6E-44 6F 6D 61 69 6E          otectionDomain
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:59)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[13 bytes] -> 16 bytes per line
00000000  67 65 74 43 6F 64 65 53-6F 75 72 63 65             getCodeSource
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:60)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[24 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 43 6F    java.security.Co
00000010  64 65 53 6F 75 72 63 65                            deSource
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:60)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[11 bytes] -> 16 bytes per line
00000000  67 65 74 4C 6F 63 61 74-69 6F 6E                   getLocation
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:61)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6E 65 74-2E 55 52 4C                java.net.URL
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:61)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[5 bytes] -> 16 bytes per line
00000000  74 6F 55 52 49                                     toURI
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:62)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-46 69 6C 65                java.io.File
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:62)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6E 65 74-2E 55 52 49                java.net.URI
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:74)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:74)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-46 69 6C 65                java.io.File
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:79)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:79)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[8 bytes] -> 16 bytes per line
00000000  67 65 74 45 6E 74 72 79                            getEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:81)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:81)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[14 bytes] -> 16 bytes per line
00000000  67 65 74 49 6E 70 75 74-53 74 72 65 61 6D          getInputStream
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:81)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[22 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 7A 69 70 2E 5A 69    java.util.zip.Zi
00000010  70 45 6E 74 72 79                                  pEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:83)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[19 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-49 6E 70 75 74 53 74 72    java.io.InputStr
00000010  65 61 6D                                           eam
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:83)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[4 bytes] -> 16 bytes per line
00000000  72 65 61 64                                        read
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:86)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[22 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 45 6E 74 72 79                                  rEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:86)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  67 65 74 43 65 72 74 69-66 69 63 61 74 65 73       getCertificates
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:87)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[30 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 63 65    java.security.ce
00000010  72 74 2E 43 65 72 74 69-66 69 63 61 74 65          rt.Certificate
[
jebglobal.rP.dN(SourceFile)
jebglobal.lS.dN(SourceFile:87)
jebglobal.lS.dN(SourceFile:63)
jebglobal.eI.<clinit>(SourceFile:148)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  67 65 74 50 75 62 6C 69-63 4B 65 79                getPublicKey
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vr.ld(SourceFile:55)
jebglobal.Vr.<clinit>(SourceFile:35)
jebglobal.eI.<clinit>(SourceFile:167)
jeb.Launcher.main(SourceFile:159)
]
[7 bytes] -> 16 bytes per line
00000000  6F 73 2E 6E 61 6D 65                               os.name
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vr.ld(SourceFile:57)
jebglobal.Vr.<clinit>(SourceFile:35)
jebglobal.eI.<clinit>(SourceFile:167)
jeb.Launcher.main(SourceFile:159)
]
[7 bytes] -> 16 bytes per line
00000000  57 69 6E 64 6F 77 73                               Windows
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vr.QE(SourceFile:104)
jebglobal.Vr.ld(SourceFile:58)
jebglobal.Vr.<clinit>(SourceFile:35)
jebglobal.eI.<clinit>(SourceFile:167)
jeb.Launcher.main(SourceFile:159)
]
[26 bytes] -> 16 bytes per line
00000000  77 6D 69 63 20 62 69 6F-73 20 67 65 74 20 73 65    wmic bios get se
00000010  72 69 61 6C 6E 75 6D 62-65 72                      rialnumber
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vr.QE(SourceFile:125)
jebglobal.Vr.ld(SourceFile:58)
jebglobal.Vr.<clinit>(SourceFile:35)
jebglobal.eI.<clinit>(SourceFile:167)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  53 65 72 69 61 6C 4E 75-6D 62 65 72                SerialNumber
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vr.ld(SourceFile:81)
jebglobal.Vr.<clinit>(SourceFile:35)
jebglobal.eI.<clinit>(SourceFile:167)
jeb.Launcher.main(SourceFile:159)
]
[3 bytes] -> 16 bytes per line
00000000  4D 44 35                                           MD5
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:170)
jeb.Launcher.main(SourceFile:159)
]
[11 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 76 65 6E-64 6F 72                   java.vendor
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:171)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 76 65 72-73 69 6F 6E                java.version
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:172)
jeb.Launcher.main(SourceFile:159)
]
[7 bytes] -> 16 bytes per line
00000000  6F 73 2E 6E 61 6D 65                               os.name
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:173)
jeb.Launcher.main(SourceFile:159)
]
[7 bytes] -> 16 bytes per line
00000000  6F 73 2E 61 72 63 68                               os.arch
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:174)
jeb.Launcher.main(SourceFile:159)
]
[10 bytes] -> 16 bytes per line
00000000  6F 73 2E 76 65 72 73 69-6F 6E                      os.version
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:175)
jeb.Launcher.main(SourceFile:159)
]
[9 bytes] -> 16 bytes per line
00000000  75 73 65 72 2E 6E 61 6D-65                         user.name
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:547)
jeb.Launcher.main(SourceFile:159)
]
[10 bytes] -> 16 bytes per line
00000000  75 70 64 61 74 65 2E 7A-69 70                      update.zip
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.<clinit>(SourceFile:548)
jeb.Launcher.main(SourceFile:159)
]
[10 bytes] -> 16 bytes per line
00000000  75 70 64 61 74 65 2E 70-77 64                      update.pwd
[
jebglobal.rP.dN(SourceFile)
jebglobal.BT.<clinit>(SourceFile:7)
jebglobal.WV.<clinit>(SourceFile:9)
jebglobal.TM.ld(SourceFile:116)
jebglobal.eI.<init>(SourceFile:193)
jebglobal.yW.<init>(SourceFile:128)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[309 bytes] -> 16 bytes per line
00000000  31 31 35 30 37 39 37 30-37 39 31 39 31 35 37 36    1150797079191576
00000010  35 35 37 39 34 30 30 34-32 37 31 33 33 37 37 38    5579400427133778
00000020  35 30 31 34 30 38 35 34-31 36 35 32 34 38 39 33    5014085416524893
00000030  35 31 30 35 33 36 38 39-36 31 39 38 38 38 30 37    5105368961988807
00000040  34 39 31 30 34 36 37 36-31 37 30 34 30 31 31 35    4910467617040115
00000050  31 35 36 39 32 38 34 31-31 39 32 37 32 36 38 30    1569284119272680
00000060  35 35 35 33 32 38 34 34-32 30 37 37 35 35 32 36    5553284420775526
00000070  37 36 36 31 37 39 35 39-32 38 30 33 39 30 32 37    7661795928039027
00000080  38 32 39 34 37 32 31 37-37 39 32 37 35 33 31 34    8294721779275314
00000090  32 35 39 32 38 35 34 36-30 38 37 30 37 35 39 30    2592854608707590
000000A0  39 32 36 34 30 31 38 31-34 39 38 37 37 36 36 37    9264018149877667
000000B0  31 31 33 31 34 31 30 39-31 35 33 39 33 33 39 32    1131410915393392
000000C0  31 33 38 35 35 34 37 36-34 38 33 30 33 31 38 35    1385547648303185
000000D0  32 32 37 32 38 34 30 35-38 34 32 38 34 36 39 34    2272840584284694
000000E0  30 33 33 36 39 31 38 39-32 39 35 31 30 30 37 39    0336918929510079
000000F0  31 35 35 35 33 31 38 37-37 30 36 30 35 33 31 34    1555318770605314
00000100  36 39 36 39 39 35 39 31-37 30 30 34 35 37 38 32    6969959170045782
00000110  30 32 39 37 36 34 35 33-35 35 32 34 31 33 37 32    0297645355241372
00000120  39 35 34 33 34 34 36 39-34 38 38 39 35 31 33 38    9543446948895138
00000130  36 34 37 38 33                                     64783
[
jebglobal.rP.dN(SourceFile)
jebglobal.BT.<clinit>(SourceFile:8)
jebglobal.WV.<clinit>(SourceFile:9)
jebglobal.TM.ld(SourceFile:116)
jebglobal.eI.<init>(SourceFile:193)
jebglobal.yW.<init>(SourceFile:128)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[5 bytes] -> 16 bytes per line
00000000  36 35 35 33 37                                     65537
[
jebglobal.rP.dN(SourceFile)
jebglobal.Vm.<init>(SourceFile:23)
jebglobal.eI.<init>(SourceFile:194)
jebglobal.yW.<init>(SourceFile:128)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[6 bytes] -> 16 bytes per line
00000000  4A 45 42 20 25 73                                  JEB %s
[
jebglobal.rP.dN(SourceFile)
jebglobal.DU.<clinit>(SourceFile:27)
jebglobal.eI.<init>(SourceFile:197)
jebglobal.yW.<init>(SourceFile:128)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[309 bytes] -> 16 bytes per line
00000000  31 31 35 30 37 39 37 30-37 39 31 39 31 35 37 36    1150797079191576
00000010  35 35 37 39 34 30 30 34-32 37 31 33 33 37 37 38    5579400427133778
00000020  35 30 31 34 30 38 35 34-31 36 35 32 34 38 39 33    5014085416524893
00000030  35 31 30 35 33 36 38 39-36 31 39 38 38 38 30 37    5105368961988807
00000040  34 39 31 30 34 36 37 36-31 37 30 34 30 31 31 35    4910467617040115
00000050  31 35 36 39 32 38 34 31-31 39 32 37 32 36 38 30    1569284119272680
00000060  35 35 35 33 32 38 34 34-32 30 37 37 35 35 32 36    5553284420775526
00000070  37 36 36 31 37 39 35 39-32 38 30 33 39 30 32 37    7661795928039027
00000080  38 32 39 34 37 32 31 37-37 39 32 37 35 33 31 34    8294721779275314
00000090  32 35 39 32 38 35 34 36-30 38 37 30 37 35 39 30    2592854608707590
000000A0  39 32 36 34 30 31 38 31-34 39 38 37 37 36 36 37    9264018149877667
000000B0  31 31 33 31 34 31 30 39-31 35 33 39 33 33 39 32    1131410915393392
000000C0  31 33 38 35 35 34 37 36-34 38 33 30 33 31 38 35    1385547648303185
000000D0  32 32 37 32 38 34 30 35-38 34 32 38 34 36 39 34    2272840584284694
000000E0  30 33 33 36 39 31 38 39-32 39 35 31 30 30 37 39    0336918929510079
000000F0  31 35 35 35 33 31 38 37-37 30 36 30 35 33 31 34    1555318770605314
00000100  36 39 36 39 39 35 39 31-37 30 30 34 35 37 38 32    6969959170045782
00000110  30 32 39 37 36 34 35 33-35 35 32 34 31 33 37 32    0297645355241372
00000120  39 35 34 33 34 34 36 39-34 38 38 39 35 31 33 38    9543446948895138
00000130  36 34 37 38 33                                     64783
[
jebglobal.rP.dN(SourceFile)
jebglobal.DU.<clinit>(SourceFile:28)
jebglobal.eI.<init>(SourceFile:197)
jebglobal.yW.<init>(SourceFile:128)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[5 bytes] -> 16 bytes per line
00000000  36 35 35 33 37                                     65537
[
jebglobal.rP.dN(SourceFile)
jebglobal.uK.QE(SourceFile:92)
jebglobal.eI.PF(SourceFile:282)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[4 bytes] -> 16 bytes per line
00000000  64 65 6D 6F                                        demo
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:197)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6C 61 6E-67 2E 43 6C 61 73 73       java.lang.Class
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:197)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[19 bytes] -> 16 bytes per line
00000000  67 65 74 50 72 6F 74 65-63 74 69 6F 6E 44 6F 6D    getProtectionDom
00000010  61 69 6E                                           ain
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:198)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[30 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 50 72    java.security.Pr
00000010  6F 74 65 63 74 69 6F 6E-44 6F 6D 61 69 6E          otectionDomain
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:198)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[13 bytes] -> 16 bytes per line
00000000  67 65 74 43 6F 64 65 53-6F 75 72 63 65             getCodeSource
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:199)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[24 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 43 6F    java.security.Co
00000010  64 65 53 6F 75 72 63 65                            deSource
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:199)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[11 bytes] -> 16 bytes per line
00000000  67 65 74 4C 6F 63 61 74-69 6F 6E                   getLocation
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:200)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6E 65 74-2E 55 52 4C                java.net.URL
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:200)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[5 bytes] -> 16 bytes per line
00000000  74 6F 55 52 49                                     toURI
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:201)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-46 69 6C 65                java.io.File
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:201)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6E 65 74-2E 55 52 49                java.net.URI
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:213)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:213)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-46 69 6C 65                java.io.File
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:219)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:219)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[8 bytes] -> 16 bytes per line
00000000  67 65 74 45 6E 74 72 79                            getEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:221)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[21 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 46 69 6C 65                                     rFile
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:221)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[14 bytes] -> 16 bytes per line
00000000  67 65 74 49 6E 70 75 74-53 74 72 65 61 6D          getInputStream
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:221)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[22 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 7A 69 70 2E 5A 69    java.util.zip.Zi
00000010  70 45 6E 74 72 79                                  pEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:223)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[19 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 69 6F 2E-49 6E 70 75 74 53 74 72    java.io.InputStr
00000010  65 61 6D                                           eam
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:223)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[4 bytes] -> 16 bytes per line
00000000  72 65 61 64                                        read
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:226)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[22 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 75 74 69-6C 2E 6A 61 72 2E 4A 61    java.util.jar.Ja
00000010  72 45 6E 74 72 79                                  rEntry
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:226)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  67 65 74 43 65 72 74 69-66 69 63 61 74 65 73       getCertificates
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:227)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[30 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 73 65 63-75 72 69 74 79 2E 63 65    java.security.ce
00000010  72 74 2E 43 65 72 74 69-66 69 63 61 74 65          rt.Certificate
[
jebglobal.rP.dN(SourceFile)
jebglobal.PX.dN(SourceFile:227)
jebglobal.PX.dN(SourceFile:202)
jebglobal.PX.fa(SourceFile:186)
jebglobal.PX.dN(SourceFile:96)
jebglobal.oQ.dN(SourceFile:28)
jebglobal.eI.rn(SourceFile:447)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[12 bytes] -> 16 bytes per line
00000000  67 65 74 50 75 62 6C 69-63 4B 65 79                getPublicKey
[
jebglobal.rP.dN(SourceFile)
jebglobal.Qq.dN(SourceFile:51)
jebglobal.fL.ld(SourceFile:55)
jebglobal.Qq.dN(SourceFile:38)
jebglobal.yW.QE(SourceFile:433)
jebglobal.eI.rn(SourceFile:448)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[179 bytes] -> 16 bytes per line
00000000  0A 48 65 6C 6C 6F 20 25-73 2E 20 59 6F 75 20 6E    .Hello %s. You n
00000010  65 65 64 20 61 20 6C 69-63 65 6E 73 65 20 6B 65    eed a license ke
00000020  79 20 74 6F 20 75 73 65-20 4A 45 42 2E 20 54 68    y to use JEB. Th
00000030  69 73 20 6F 6E 65 2D 74-69 6D 65 20 6F 70 65 72    is one-time oper
00000040  61 74 69 6F 6E 20 77 69-6C 6C 20 6F 6E 6C 79 20    ation will only
00000050  74 61 6B 65 20 61 20 66-65 77 20 73 65 63 6F 6E    take a few secon
00000060  64 73 2E 0A 0A 50 6C 65-61 73 65 20 76 69 73 69    ds...Please visi
00000070  74 20 25 73 2C 20 61 6E-64 20 75 73 65 20 74 68    t %s, and use th
00000080  65 20 66 6F 6C 6C 6F 77-69 6E 67 20 22 6C 69 63    e following "lic
00000090  65 6E 73 65 20 64 61 74-61 22 20 62 6C 6F 62 20    ense data" blob
000000A0  74 6F 20 67 65 6E 65 72-61 74 65 20 61 20 6B 65    to generate a ke
000000B0  79 2E 0A                                           y..
[
jebglobal.rP.dN(SourceFile)
jebglobal.Qq.dN(SourceFile:63)
jebglobal.fL.ld(SourceFile:55)
jebglobal.Qq.dN(SourceFile:38)
jebglobal.yW.QE(SourceFile:433)
jebglobal.eI.rn(SourceFile:448)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  4F 70 65 6E 20 69 6E 20-62 72 6F 77 73 65 72       Open in browser
[
jebglobal.rP.dN(SourceFile)
jebglobal.Qq.dN(SourceFile:72)
jebglobal.fL.ld(SourceFile:55)
jebglobal.Qq.dN(SourceFile:38)
jebglobal.yW.QE(SourceFile:433)
jebglobal.eI.rn(SourceFile:448)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[15 bytes] -> 16 bytes per line
00000000  0A 4C 69 63 65 6E 73 65-20 64 61 74 61 3A 20       .License data:
[
jebglobal.rP.dN(SourceFile)
jebglobal.Qq.dN(SourceFile:95)
jebglobal.fL.ld(SourceFile:55)
jebglobal.Qq.dN(SourceFile:38)
jebglobal.yW.QE(SourceFile:433)
jebglobal.eI.rn(SourceFile:448)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[13 bytes] -> 16 bytes per line
00000000  4C 69 63 65 6E 73 65 20-6B 65 79 3A 20             License key:
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.rn(SourceFile:451)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[18 bytes] -> 16 bytes per line
00000000  4C 69 63 65 6E 73 65 20-6B 65 79 20 65 72 72 6F    License key erro
00000010  72 2E                                              r.
[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.Ee(SourceFile:540)
jebglobal.eI.rn(SourceFile:452)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[16 bytes] -> 16 bytes per line
00000000  6A 61 76 61 2E 6C 61 6E-67 2E 53 79 73 74 65 6D    java.lang.System

[
jebglobal.rP.dN(SourceFile)
jebglobal.eI.Ee(SourceFile:540)
jebglobal.eI.rn(SourceFile:452)
jebglobal.eI.PF(SourceFile:359)
jebglobal.yW.rn(SourceFile:296)
jebglobal.yW.dN(SourceFile:86)
jeb.Launcher.main(SourceFile:159)
]
[4 bytes] -> 16 bytes per line
00000000  65 78 69 74                                        exit
--------------------------------------------------------------------------

看到啥了,"wmic bios get serialnumber"都出来了,还有啥看不到。RSA公钥(n和e)
也被编码,是怕别人替换公钥吗?最后的exit也被编码了,越是编码越是需要剁。怎么
剁?调用栈回溯都给你了,行号信息是jeb.jar自带的,爽不爽?说!快说爽死了。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (11)
雪    币: 2895
活跃值: (3929)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
真的爽死了
2014-7-30 17:53
0
雪    币: 101
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
四哥威武,
前排广告位出租...
2014-7-30 18:03
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这么给力的文章,必须爽爽地mark一下
2014-7-30 18:33
0
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
mark!
2014-7-30 20:41
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主提供的jeb很好用。
2014-7-31 09:54
0
雪    币: 76
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
处理复杂的apk时,改名反应奇慢,动不动就自动退出,毫无反应。。。
2014-7-31 20:34
0
雪    币: 69
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
以前用过Javassist,在改大段函数的时候编译出错,结果我取巧,直接将大段函数删除,只保留return false之类的还编译通过了.不知道现在Javassist怎么样了,不过确实很NB.
2014-8-1 08:54
0
雪    币: 4835
活跃值: (3837)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
9
你说的编译出错有两种可能。一种是你写的有问题,Javassist只是工具,怎么用如何用完全取决于用的人对class格式的理解;比如insertBefore()看着很爽吧,但实际上它不会自动修正method附属"Exception table",那Javassist是不是就这样了呢,显然又不是,它有别的渠道解决这类问题,不能用insertBefore()这类傻瓜方式而已。还有一种可能,就是你怀疑的那种,当时你测试的Javassist版本有BUG,这要看你那个当时有多久远了。这个项目存在很久了,如果是2004年之后的版本,已经相当NB。我觉得第一种可能性较大。
2014-8-1 10:45
0
雪    币: 981
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我现在就是还不会用Javassist,如果有人看到这里且了解Javassist,可以支持下我.我有时间绝对把jeb破解了.我的qq是78925271
2015-3-20 20:48
0
雪    币: 981
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
根据版主的帖子终于把javassist软件搞到了,编好了代码测试jeb运行起来了.现在版主的jeb唯一缺憾就是不能导出文件,提示 Decompiled Java class cannot be exported in the demo version.
我分析了下已经抓到此处的调用逻辑,如下:
[
jebglobal.rP.dN(SourceFile)

jebglobal.yW.QE(SourceFile:1157)

jebglobal.VZ.widgetSelected(SourceFile)

org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)

org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)

org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)

org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)

org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)

jebglobal.yW.rn(SourceFile:345)
jebglobal.yW.dN(SourceFile:86)

jeb.Launcher.main(SourceFile:159)
]

[63 bytes] -> 16 bytes per line

00000000  44 65 63 6F 6D 70 69 6C-65 64 20 4A 61 76 61 20    Decompiled Java

00000010  63 6C 61 73 73 65 73 20-63 61 6E 6E 6F 74 20 62    classes cannot b

00000020  65 20 65 78 70 6F 72 74-65 64 20 69 6E 20 74 68    e exported in th

00000030  65 20 64 65 6D 6F 20 76-65 72 73 69 6F 6E 2E       e demo version.

有兴趣一起研究的可以加我qq78925171
2015-3-23 12:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark一下哦
2016-2-24 16:51
0
游客
登录 | 注册 方可回帖
返回
//