高分求高人讨论java源码能否完全加密而不被破解?天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
高分求高人讨论java源码能否完全加密而不被破解?天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
我用DES已经加密了.加密的CLASS 是没有办法破解的. 这个我已经成功实现.
可在java.lang.ClassLoader源文件,并修改defineClass(String, byte[], int, int, ProtectionDomain)方法
截取已经解密了字节码,把字节码保存后再反编译!.
这怎么办.我是说不管你怎么加密,JVM运行时都会在ClassLoader中加载的.
java.lang.ClassLoader源文件,并修改defineClass(String, byte[], int, int, ProtectionDomain)方法
是不是象下面一样就可找出类的字节码呀.这也就是说怎么加密也没有用呀.
在这里都会得到已经解密的字节码.
天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
c = defineClass0(name, b, off, len, protectionDomain);
// Intercept classes defined by the system loader and its children:
if (isAncestor (getSystemClassLoader ().getParent ()))
{
// Choose your own dump location here [use an absolute pathname]:
final File parentDir = new File ("c:/TEMP/classes/");
File dump = new File (parentDir,
name.replace ('.', File.separatorChar) + "[" +
getClass ().getName () + "@" +
Long.toHexString (System.identityHashCode (this)) + "].class");
dump.getParentFile ().mkdirs ();
FileOutputStream out = null;
try
{
out = new FileOutputStream (dump);
out.write (b, off, len);
}
catch (IOException ioe)
{
ioe.printStackTrace (System.out);
}
finally
{
if (out != null) try { out.close (); } catch (Exception ignore) {}
}
}
...
就是说实现记录编译后的字节码然后再把字节码进行反编译!
天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
天呀.天于JAVA 的类加密是不是根本就不可能的呀.!!!!
[解决办法]
截取已经解密了字节码,把字节码保存后再反编译!.
这怎么办.我是说不管你怎么加密,JVM运行时都会在ClassLoader中加载的.
不解密怎么运行啊?
要不你找下 postGuard,或者retroGuard看看他们的原理
[解决办法]
你完全可以写jni,然后java调用jni,调用dll,dll里用汇编写。
这样的加密啊效果好,不容易破解。
[解决办法]
一般来说,混淆后的代码,可读性就很差了,有的混淆器支持对包名混淆,那种混淆是无法直接反编译的,要手工调试很长时间才可以编译运行。
[解决办法]
这个用混淆器不就好了..反编了也看不懂啊..
[解决办法]
jdk都开源的 你为什么要加密?
加个混淆器 防君子不防小人
至少他不能直接把你的程序拿来使用
如果你的算法值得人家去解密
并且解密的人下足够的功夫去解密
那你弄成什么都是白费的
[解决办法]
我只知道混淆。
加密的原因是什么?我觉得没有不能破解的东西。
[解决办法]
你看现在的加密技术那个没破解方法。。再牛B的加密算法只要有时间和速度快,穷举就搞定。
[解决办法]
都是牛人
[解决办法]
二进制代码都可以反汇编。
不管你怎么加密,你都要解密给JVM。
既然你加密之后要解密,那么解密程序客户端肯定已经包含了吧?那不是轻易就能解密之后反编译成java源文件?
------解决方案--------------------
如果你的程序很重要,那么不要分发出去,自己保存在安全的地方。
如果你的程序是拿了卖的,那么你就别怕别人反编译,你应该不断完善你程序的功能,
这样即使别人反编译你的程序,也是旧的版本。
等你的软件很多人在用的时候,你就不会在乎能不能被反编译了。
windows 能被反编译,linux 开源,但这些能威胁到 ms 和linux厂商吗?
[解决办法]
用混淆器混一下算了,别多想了
[解决办法]
可以用混淆器,效果还是可以的。
[解决办法]
请注意开源和源代码加密不是对立的
如果要研究源码 可以通过另外的渠道得到
但是对于商用的产品 就要考虑加密
PS我接触的一般都是索取硬件序列号加密
[解决办法]
不管怎么加密,最终要被解释成机器码运行,所以纯粹意义上的不可破解是不存在的。除非运行在你自己设计的系统中。
商业系统,一般使用在程序中加入反馈机制,一旦用户运行了程序,就向服务器发送用户信息,以便核对是否授权,如果未授权,就要通过法律途径解决。
目前很多大型软件都是这么做的。当然在独立网络环境中就无效了。
[解决办法]
[解决办法]
如果你想自己的代码不要被人看,那你用汇编吧
[解决办法]
在虚拟机执行的时候总得被解密,
这个时候就是破解你加密算法的时候
除非你开发出可以执行加密代码的虚拟机.
[解决办法]
先搞清楚你为什么要加密。
[解决办法]
只要能加密就行,别想太多
[解决办法]
楼主,你好像不太清楚java的根基啊?,java是sun公司开发出来的,他的最大竞争对手微软的.net有很多巨大的优势。sun公司为了应付来自微软的压力,提出开源,也就是源代码开放,尽管现在是部分代码开放,但压力越来越大,很多支持者和使用者要求sun把开源放的更大些。
你要把自己的代码加密是为了保护自己的知识产权,从个人来说是无可厚非的。但你学习java就是喜欢java的特性,为了支持java的发展,还是开源吧,让更多的人免费享有你的资源。
个人意见!不要误解。
[解决办法]
商业程序的话简单混淆下就行了,以防随便找个学过java的就能破解。
二进制都有人能破解,你认为这个世界上还有啥是破解不了的。目前尚未破解的算法也只是时间问题,人类的智慧实在是大伟大了。
一般不会有人反编译学习代码的,都是出于其他目的,例如共享软件解密,通过破解绕个验证等等。目前没用根本解决方案,微软的东西,无一幸免,如果你的东西真的做的非常好的话,结果也一样,所以我的建议就是简单混淆下,以防菜鸟破解就行了。
[解决办法]
我和你说可能,因为对这个我有过研究。
目前有很多软件提供class混淆功能,当别人反编译为.java文件后,就算不加修改,也无法直接再反编译回.class文件(报各种各种未知的错误)。
但是可以使用十六进制分析器直接修改.class文件!
目前我所能做的只能修改字母、数字及常用符号,比如将A改为B,将>改为<,能做到这些,足以破解一些小型系统了。比如说人数限制、使用次数限制。
但是如果将汉字的十六进制修改为自己所需要的汉字的十六进制,在这里我却犯难了(不知道别人是否成功了)。所以如果有这样的系统,在页面或屏幕打印汉字的话,我无法将它打印的字修改为我所需要的汉字。如果能突破这点,就差不多成功了。
总之一点,不要妄想将.class文件反编译为.java文件后再修改,然后再编译为.class文件使用,因为只需要添加混淆字符,就无法再编译为.class文件了。