#c #memory-management
#c #управление памятью
Вопрос:
У меня есть исполняемый файл c , я объединил его последнюю часть с изображением. Хотелось бы загрузить весь исполняемый файл в память, затем разбить объединенный образ на беззнаковый символ * для загрузки внутри того же исполняемого файла.
Предположим, что сам исполняемый файл имеет размер 47104, а изображение имеет размер 13216. Таким образом, объединяя эти два, исполняемый файл будет составлять около 60320 (47104 13216). Я думал о :
unsigned char * entireExe;
unsigned char * img;
memcpy(entireExe, how to load the entire executable to memory???, 60320);
memcpy(img, entireExe 47104, 13216);
displayImage(img); // using any method available (opencv/poco/devilIL/opengl,etc)
Комментарии:
1. Рассматривали ли вы возможность простого объявления
unsigned char img[]={ ... }
, содержащего рассматриваемый образ, и просто забыть о проблемах, связанных с операционной системой, и просто использовать обычный стандартный C ?2. Или почему бы просто не использовать стандартный ввод-вывод для открытия файла, поиска данных изображения, а затем его чтения?
3. Привет, Сэм, Причина, по которой я не хочу использовать этот маршрут, заключается в том, что по соображениям безопасности ресурс фактически зашифрован.
4. Итак? Ничто не мешает вам включить зашифрованные данные в этот массив.
5. Да, но, учитывая, что таких файлов несколько, а не только один, я попытался добавить всего несколько внутри массива, и у меня возникли проблемы с кучей.
Ответ №1:
Почему бы не загрузить DLL в память и не использовать ее адресное пространство для хранения информации об изображении? Он должен выделять достаточно места, чтобы делать все, что вам нужно. Или вы можете отобразить изображение внутри окна, созданного DLL, если хотите. Если вы пытаетесь отредактировать сам исполняемый файл, я бы посоветовал использовать IDA или любой другой инструмент обратного проектирования, чтобы просмотреть его страницы PE struct / memory и перейти оттуда.
Это хороший ресурс: https://github.com/67-6f-64/Firefly/blob/master/Firefly Library/pe_structs.hpp
Комментарии:
1. Привет, Родни! Да!! Это то, о чем я думал, я займусь этим прямо сейчас!