`
zhaomingzm_23
  • 浏览: 33616 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

答复: 用javassist和jclasslib破解java软件

阅读更多
zhaomingzm_23 写道
1.Javassist 小日本的东西,先鄙视一下
如果用yGroud 加密过的,你基本就没办法,你无法writeFile覆盖它长文件名的class,你可能都不知道要覆盖哪个。

2.没有什么软件是破解不了的(包括联网验证,我可以根本不让它联网,自己模拟一个response)
引用看雪的Tutorial:
软件的破解技术与保护技术这两者之间本身就是矛与盾的关系,它们是在互相斗争中发展进化的。这种技术上的较量归根到底是一种利益的冲突。

3.当然在只有class的前提下
想去掉原来讨厌的name, logo , not registered infomations 或者什么你不喜欢的东西,知道有个javassist你可以用,总比直接修改class byte[] 强点。


另:了解到jclasslib  也可以做这些事情,结合自带的Bytecode viewer 可以直接查看字节码

public class Name
{
	public static void main(String... mike) {
		System.out.println("测试");
	}
}


package com.mike.jclasslib.demo;

import java.io.DataInput;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

import org.gjt.jclasslib.io.ClassFileWriter;
import org.gjt.jclasslib.structures.CPInfo;
import org.gjt.jclasslib.structures.ClassFile;
import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;

/**
 * @since 2010-5-13上午09:12:28
 */
public class ConstantPoolChanger {
	
	private static String filePath = "C:/com/Name.class";
	
    private static final String suffix = ".jclasslib";
    
	public static void main(String[] args) throws Exception {
		
          FileInputStream fis = new FileInputStream(filePath);
          DataInput di = new DataInputStream(fis);
          ClassFile cf = new ClassFile();
          cf.read(di);
          CPInfo[] infos = cf.getConstantPool();

          int count = infos.length;
          for (int i = 0; i < count; i++) {
              if (infos != null) {
                  System.out.print(i);
                  if(i == 18){
                        //这里的18就是在Bytecode viewer 中查看得到的。
                        ConstantUtf8Info uInfo = (ConstantUtf8Info) infos[i];
                        System.out.println(
                        		uInfo.getString()
                        );
                        uInfo.setString("mike");
                  }                      
              }
          }
          cf.setConstantPool(infos);
          fis.close();
          
          //写到文件
          File f = new File(filePath + suffix);
          ClassFileWriter.writeToFile(f, cf);
    }
	
	
}





分享到:
评论

相关推荐

    javassist-3.21.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.21.0-GA.jar; 赠送原API文档:javassist-3.21.0-GA-javadoc.jar; 赠送源代码:javassist-3.21.0-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.24.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar; 赠送源代码:javassist-3.24.0-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.23.1-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    借助jclasslib与javassist修改java class字节码

    下面我们将分别使用`jclasslib`和`javassist`来实现这个需求。 ##### 使用jclasslib修改 1. **打开`.class`文件**: 使用`jclasslib.exe`打开`HelloWorld.class`文件,找到输出字符串所在的常量池位置(如例子中...

    javassist-3.27.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.27.0-GA.jar; 赠送原API文档:javassist-3.27.0-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javassist-3.20.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.20.0-GA.jar; 赠送原API文档:javassist-3.20.0-GA-javadoc.jar; 赠送源代码:javassist-3.20.0-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.18.1-GA-API文档-中文版.zip

    赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar; 赠送源代码:javassist-3.18.1-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.18.1-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javassist-3.19.0-GA-API文档-中文版.zip

    赠送jar包:javassist-3.19.0-GA.jar; 赠送原API文档:javassist-3.19.0-GA-javadoc.jar; 赠送源代码:javassist-3.19.0-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.21.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.21.0-GA.jar; 赠送原API文档:javassist-3.21.0-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javassist-3.23.1-GA-API文档-中文版.zip

    赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar; 赠送源代码:javassist-3.23.1-GA-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    javassist-3.24.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    AopAutoTryCatch:使用Javassist(一个自定义的Gradle插件)来实现自动try-catch。 AOP思想取代预防性try-catch

    AopAutoTryCatch 使用Javassist(一个自定义的Gradle插件)来实现自动try-catch用Javassist实现AOP思想,达到一个注解即可自动加try-catch的目的,当然,AOP的应用场景还有很多,这里抛砖引玉,希望给大家一些参考。...

    javassist-3.19.0-GA-API文档-中英对照版.zip

    赠送jar包:javassist-3.19.0-GA.jar; 赠送原API文档:javassist-3.19.0-GA-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    javaagent+javassist

    Javaagent和javassist是Java开发中的两个重要工具,它们在软件开发中有着广泛的应用,特别是在动态代理、代码增强和字节码操作等领域。本篇将详细介绍这两个技术,并结合实际示例进行解析。 首先,让我们来了解`...

    JavaAgent:Javassist 与 Asm JavaAgent 字节码动态编程项目

    在这个“JavaAgent: Javassist与Asm JavaAgent字节码动态编程项目”中,我们将深入探讨如何利用Javassist和ASM这两个库来实现JavaAgent。 首先,Javassist是一个开源的Java字节码操作框架,它使得开发者可以在运行...

    开发工具 javassist-3.21.0-GA

    开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发...

    javassist-3.12.1.GA.jar

    开源的分析、编辑和创建Java字节码的类库,加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。

    java 反编译工具 jboss-javassist

    通过这个工具,开发者无需重新编译源代码就能对Java类进行修改和增强,这对于理解和调试已部署的软件或者创建元编程应用非常有用。 Javassist主要提供了以下功能: 1. **字节码生成**:Javassist可以动态生成类的...

    agent+javassist例子

    在IT行业中,`Java Agent`和`javassist`是两个非常关键的技术,它们在软件开发、测试和性能优化中发挥着重要作用。`Java Agent`允许我们对Java应用程序进行预处理,比如字节码注入,而`javassist`库则提供了一个方便...

Global site tag (gtag.js) - Google Analytics