如何防止JAVA程序源代码被反编译

来源:java认证发布时间:2012-11-12 13:06:02java认证视频

  好了,调用了函数,返回的值要保存下来吧。那么就是第三行要做的事情了。

  第三行:5 astore_1

  呵呵,很简单的。但是却有文章,也是比较容易混乱的地方。

  astore_为虚拟机指令,作用为:将当前reference存储到局部变量中去。而必须是对当前框架的局部变量的有效索引。打个比方,可能我们这个函数中可能还要用到这个局部变量,我们可以通过来找到它。例如调用虚拟机指令:

  aload_1,就能得到该值。

  第四行:6 return

  同样的,return也是虚拟机指令了,它的作用为:从方法返回void。

  这里也就是退出main函数。

  ----------------------------------------------------------------------------

  ok,终于啰嗦完毕了。有些朋友可能要问,这么复杂,才四行就说这么多,呵呵,可能是我这人废话过多,当然如果你熟悉了,一点就能看懂了。通过肉眼就可以反编译程序了。目前所有的反编译工具都无法做到完美反编译,在有问题的地方还需要人去修正。

  好了,说了半天如何反编译,我们就来看看如果在你的程序如果防止别人来反编译。好不容易写好的程序被人反编译了,多郁闷。哈哈。工欲善其事,必先利其器,这句话用对了吗?

  什么混淆等等的方法,我就不说了,我这里主要是要说一种通过添加代码来在某种程度来避免当前流行的反编译工具对你的代码进行反编译。

  方案一。

  1,首先要添加一个参数为Exception类型的函数,例如这样。

  public static void Fake(Exception e)

  {

  e.toString();

  }

  一定要有e.toString();,因为要防止你的混淆器把无用的代码过滤。

  2,然后在每个类中调用这个函数,放在try...catch(Exception e)..中的catch里面,例如:

  try

  {

  ...

  }

  catch (Exception e)

  {

  Fake(e);

  }

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答