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_Java逆向基础之AspectJ的ajc与aj5命令相关推荐

  1. java around_Java逆向基础之AspectJ的Around方法修改方法体

    在逆向中,我们往往通过修改某个方法达到目的,在javaassist中有insertBefore,insertAfter,setBody,在AspectJ中也可以通过Around实现类似的功能. 看一个 ...

  2. Java逆向基础之AspectJ的获取成员变量的值

    注意:由于JVM优化的原因,方法里面的局部变量是不能通过AspectJ拦截并获取其中的值的,但是成员变量可以 在逆向中,我们经常要跟踪某些类的成员变量的值,这里以获取ZKM9中的qs类的成员变量g为例 ...

  3. Java逆向基础之AspectJ的Eclipse插件AJDT

    AJDT即Eclipse AspectJ Development Tools.是一个Eclipse插件,可以编写AspectJ项目 安装 help-->Install New Software ...

  4. java aspectj_Java:AspectJ的异常翻译

    java aspectj 在这篇博客文章中,我描述了如何使用AspectJ自动将一种异常类型转换为另一种异常类型. 问题 有时,我们处于必须将异常(通常由第三方库引发)转换为另一种异常的情况. 假设您 ...

  5. java 并发编程多线程_多线程(一)java并发编程基础知识

    线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...

  6. JAVA进阶的基础知识快速通过---自学笔记(二)

    温故而知新---陆续学习陆续更新中,你有更好的记忆和学习方法,请在评论区提出来大家一起交流,认真看完,一行行代码备注看完看懂,保证学会,学不会找我. 前言: 代码学完发现很简单,很多初学者搞不明白什么 ...

  7. Java层逆向--Dalvik指令集

    往期推荐 Java层逆向分析-Dalvik字节码 修改资源去广告 修改包名实现分身 篡改Apk名称.图标 AndroidKiller介绍与使用 Dalvik的指令格式: 基础字节码 - 名称后缀/字节 ...

  8. 不反编译、无逆向基础也能轻松编写Android App Hook插件? Xposed的远房表弟,Hookworm来也!

    前言 Xposed的大名相信很多同学都不陌生,它提供了一种能力,可以在不修改原apk的情况下,以插件的方式改变目标App的某些行为. 但随着Android系统版本的迭代,原来的Xposed已经不适合在 ...

  9. Java 过一下基础

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

最新文章

  1. EntityCURD操作的参数和返回值
  2. AI产业链全景图!【物联网智商精选】
  3. python怎样定义一个数组_Python创建数组
  4. android 软件实现架构。
  5. YOLOv5 报错:“NotImplementedError: Could not run ‘torchvision::nms‘ with arguments from the ‘CUDA‘ back
  6. 2012自动登录服务器,配置Windows自动登录 - Windows Server | Microsoft Docs
  7. 'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件
  8. 20159206《网络攻防实践》第四周学习总结
  9. java开发计算机考试服务器_2011计算机二级JAVA编程:取得服务器当前的各种具体时间...
  10. 号称骁龙865压轴旗舰!如今降价600依然卖不动...
  11. 【C#】通过正则表达式对TextBox进行校验
  12. OPENCV中滑动条的使用
  13. mysql replication(主从复制)(二)MSS模式
  14. OpenGL学习之路18---- 点光源
  15. np.isfinite_带有Python示例的math.isfinite()方法
  16. 从小程序到小程序云开发
  17. EXCEL简易的进度条
  18. 高物实验报告计算机模拟高分子,高分子物理课程实验报告(.doc
  19. BC5-MM、CSR867x的DFU更新流程之二:dfu文件转bin文件
  20. 有三宠选择的java游戏_口袋妖怪GO御用三宠哪家强 初始宠物选择推荐

热门文章

  1. 世界坐标系和图像坐标系的对应关系
  2. NPS:使用 Windows NPS Server 部署 802.1X 无线认证(1)
  3. linux做视频 加字幕,ubuntu16.04给视频添加字幕方法 ubuntu16.04如何给视频添加字幕...
  4. 根轨迹超前校正matlab,[自动化] 基于根轨迹法的超前校正
  5. Python杂谈 | (12) OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initia
  6. 【深度学习】详解Faster-R-CNN
  7. Matplotlib Error: meta NOT subset: don‘t know howto subset; dropped
  8. 杭州python培训价格
  9. 《无懈可击的Web设计》--学习笔记
  10. python爬虫:爬取QQ音乐歌曲