Oolong的配置和使用
下载源码
下载Oolong的源码 https://github.com/tmjee/oolong
编译源码
解压download的压缩包,源码的路径位于 /oolong-master/src/main/java/,在此路径下创建一个文件夹oolang,把编译后的class文件放于其中。
- 解压
# unzip oolong-master.zip
- 跳转到/java路径,编译
# cd oolong-master/src/main/java
# mkdir oolong
# javac -d ./oolong ./*.java
- 设置环境变量
/oolong-master/src/main/java/oolong下包含编译好的class文件。在/etc/profile下配置JAVAPATH的默认路径(当然也可以用export),在编译时就不用手动添加class的路径,系统自动在设置路径下查找class.
// 查看class所在路径
# pwd
/oolong/oolong-master/src/main/java/oolong
//在CLASSPATH后面添加该类的路径
#vim /etc/profile
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/oolong/oolong-master/src/main/java/oolong
//使配置生效
#source /etc/profile
测试
进入包含待测试的class文件的目录,执行测试命令
# ls
Message.class Message.java
//测试指令
# java COM.sootNsmoke.oolong.Gnoloo Message.class
# ls
Message.class Message.j Message.java
可以看到该路径下多了Message.j这一文件,表示反编译成功
# cat Message.j
.source Message.java
.class public super Message
.super java/lang/Object
.method public <init> ()V
.limit stack 1
.limit locals 1
.line 1
l0: aload_0
l1: invokespecial java/lang/Object/<init> ()V
l4: return
.end method
.method public static main ([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
.line 5
l0: getstatic java/lang/System/out Ljava/io/PrintStream;
l3: ldc "hello world"
l5: invokevirtual java/io/PrintStream/println (Ljava/lang/String;)V
.line 8
l8: return
.end method