прочитать exe-файл в памяти и выполнить его - PullRequest
4 голосов
/ 06 ноября 2011

Возможно ли использование Windows для чтения файла в память (сохранение данных в байтовом массиве), удаления исходного файла из файловой системы и выполнения его из памяти?


EDIT

Моя цель - защитить мой Java-код от обратного инжиниринга.

Я написал модуль запуска на C ++, который берет мой зашифрованный файл JAR, расшифровывает и запускает его. Маленькая проблема в том, что мне нужно записать расшифрованный файл jar где-нибудь в файловой системе, чтобы его можно было легко перехватить и декомпилировать ... нет способа предотвратить это?

1 Ответ

8 голосов
/ 06 ноября 2011

Нет, так делать нельзя. Не существует системного вызова, который говорит: «Возьми этот кусок моей памяти и используй только эту его часть как образ нового процесса».

Вы можете загрузить код в память и перейти к нему в рамках текущего процесса, но это уродливо, потому что вам приходится обрабатывать все перемещения.

Что касается специфической части Java:

Вы можете встроить интерпретатор Java в исполняемый файл C ++ . Вы можете написать свой собственный загрузчик классов для Java (через интерфейс C ++ к JVM), который будет загружать классы из вашего зашифрованного файла Jar. Таким образом, вы можете избежать записи незашифрованного файла Jar на диск. Это, конечно, будет видно в памяти любому, у кого есть отладчик ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...