我解释一下:
比如我写了一个程序,运行了。然后我不小心把这个程序代码删除了,硬盘里没有了,删除以后就后悔了,还想要,此时没有备份,但是正在执行的程序还没有结束,说明还有一个class加载到jvm里运行,我想再写另外一个程序,从内存中把我刚才不小心删除的程序且现在正在运行的程序反向摘取下来,有没有可能,那另外一个程序该怎么写?
比如我写了一个程序,运行了。然后我不小心把这个程序代码删除了,硬盘里没有了,删除以后就后悔了,还想要,此时没有备份,但是正在执行的程序还没有结束,说明还有一个class加载到jvm里运行,我想再写另外一个程序,从内存中把我刚才不小心删除的程序且现在正在运行的程序反向摘取下来,有没有可能,那另外一个程序该怎么写?
解决方案 »
- java编写的多个applet怎么样整合在一起
- 如何把JDBC驱动打包进可运行的JAR文件
- 怎么做一个批量重命名的软件?
- 关于eclipse开发的困惑
- 小妹是初学java语言,想随机输出4Tdf这样的混合数,请各位高手指点!!!
- 怎么用Java语言实现文件格式的转换?
- 请问UNICODE的String怎么转成char *?
- 请问如何获取不同类型的随机数。用什么方法啊?
- Borland Entprise Server Appserver5.0 登录的用户名、密码、服务名到底是什么?
- 我连接ACCESS数据库出现了问题?
- 出错了,大伙帮忙找下原因?
- 在使用jsp做登录程序遇到的问题,老是找不出原因,望大家来指点下,谢谢
http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html里面有dump部分。也许能把你要的对象dump出来!
3 你删除的是java文件,你应该还有.class文件吧,哪怕是一个稍老版本都可以。可以反编译出来啊!
我没有做过这个研究,不能提供你更多的帮助了。
这样啊....有class的话,javap反编译就行了...
java的安全性挺高的,不容易直接从内存得到东西,内存的东西都是class经过jvm封装放到里面的.
说的很正确,有工具的,你试试EasyRecovery。
public class Welcome extends java.lang.Object{
public Welcome();
public static void main(java.lang.String[]);
}运行javap -c Welcome 可以看到他的反汇编信息...但愿你能看懂...反正我是一知半解Compiled from "Welcome.java"
public class Welcome extends java.lang.Object{
public Welcome();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: returnpublic static void main(java.lang.String[]);
Code:
0: iconst_4
1: istore_1
2: iconst_5
3: istore_2
4: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
7: iload_1
8: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
11: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
14: iload_2
15: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
18: return}原程序
public class Welcome
{
public static void main(String[] args)
{
// System.out.println(3!=5);
// System.out.println(5!=5);
int a=4;
int b=5;
//
System.out.println(a);
System.out.println(b);
}}如果你想通过class得到java源文件...那么你得先能看得懂反汇编那些信息...我做不到...
或者你看看ASM