答复: 用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和jclasslib破解java软件_第1张图片

你可能感兴趣的:(Java,软件测试,F#,HTML)