过程是这样的:我打了一个程序的jar包,
然后用jsmooth打包成了exe文件。但是发现用winrar可以把这个exe解压class文件,怎么能打成不可解压的exe呢,有什么方法。
望高手赐教
然后用jsmooth打包成了exe文件。但是发现用winrar可以把这个exe解压class文件,怎么能打成不可解压的exe呢,有什么方法。
望高手赐教
解决方案 »
- Exception in thread "main" java.lang.NullPointerException at Server.main(Server.java:22)
- eclipse 问题。。
- 一个小程序求助!!
- 100分求 DJ Java Decompiler v.3.9.9.91注册码
- 如何将JPG图片转换成MPEG格式?
- 查询所得结果集问题,简单~~~
- 要解决一个JSP里的HTML标记问题。
- 这段代码怎么老说我没有主类???
- 初学者问题, 在 java中一个创建对象的语法 怎么理解?
- JScrollPane 怎么判断滚动条停止滚动的时候才执行事件
- 请教:关于打包成exe文件的问题
- 请教,关于计算机数据存储的问题。
对啊,但我不是想脱离,我是想把JVM也打进去,可以打进去,但还能解压。按你说,JVM只认class文件,我有一事不明,java文件混淆后,JVM是如何识别的呢??
这个不太明白原理。
如*.rar,文件开始必须为Rar!,*.zip,文件开始为PK
若winrar找到头标记,就把exe中从PK到文件尾的所有作为zip文件解压.所以,要有不可解压的exe,可以在exe可执行头作手脚,把"PK",去掉,反正它只是标记,不影响解压.
或者,用不同的压缩算法,比如用cab,arj,ace等的自解压文件,当然可执行文件部分要加一段调用jvm的.
关于*.class混淆后,JVM是如何识别的:
*.class混淆,并没改变class文件的数据结构,一般只是把所有的变量名,类名改变后重写入class文件,JVM当然认得.
實現方式:Eclipse搭配JSmooth(免費)。
1.先由Eclipse製作包含Manifest的JAR。
製作教學
2.使用JSmooth將做好的JAR包裝成EXE。
JSmooth下載頁面:
http://jsmooth.sourceforge.net/index.php
3.製作完成的exe檔,可在有裝置JRE的Windows上執行。
如你所说
((java的exe包原理,象winrar的自解压文件一样,前几百k是运行平台上的可执行文件,用来解压后面的资源,解压后调用jvm,所以jvm不知到执行的是exe,执行的是临时目录里的class.))
这样的话,不管怎么打成exe的包,别人还是可以从临时目录里得到class文件,还是可以反编译。((一般来说,winrar并不看exe前面的头,只看文件中有没有头标记
如*.rar,文件开始必须为Rar!,*.zip,文件开始为PK
若winrar找到头标记,就把exe中从PK到文件尾的所有作为zip文件解压.
所以,要有不可解压的exe,可以在exe可执行头作手脚,把"PK",去掉,反正它只是标记,不影响解压.))
所以这些方式可以过虑掉了吧?((或者,用不同的压缩算法,比如用cab,arj,ace等的自解压文件,当然可执行文件部分要加一段调用jvm的.))
这个方式没太懂,还是压缩的本质吧,应该和上面一样吧,只不过压缩算法不同,同样可以在临时目录里得到class文件?((关于*.class混淆后,JVM是如何识别的:
*.class混淆,并没改变class文件的数据结构,一般只是把所有的变量名,类名改变后重写入class文件,JVM当然认得.))
如果只改了名称,对加密起不到任何作用啊。我描述一下我要解决的事情:
我传输一个文件,在源头用des算法加密,在接收方用密钥解密。但是密钥都写在程序中了,如果class被反编译的话,别人就可以看到这个密钥,我这个加密就毫无用处了。我现在是想找一个方法,把写在程序中的密钥完全隐藏起来,任何人都得不到。有什么解决方法呢???看你写的混淆的概念,并不能把这个也混淆掉啊。
如果class可以解压到内存中,不是解压到硬盘上估计可行。你说的后一种方法好像太难了点,麻烦死了,并且越麻烦越容易出错。还有高人有什么方法么??