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

AJDT即Eclipse AspectJ Development Tools.是一个Eclipse插件,可以编写AspectJ项目

安装

help-->Install New Software

填写在线安装地址:http://download.eclipse.org/tools/ajdt/47_aj9/dev/update

安装完成之后,新建Aspectj项目

项目结构如下

把前面博文的aj文件和java文件内容复制过来

其中aj文件的新建方法

File-->New-->Project选择AspectJ Project

运行的时候,选中java文件,右键Run As-->AspectJ/Java Application

运行结果

下面看运行时加载项目的配置

新建项目结构如图

其中aj文件内容

//Tracing.aj
public aspect Tracing {
	private pointcut mainMethod():
            execution(public static void main(String[]));

	before(): mainMethod() {
		System.out.println("> " + thisJoinPoint);
	}

	after(): mainMethod() {
		System.out.println("< " + thisJoinPoint);
	}
}

Run-->Run configurations

运行项目类型选:Aspect Load-Time Weaving Application(默认的是下面的那个Aspect/Java Application 注意别选错了)

Project:AspectJDemo3

Main class:com.zelix.ZKM

LTW Aspect path:添加j外部jar选择ZKM.jar

最后点击配置里的Run命令,运行结果如下

这里面的导出jar没啥用,都是导出编译期的,不能导出加载期的,也许是我不会用。。。

原文地址:http://blog.51cto.com/7317859/2109150

时间: 2024-08-30 16:22:07

Java逆向基础之AspectJ的Eclipse插件AJDT的相关文章

Java逆向基础之AspectJ的ajc与aj5命令

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 

Java逆向基础之AspectJ的Around方法修改方法体

在逆向中,我们往往通过修改某个方法达到目的,在javaassist中有insertBefore,insertAfter,setBody,在AspectJ中也可以通过Around实现类似的功能. 看一个简单的例子 java文件Main.java //Main.java package com.vvvtimes; public class Main { public int add(int x, int y) { return x + y; } public int add(int x, int y

25个让Java程序员更高效的Eclipse插件

Eclipse提供了一 个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合 适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序.Eclipse的插件也能帮助他们开发不同 应用架构上的程序. 下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 . 提高代码质量的插件 1. FindBugs FindBugs可以帮你找到Java代码

Java逆向基础之初识javaagent

首先说一下javaagent是什么 javaagent是一种能够在不影响正常编译的情况下,修改字节码. 在逆向中javaagent可以完成对类的拦截和增强. 看一个例子 在Eclipse新建如下MyAgent结构的项目 MyAgent.java文件内容 package com.vvvtimes.demo.agent; import java.lang.instrument.Instrumentation; public class MyAgent {     public static void

java学习--基础知识第二天--eclipse软件使用

1. Eclipse的使用 1.1 Eclipse的官网下载(2016/7/11) 在地址栏中输入www.eclipse.org进入官网首页,具体如下图所示: 点击右上角的DOWNLOAD按钮,进入到下载页面 Eclipse官网包含很多技术,选择进入到Eclipse开发工具的下载页面,如上图红框中所示,点击Downloads Packages,可以选择下载Eclipse的版本及系统位数,如下图所示: 分别下载后得到两个版本,安装版和绿色版. 安装版: 绿色版: 这两种版本中建议使用绿色解压版,安

Java逆向基础之简单的补丁

本文参考:http://www.vuln.cn/7118 本文参考:<Reverse Engineering for Beginners>Dennis Yurichev著 本文需要用到IDA 简单的补丁 看一个例子 public class nag { public static void nag_screen() { System.out.println("This program is not registered"); }; public static void ma

Java逆向基础之动态生成类

为什么有这个东西,一方面时AOP框架的需要,另一方面是增加软件逆向的难度 动态生成类的技术目前大体上分为两类,一类是通过操作字节码框架如cglib/Javassist去实现,另一类就是JNI方式,调用dll/so库,内存中动态还原.这两种方式都能实现隐藏类 看一个Javassist动态生成类的例子 package com.vvvtimes; import java.lang.reflect.Modifier; import javassist.ClassPool; import javassis

Java逆向基础之导出内存中的类一

为什么需要这个,因为在之前的博文中提到,为了增加逆向的难度,部分软件会对部分关键方法和类进行隐藏,所以我们需要把这个类从内存中拿出来. 本文介绍使用javaagent的方法,下一篇介绍dumpclass,两种方法各有利弊. 本文需要用到第三方jar为:javassist-3.20.0-GA.jar,不过我们需要的是它的源码javassist-3.20.0-GA-sources.jar 新建名为DumpClassAgent的项目,项目结构如下 将下载到的源码复制到src目录下 DumpClassA

Java逆向基础之导出内存中的类二

我们有时候可能会遇到暂时无法使用javaagent的情况,如服务器上的Web应用重启太耗时,这是我们可以考虑用下面的方法. 使用dumpclass,目前dumpclass在Windows上表现不佳,建议在Linux上使用 dumpclass项目地址 https://github.com/hengyunabc/dumpclass 下载地址 http://central.maven.org/maven2/io/github/hengyunabc/dumpclass/0.0.2/dumpclass-0