| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Добавление произвольной информации в exe-файл |
| Автор: YoD 20.12.2004, 13:08 |
| Подскажите пожалуйста: можно ли как-нибудь в exe-файл, скомпилированный Visual Basic'om .NET, добавить ещё какую-нибудь информацию? К примеру, я пишу программу архиватор, и мне нужно в уже готовую программу-распоковщик внедрить упаковываемые файлы. Если такое возхможно, то подскажите пожалуйста, как внедрять информацию и как её оттуда доставать самой программой? |
| Автор: Akina 20.12.2004, 13:55 |
| Да запросто. Вставляешь в текст программы код-болванку работы с этой инфой - полностью правильный, но с неверным смещением (seek). Компиляешь. Смотришь какое получилось реально смещение. Изменяешь код. Пересобираешь. Блок данных можно вставлять как в неиспользуемое пространство (сегментов, stub'a, relocation table, etc.), так и в хвост. А вообще это неразумно - для чего, спрашивается, придуманы ресурсы? |
| Автор: YoD 20.12.2004, 14:09 |
| Спасибо за информацию, но, если не трудно, можно поподробнее про смещения и всё вышеописанное. И буду очень благодарен за пример исходника. А то честно говоря я плохо понял... |
| Автор: Akina 20.12.2004, 14:17 | ||
Чтение куска данных из самого себя (draft):
|
| Автор: arilou 21.12.2004, 12:56 |
| А почему нельзя взять то, что ты хочешь заархивировать, сжать его, а потом с помощью System.Reflection.Emit сгенерить новый EXE'шник, вставив в него в виде embedded resource сжатые данные? Тем более, что если ты модифицируешь .NET assembly после компиляции, она уже не будет запускаться средой. Вот. |
| Автор: S.A.P. 21.12.2004, 13:09 |
| Все гораздо проще: берем заренее подготовенную откомпилированную программу, которая будет извлекать из себя данные, присобачиваем к его концу файлы, которые будут извлекаться, а их размеры записываем где нибудь в ресурсах этого файла. Всё Извлекать файлы удобнее с конца, например, чтобы извлесь последний нам надо знать размер всего экзешника и размер этого файла. Чтобы извлечть предпоследний - смещение последнего и размер предпоследнего. и.т.д |
| Автор: arilou 21.12.2004, 13:22 |
| Мне кажется, что подход с Reflection.Emit более соответствует идеологии .NET. Таким образом свой самораспаковывающийся архив можно будет подписать, чтобы удостоверить его аутентичность. |
| Автор: YoD 23.12.2004, 15:11 |
| Всем спасибо за информацию... |