黑马程序员技术交流社区
标题:
自己编写类的加载器?
[打印本页]
作者:
蒲公英在飞
时间:
2014-8-16 19:24
标题:
自己编写类的加载器?
怎么自己编写类的加载器给文件加密?
作者:
pengyu1801
时间:
2014-8-16 20:34
import java.io.*; //主类必须继承ClassLoader,才可以直接使用difineClass public class MyClassLoader1 extends ClassLoader{ public static void main(String[] args) throws ArrayIndexOutOfBoundsException{ String src = args[0]; String dest = args[1]; // string的 substring方法返回一个新字符串,它是此字符串的一个子字符串。 // lastIndexOf方法返回指定子字符串在此字符串中最右边出现处的索引 String classFileName = src.substring(src.lastIndexOf('\\') + 1); try { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest + "\\" + classFileName); encrypt(in, out); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 加密方法 private static void encrypt(InputStream in, OutputStream out) { int b = -1; try { while ((b = in.read()) != -1) { out.write(b ^ 0xff); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 私有化一个ClassDir变量 private String classDir = null; public MyClassLoader1() { } // 不能与类同名,但是有返回值,不是构造函数,那个,, public MyClassLoader1(String classDir) { this.classDir = classDir; } /* * classLoader的方法,findclass(String name) 使用指定的二进制名称查找类。返回值:Class<?> */ protected Class<?> findClass(String classname) { // 静态字段separator,返回值是string类型,与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 String classPath = classDir + File.separator + classname + ".class"; try { FileInputStream fin = new FileInputStream(new File(classPath)); // ByteArrayOutputStream byte数组输出流 ByteArrayOutputStream bout = new ByteArrayOutputStream(); encrypt(fin, bout); // 创建一个byte数组,用byte输出流的方法转换直接转换成byte[] byte[] bytes = bout.toByteArray(); // 关闭输入流 fin.close(); // defineClass将bytes数组,转换成Class类的实例。 return defineClass(null, bytes, 0, bytes.length); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
作者:
jw在路途
时间:
2014-8-16 20:36
学习了,来过
作者:
wfaly
时间:
2014-8-18 09:43
谢谢 楼主分享 ,学习了....
作者:
轩辕苍穹
时间:
2014-8-18 23:40
用Java混淆器
作者:
大★宝
时间:
2014-8-19 11:21
这个真不会,貌似挺复杂的
作者:
liqi
时间:
2014-8-19 11:33
视频里有的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2