是否可以使用Windows将文件读入内存(将数据保存在字节数组中),从文件系统中删除原始文件并从内存中执行它?
EDIT
我的目标是保护我的 java 代码免受逆向工程的影响。
我用 C++ 编写了一个启动器,它获取加密的 jar 文件,解密并启动它。
小问题是我必须将解密的 jar 文件写入文件系统中的某个位置,以便可以轻松捕获和反编译它...没有办法阻止这种情况吗?
不,不可能那样做。没有系统调用说“取出我的这块内存并仅使用其中的一部分作为新进程的映像”。
您可以将代码加载到内存中并在当前进程中跳转到它,但这是一件很难看的事情,因为您必须处理所有重定位。
关于Java特定部分:
You can 在 C++ 中嵌入 Java 解释器可执行的。您可以编写自己的 Java 类加载器(通过 JVM 的 C++ 接口),该加载器将从加密的 Jar 文件加载类。这样您就可以避免将未加密的 Jar 文件写入磁盘。当然,任何拥有调试器的人都可以在内存中看到它......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)