日期:2014-05-20  浏览次数:20896 次

高分求高人讨论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源文件?
------解决方案--------------------