一直有个想法:破解软件,让好用的商业软件为我所用。破解java软件,其实就是让将软件中的验证方法失效,让check方法返回true,直接暴力破解。正好javaassist为我们提供了修改class文件的方法。
import java.lang.reflect.Method;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.NotFoundException;
public class B {
public static void main(String[] args) throws Exception {
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("sample.A");
A test=new A();
Class c=test.getClass();
Method []method=c.getDeclaredMethods();
for(int i=0;i<method.length;i++){
System.out.println(method[i]);
}
try {
cc.getDeclaredMethod("g");
System.out.println("g() is already defined in sample.Test.");
}
catch (NotFoundException e) {
/* getDeclaredMethod() throws an exception if g()
* is not defined in sample.Test.
*/
CtMethod fMethod = cc.getDeclaredMethod("method");
CtMethod gMethod = CtNewMethod.copy(fMethod, "g", cc, null);
cc.addMethod(gMethod);
cc.writeFile(""); // update the class file
CtMethod []methods=cc.getDeclaredMethods();
for(int i=0;i<methods.length;i++){
System.out.println(methods[i]);
}
System.out.println("g() was added.");
}
}
}
A是一个有method方法的。通过javaassist我们可以修改class文件,做任何我们想做的事。
分享到:
相关推荐
Javaassist 是一个强大的 Java 字节码操作库,它允许开发者在运行时动态修改或创建类。这个库在软件开发中的主要用途是实现元编程,即在程序运行时修改程序的行为。`javassist-3.7.ga.jar` 文件是 Javaassist 库的一...
Javaassist 是一个强大的 Java 字节码操作库,它允许开发者在运行时动态修改或创建类。这个库在软件开发中的主要用途是实现元编程,即在程序运行时修改程序的行为。`javassist-3.18.2-GA.jar` 是 Javaassist 的一个...
Visual Assist VC的软件支持Microsoft Visual Studio 2003-2017,C/C++,C#,ASP,VisualBasic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误...
2. **javassist-x.x.x.GA.jar**:Javaassist是一个开源的Java字节码操作库,Hibernate使用它来动态地修改类的字节码,实现运行时的透明持久化。例如,Hibernate可以使用Javaassist生成代理类来添加一些持久化相关的...
本文将详细介绍这个版本的特性以及配套的Patch文件的用途。 首先,Visual Assist X 是一个强大的源代码辅助工具,它极大地提升了Visual Studio的代码编写体验。它支持多种编程语言,包括C++, C#, VB.NET, ASP.NET, ...
本文主要讲解如何搭建一个基于Eclipse的Java开发环境,包括安装JDK、配置环境变量、安装Eclipse以及设置编码自动提示,并介绍了Eclipse VE的安装和用途。 首先,我们需要安装Java Development Kit(JDK)。JDK是...
2. 链接API文档:在“Window” > “Preferences” > “Java” > “Editor” > “Content Assist” > “Favorites”中,点击“Add...”,选择“Javadoc”,然后指定`jdk-7u6-apidocs`目录作为API文档的路径。...
用途:用于打开类型(类、接口等),可以通过输入类名来快速打开对应的Java文件。这个快捷键对于大型项目非常有用,因为可以快速定位到特定的类。 **3. Ctrl+Shift+R (Open Resource)** 用途:类似于Ctrl+Shift+T...
- **javassist.jar**:JavaAssist是一个用于在运行时修改类和创建新类的库。 - **ant-launcher.jar**:Apache Ant的一部分,用于执行Ant任务。 - **jaas.jar**:Java Authentication and Authorization Service...
用途:此快捷键用于提供内容辅助。当你在编写代码时,如果你不知道某个方法或者属性的具体拼写,或者需要快速获取某个类的方法列表,按下 `ALT+ /` 可以帮助你完成自动补全或列出当前上下文中可用的所有选项。这对于...
- **用途:** 例如,Java开发视景会显示与Java开发相关的编辑器和视图。 **2.7 重新排列视图和编辑器** - **操作方法:** 用户可以通过拖拽的方式调整视图和编辑器的位置。 - **优点:** 灵活地调整界面布局,提高...
1. **ALT+/ (Content Assist)** - 用途:此快捷键用于自动完成代码或提供当前上下文中的代码建议。 - 描述:当你在编写代码时,如果忘记了某个方法的名字或者类的属性等,只需输入一部分内容后按下ALT+/,Eclipse...
- **javassist.jar**:Javaassist是一个用于修改正在运行的Java类的库。 - **ant-lanuncher.jar**:Apache Ant的启动器。 - **jboss-jmx.jar**:JBoss JMX管理服务。 - **xerces.jar**:一个高性能、全功能的XML解析...
- **javassist.jar**:JavaAssist是一个用于生成和修改Java字节码的框架,用于实现AOP等功能。 - **jta.jar**:Java Transaction API,用于实现分布式事务。 - **mysql-connector-java.jar**:MySQL的官方JDBC驱动,...
ALT+/ (Content Assist)** - **用途**: 在编辑代码时提供内容辅助,如自动完成方法名、变量名等。 - **应用场景**: 编写代码时快速补全代码片段,提高编码效率。 **2. Ctrl+O (Quick Outline)** - **用途**: 快速...
Javadoc是Java语言的一种规范,用于生成关于类、方法和字段的文档,它使用特殊的注释来描述代码的用途和功能。以下是详细的步骤来在Eclipse中设置Javadoc: 1. **检查已安装的JREs** 在Eclipse中,首先需要确认...
这得益于其灵活的插件系统,开发者可以根据自己的需求安装不同的插件来增强Eclipse的功能,使其成为一个真正的多用途开发平台。 #### Eclipse平台架构详解 Eclipse平台主要由工作区(workspace)、工作台...
- **Code Assist**:提供更多类型的代码辅助功能,如方法提示等。 **4.4 执行Java程序** - **运行配置**:配置Java程序的运行参数。 - **运行方式**:支持直接运行或调试运行。 **4.5 Java实时运算簿页面(Java ...