Java逆向基礎之AspectJ的ajc與aj5命令
阿新 • • 發佈:2018-04-29
java aspectj ajc acj命令是用於編譯java文件和aj文件的編譯器,相當於eclipse的編譯器(ECJ)+aspectj運行時擴展
aj5命令在jdk1.5上使用-javaagent:pathto/aspectjweaver.jar加載aspectj程序,達到修改字節碼的目的
這兩個命令可以用java命令和javac來替代,我們以上文的命令為例
Load-time weaving (LTW) 加載時編織
編譯
ajc -outjar myjar.jar HelloWorld.java ajc -outjar MyAspect.jar -outxml MyAspect.aj -classpath "myjar.jar;%CLASSPATH%"
運行
aj5 -classpath "MyAspect.jar;myjar.jar;%CLASSPATH%" HelloWorld
命令翻譯
若已經在classpath環境變量裏設置過aspectjrt.jar,可在 -classpath裏省略%ASPECTJ_HOME%\lib\aspectjrt.jar;下同
編譯
javac HelloWorld.java jar cvf myjar.jar HelloWorld.class java -classpath "myjar.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%ASPECTJ_HOME%\lib\aspectjtools.jar;%CLASSPATH%" org.aspectj.tools.ajc.Main -outxml MyAspect.aj -outjar MyAspect.jar
運行
java -javaagent:%ASPECTJ_HOME%\lib\aspectjweaver.jar -classpath "MyAspect.jar;myjar.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%CLASSPATH%" HelloWorld
Compile-time weaving 編譯時編織
編譯
ajc -outjar mytarget.jar HelloWorld.java MyAspect.aj
運行
aj5 -classpath "mytarget.jar;%CLASSPATH%" HelloWorld
命令翻譯
編譯
java -classpath "myjar.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%ASPECTJ_HOME%\lib\aspectjtools.jar;%CLASSPATH%" org.aspectj.tools.ajc.Main -outjar mytarget.jar HelloWorld.java MyAspect.aj
運行
java -classpath "mytarget.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%CLASSPATH%" HelloWorld
Post-compile weaving 後編譯時編織
編譯
ajc -outjar myjar.jar HelloWorld.java ajc -inpath myjar.jar MyAspect.aj -outjar mytarget.jar
運行
aj5 -classpath "mytarget.jar;%CLASSPATH%" HelloWorld
命令翻譯
編譯
javac HelloWorld.java jar cvf myjar.jar HelloWorld.class java -classpath "myjar.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%ASPECTJ_HOME%\lib\aspectjtools.jar;%CLASSPATH%" org.aspectj.tools.ajc.Main -inpath myjar.jar MyAspect.aj -outjar mytarget.jar
運行
java -classpath "mytarget.jar;%ASPECTJ_HOME%\lib\aspectjrt.jar;%CLASSPATH%" HelloWorld
翻譯成java命令的好處是,可以在Load-time weaving (LTW) 加載時編織直接指定多個-javaagent
如
java -javaagent:aspectjweaver.jar -javaagent:ZKMAgent.jar -cp Tracing.jar;ZKM.jar com.zelix.ZKM
Java逆向基礎之AspectJ的ajc與aj5命令