【发布时间】:2011-12-13 02:42:51
【问题描述】:
我会直截了当,这样您就不必阅读太多。
基本上,我有一个 AES-128 位加密 Jar 文件。我想制作一个启动器,以便我可以将这个加密的 Jar 加载到内存中并运行它(使用密钥)。
我有一个简单的类加载器,但除非我将它解密到一个目录并运行它,否则它显然不会做我需要的事情(解密和内存加载)。
TL;DR:我需要在内存中运行 AES-128 位加密 Jar。
非常感谢任何帮助,请随时提出问题!
【问题讨论】:
-
如果您希望您的代码如此安全,您可能不应该使用最容易反编译的语言之一来编写它。可以编写一个 jar 加载器,但没有办法阻止人们只是从内存中转储它。
-
需要用Java编译。不是因为我不能用其他语言编写代码,而是因为其他语言不支持我正在做的事情。
-
@0x5f3759d 对于 C、C#、.. 以及任何语言都是如此。这可能需要更长的时间 5 分钟,但最后如果有人想要 jar 文件,他会很容易地获得密钥(在调试器中为 CreateFile 和 consorts 设置一个断点,也许用找到的 fd 为 ReadFile 添加一个断点,你会得到它很容易)。虽然我在这里并没有真正看到问题 - 如果您已经拥有类加载器,是什么阻止您读取文件并解密它? IE。你的实际问题是什么?
-
@Voo 我不知道有任何东西可以将已编译的 C/C++ 代码反编译回源文件。您当然可以查看程序集,但拥有几乎像 Java/.NET 这样的原始代码可以让反编译变得更加容易。
-
@0x5f3759df 我不是说“反编译整个程序并查看数百万不可读的 c 行”,我说的是“检查他何时打开/读取文件并遵循少数几行直到他解码它” - 这在两种/所有语言中都是微不足道的。哎呀,如果您使用导入的函数来解码文件,那就更简单了。
标签: java class memory loader encryption