Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166078
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 593
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-18 09:59
文章分类

全部博文(56)

文章存档

2019年(1)

2018年(26)

2016年(1)

2015年(6)

2014年(22)

我的朋友

分类: Java

2014-02-18 10:11:49


点击(此处)折叠或打开

  1. /**
  2.  * @author:      吴永行
  3.  * @dateTime:     2014-2-17 下午8:51:10
  4.  * @description:     
  5.  *
  6.  */
  7. package 深入理解java虚拟机.第九章类加载即执行子系统的案例与实战;

  8. import java.io.FileInputStream;
  9. import java.io.FileNotFoundException;
  10. import java.io.FileOutputStream;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.io.OutputStream;
  14. import java.lang.reflect.Method;

  15. public class JavaClassExecuter {
  16.     public static String execute(byte[] classByte) throws IOException {
  17.         HackSystem.clearBuffer();
  18.         ClassModifier cm = new ClassModifier(classByte);

  19.         byte[] modiBytes = cm.modifyUTF8Constant("java/lang/System",
  20.          "深入理解java虚拟机/第九章类加载即执行子系统的案例与实战/HackSystem");
  21.         HotSwapClassLoader loader = new HotSwapClassLoader();

  22.         
  23.         /*OutputStream is = new FileOutputStream("aaa.class");
  24.         is.write(modiBytes);
  25.         is.close();
  26.         */
  27.         
  28.         Class clazz = loader.loadByte(modiBytes);

  29.         try {
  30.             Method method = clazz.getMethod("main",
  31.              new Class[] { String[].class });
  32.             method.invoke(null, new String[] { null });
  33.         } catch (Throwable e) {
  34.             // TODO: handle exception
  35.             e.printStackTrace(HackSystem.out);
  36.         }
  37.         return HackSystem.getBufferString();

  38.     }
  39. }

阅读(888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~