java生成的字节码类文件如何转换为机器码类文件?--有难度,参与有分. 一个是GUN可以可以直接把Java编译成机器码。一个是JVM内部的优化机制,把经常使用的代码部分直接编译为本地机器码,JVM其实它自带一个超简易编译器。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你说的,是不是“混淆”这个概念,如果是,推荐用用proguard(proguard.sourceforge.net) JVM本身就有这样的功能,只不过编译成本地机器码后就不能动态加载了。 .class文件转化为机器码 也就是操作系统能直接执行的文件 那就应该是exe后缀 不然操作系统如何执行?如果.class文件转化为机器码后依然是.class文件 java虚拟机该如何判断它是字节码还是机器码 如何确定用什么方式执行呢? 你可以看看JVM的类加载机制 能贴些相关代码实现吗?JVM的机制没怎么研究,不知道你说的"超简易编译器"是那个,具体怎么玩呢? 能贴些相关代码实现吗? JVM的机制没怎么研究,不知道你说的"超简易编译器"是那个,具体怎么玩呢?它一般都是自行优化编译,JVM的性能优化不光是GC。 这里不是谈混淆,就算混淆也不大好用,要把整个工程都混淆才行,若只混淆单个的.class文件,好像这个类就失效了.不知道是不是这样? http://imgsrc.baidu.com/baike/pic/item/ac75478285acf3b90cf4d213.jpg 你说的跟我几乎想到一块去了,但那篇文章确实是说,可以弄成机器码的类文件,以防止被反编译,原文如下: 我们看到,要在不修改源代码的情况下加密一个Java应用是很容易的。不过,世上没有完全安全的系统。本文的加密方式提供了一定程度的源代码保护,但对某些攻击来说它是脆弱的。 虽然应用本身经过了加密,但启动程序DecryptStart没有加密。攻击者可以反编译启动程序并修改它,把解密后的类文件保存到磁盘。降低这种风险的办法之一是对启动程序进行高质量的模糊处理。或者,启动程序也可以采用直接编译成机器语言的代码,使得启动程序具有传统执行文件格式的安全性。 另外还要记住的是,大多数JVM本身并不安全。狡猾的黑客可能会修改JVM,从ClassLoader之外获取解密后的代码并保存到磁盘,从而绕过本文的加密技术。Java没有为此提供真正有效的补救措施。 不过应该指出的是,所有这些可能的攻击都有一个前提,这就是攻击者可以得到密匙。如果没有密匙,应用的安全性就完全取决于加密算法的安全性。虽然这种保护代码的方法称不上十全十美,但它仍不失为一种保护知识产权和敏感用户数据的有效方案。......不知道红色部分是不是我理解的意思呢?不是的话,那是什么意思呢? 有没有可能它所谓的启动程序就是个exe文件 启动程序也可以采用直接编译成机器语言的代码,使得启动程序具有传统执行文件格式的安全性。 JVM的类装载器有安全沙箱,保证只有可信任代码能执行。 补充:有点困惑,难道就是说弄成exe文件吗?天啦,如果这样的话,web程序如何调用相关class类了?可能作者是说se程序吧??? 那不是以前的J++吗或者用现在的Cygwin上的GUN编译java文件 其实JIT就是一边编译一边执行的样子,所以今天的Java能运行很快 如果能转成机器码,为什么java程序要在虚拟机上运行,在每个操作系统转成机器码后运行岂不是更高效? JAVA出了一点小问题 菜鸟提问:java 怎么根据一个网址下载文件 请问一下大家面试的时候都考试什么内容啊?? 正则表达式,高手请进 在哪里下载最新的jswdk? JAVA中怎样获得一个文件的全路径? 关于字符串抽取问题? 怎样设置RGB值 诸位高手低手请上眼:为什么我在一个程序中调用另一个程序中的类,且两个程序都在c根目录下,为什么不能调用?帮帮小弟我吧? 请问:我想学 JAVA 选那本书?谢谢! 在一个项目组中最好做什么? 包的概念,很理解,但在系统开发过程中,如何实现包。
如果.class文件转化为机器码后依然是.class文件 java虚拟机该如何判断它是字节码还是机器码 如何确定用什么方式执行呢?
你可以看看JVM的类加载机制
JVM的机制没怎么研究,不知道你说的"超简易编译器"是那个,具体怎么玩呢?
JVM的机制没怎么研究,不知道你说的"超简易编译器"是那个,具体怎么玩呢?
它一般都是自行优化编译,
JVM的性能优化不光是GC。
我们看到,要在不修改源代码的情况下加密一个Java应用是很容易的。不过,世上没有完全安全的系统。本文的加密方式提供了一定程度的源代码保护,但对某些攻击来说它是脆弱的。
虽然应用本身经过了加密,但启动程序DecryptStart没有加密。攻击者可以反编译启动程序并修改它,把解密后的类文件保存到磁盘。降低这种风险的办法之一是对启动程序进行高质量的模糊处理。或者,启动程序也可以采用直接编译成机器语言的代码,使得启动程序具有传统执行文件格式的安全性。
另外还要记住的是,大多数JVM本身并不安全。狡猾的黑客可能会修改JVM,从ClassLoader之外获取解密后的代码并保存到磁盘,从而绕过本文的加密技术。Java没有为此提供真正有效的补救措施。 不过应该指出的是,所有这些可能的攻击都有一个前提,这就是攻击者可以得到密匙。如果没有密匙,应用的安全性就完全取决于加密算法的安全性。虽然这种保护代码的方法称不上十全十美,但它仍不失为一种保护知识产权和敏感用户数据的有效方案。
......
不知道红色部分是不是我理解的意思呢?不是的话,那是什么意思呢?
有点困惑,难道就是说弄成exe文件吗?天啦,如果这样的话,web程序如何调用相关class类了?
可能作者是说se程序吧???
那不是以前的J++吗
或者用现在的Cygwin上的GUN编译java文件