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

Fra*_*kie 6 java security encryption bouncycastle reverse-engineering

目的:

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

理念:

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

问题:

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

额外

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

And*_*ell 2

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

更新

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

如果加载程序位于用户无法访问的锁定计算机上,那么您要解决的用例是什么?

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

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