Как программно создать самораспаковывающийся архив?

Я пытался создать утилиту, которая генерирует самораспаковывающийся исполняемый файл, содержащий предварительно сгенерированный исполняемый файл и динамически сгенерированный текстовый файл.

Я посмотрел, возможно, я искал с неправильными ключевыми словами, но я не смог найти ничего, что могло бы помочь.


person mildlycompetentprogrammer    schedule 31.01.2021    source источник
comment
Добро пожаловать в StackOverflow. О том, как задавать вопросы, читайте здесь: stackoverflow.com/help/how-to-ask Постарайтесь включить часть работы, которую вы уже проделали, и более точно опишите проблему, с которой вы столкнулись.   -  person Miraziz    schedule 31.01.2021
comment
Вероятно, вы можете добавить все, что хотите, в exe, и это сработает.   -  person xanatos    schedule 31.01.2021
comment
есть ли API для чтения и записи из исполняемого файла? если да то я не нашел   -  person mildlycompetentprogrammer    schedule 31.01.2021


Ответы (1)


Быстрый и грязный способ

Вы можете добавить все, что хотите, в exe, и это сработает. Итак, у вас есть готовый распаковщик исправленного exe. Вы добавляете к нему легко находимую последовательность байтов, а затем добавляете файл. Или, что еще лучше, вы добавляете файл в заглушку, а затем добавляете длину как int64. Итак, в распаковщике вы просматриваете последние 8 байтов, видите, насколько велика полезная нагрузка, а затем читаете полезную нагрузку. Никакой магической последовательности не требуется. Некоторые предложения см. в разделе добавление данных в exe.

Лучший способ

Вы используете mono.cecil, чтобы изменить исполняемую заглушку и добавить в качестве ресурса сжатое содержимое. Здесь возникает вопрос по поводу аргумента.

person xanatos    schedule 31.01.2021
comment
Спасибо, вроде должно работать - person mildlycompetentprogrammer; 31.01.2021