是否可以使用Windows将文件读入内存(将数据保存在字节数组中),从文件系统中删除原始文件并从内存中执行?
修改
我的目标是保护我的java代码免受反向引擎。
我在C ++中编写了一个启动程序,它使用我的加密jar文件,解密并启动它。 小问题是我必须在文件系统的某个地方编写我的解密jar文件,因此可以很容易地捕获和反编译......没有办法阻止这个?
答案 0 :(得分:8)
不,这样做是不可能的。没有系统调用说“把我的记忆中的这一部分用作新过程的图像”。
您可以将代码加载到内存中并在当前进程中跳转到它,但这是一件很难看的事情,因为您必须处理所有重定位。
关于Java特定部分:
您可embed a Java interpreter within your C++可执行文件。您可以编写自己的Java类加载器(通过CVM接口连接到JVM),它将从加密的Jar文件中加载类。这样你就可以避免将未加密的Jar文件写入磁盘。当然,任何拥有调试器的人都可以在内存中看到它......
答案 1 :(得分:0)
虽然这是一个古老的问题,但是有一种方法可以将文件读入内存并执行它,称为RAM磁盘。这可以用于任何编程语言。
设置单个文件执行的速度很慢,但可以完成此工作。