使用行业级加密保护Java免受逆向工程的影响

kcwpcxri  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(156)
    • 目标:**

保护我的Java应用程序不受逆向工程的影响。

    • 创意:**

1.把程序分成两半(加载程序和程序)
1.加载程序将是一个普通的jar
1.程序将是一个加密的jar文件(bouncycastle,AES?)
1.加载程序向安全服务器(https)请求密钥以解码程序
1.然后一个加载器解码程序并加载它的类

    • 问题:**

第五个可能吗?
有人做过吗?
你知道现在有图书馆吗?
你能发现主要的陷阱吗?你会采取不同的做法吗?

    • 额外**

我知道要阻止对代码进行完全的逆向工程是不可能的。
我只是想让它更难追踪。

e0bqpujr

e0bqpujr1#

这是非常可能的使用类加载器。但它仍然是非常容易解码您的程序。所有需要做的是改变您的加载器写所有的类到磁盘之前,它加载到内存与您的自定义类加载器。

    • 更新**

如果用户可以执行Loader,那么我只需要反编译并替换Loader JAR文件,将类转储到磁盘。不仅如此,我确信一定有某种东西可以转储JVM的内存,并输出所有加载的字节码。
如果Loader位于用户无法访问的锁定计算机上,那么您尝试解决的用例是什么?
这些问题的"解决办法"是:
1.使用一个高级的混淆器,旨在打破反编译器。
1.阻止对JAR文件本身的访问。通过计算机上的ACL或通过使用远程服务器执行您希望安全的代码。这是Web应用程序的基本工作方式。Stackoverflow可以执行大量IP或处理,但我们永远无法访问用户体验输出结果的后端处理。

x4shl7ld

x4shl7ld2#

当然,这完全有可能;通过定义您自己的类加载器,您可以使用任意复杂的过程来生成类,然后可以对其进行反向工程。
保护算法不受逆向工程影响的唯一方法是远程执行它,在这种情况下,问题就变成了远程执行代码的所有输入和输出都不可信。

相关问题