使用行业级加密从反向工程中保护Java

时间:2012-03-21 18:43:40

标签: java security encryption reverse-engineering bouncycastle

目标:

保护我的Java应用程序免受逆向工程。

想法:

  1. 将程序分成两半(加载程序和程序)
  2. loader将是一个普通的jar
  3. 程序将是加密的jar文件(bouncycastle,AES?)
  4. loader要求安全服务器(https)获取解码程序的密钥
  5. loader然后解码程序并加载它的类
  6. 问题:

    第5号可能吗?
    这里有人这样做过吗? 你知道有哪些图书馆吗?
    你能发现主要的陷阱/你会采用不同的方式吗?

    额外

    我知道不可能阻止代码的完全逆向工程 我只是想让它变得更难,更具可追溯性。

1 个答案:

答案 0 :(得分:1)

使用类加载器非常有用。但是解码你的程序仍然很容易。所有人都需要做的是更改你的Loader,将所有类写入光盘,然后再使用自定义ClassLoader将它们加载到内存中。

<强>更新

如果Loader是用户可以执行的东西,那么我只需要反编译并替换Loader JAR文件以将类转储到磁盘。不仅如此,我确信必须有一些东西可以占用JVM的内存转储并输出所有加载的字节代码。

如果Loader位于用户无法获取访问权限的锁定计算机上,那么您尝试解决的用例是什么?

这些问题的“解决方案”是:

  1. 使用旨在破坏反编译器的高级混淆器。
  2. 阻止访问JAR文件本身。通过机器上的ACL或使用远程服务器执行您想要的安全代码。这实际上是Web应用程序的工作方式。 Stackoverflow可以执行大量的IP或处理,但根据用户体验输出的结果,我们永远无法访问后端处理。