Включить двоичные данные в exe

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 19:18

Как лучше всего включить двоичные данные в exe и записать их потом без проблем в другой файл при запуске exe?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Включить двоичные данные в exe

Сообщение alibek » 29.05.2009 (Пт) 19:42

Добавляй в конец файла.
Lasciate ogni speranza, voi ch'entrate.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 19:50

а антивирусы ругаться не будут? У exe вроде есть контрольная сумма. Мож, как-то в ресурсы пихать? Не работал ещё с ресурсами - не знаю, как.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Включить двоичные данные в exe

Сообщение Williams » 29.05.2009 (Пт) 19:57

Space писал(а):а антивирусы ругаться не будут? У exe вроде есть контрольная сумма.


Контрольная сумма-то есть, но кому охота ее специально подсчитывать? В самом файле она не хранится.
И вы думаете, что вас оставят в живых после прочтения этого поста?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 29.05.2009 (Пт) 19:59

alibek писал(а):Добавляй в конец файла.

Это совсем не «лучше». Правильно: создавать секцию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 20:15

Контрольная сумма-то есть, но кому охота ее специально подсчитывать? В самом файле она не хранится.
А где она хранится и на какой момент она рассчитывается? При создании/модификации файла? Она служит только для проверки целостности файла от непрограммной порчи на носителе?
Правильно: создавать секцию.
А чем чреват произвольный размер мусора в конце файла?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 29.05.2009 (Пт) 20:25

Space писал(а):А чем чреват произвольный размер мусора в конце файла?

Если у тебя в распоряжении есть хороший формат, обеспечивающих структуру, гарантирующий тебе, что данные обязательно сохранятся в файле, в том виде, месте и количестве, в котором тебе надо, но кроме того, гарантирующих, по твоему желанию, из проецировании в память и даже установку соотв. атрибутов защиты — почему надо действовать варварскими методами?

Чреват разжижением мозга. Шутка.
Чреват тем, что кто-либо, работающий с PE-файлом, посчитает эти данные мусором (и вполне оправданно посчитает, подчеркивам) и с легкостью перезапишит их, если надо будет. Секция же — документированный правильный способ хранить любые нужные тебе данные в PE-файле и загружать (или не загружать) их в нужное место АП. Хранение в ней данных гарантирует, что после того, как ты что-нибудь отредактируешь в файле каким-нибудь PE Explorer'ом, ResHacker'ом, с ними ничего не случится.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 20:35

а есть гарантия, что управление не перейдёт на мусор в конце файла? Размер секции - 512?
А почему контрольную сумму не хранят в самом файле? А если файл модифицируется варварским методом (юзер зашёл и поправил в редакторе) или при скачке из инета/копировании попортились данные? Уже по контрольной сумме можно предупреждать об изменении файла или не запускать его вообще.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 29.05.2009 (Пт) 20:41

Space писал(а):а есть гарантия, что управление не перейдёт на мусор в конце файла?

Управление гарантировано перейдёт на Entry Point. В дальнейшем, гарантировать, что управление не перейдёт черти-куда может только код EntryPoint-а и код, вызываемый оттуда.

Размер секции - 512?

Бред. Размер секции может быть любым. Но должен отвечать нескольким требованиями, т.е. быть кратным некоторым величинам.

А почему контрольную сумму не хранят в самом файле?

Хранят.

А если файл модифицируется варварским методом (юзер зашёл и поправил в редакторе) или при скачке из инета/копировании попортились данные? Уже по контрольной сумме можно предупреждать об изменении файла или не запускать его вообще.

Да, и?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 20:55

Да, и?
Открыл копию notepad.exe, удалил пару строк из середины и всё - notepad.exe система отказалась запускать. Где гарантия, что файл exe запустится с моим мусором в конце?
Бред. Размер секции может быть любым. Но должен отвечать нескольким требованиями, т.е. быть кратным некоторым величинам.
Ну и в каком формате мне дописывать данные?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 29.05.2009 (Пт) 21:17

Space писал(а):Открыл копию notepad.exe, удалил пару строк из середины и всё - notepad.exe система отказалась запускать. Где гарантия, что файл exe запустится с моим мусором в конце?

Потому что ты нарушил данные, которые там были. Внутри файла было записано что и где лежит. Ты удалил клок, и данные, идущие после него сдвинулись назад. И теперь, что, что должно было лежать в некотором месте, больше там не лежит. Поэтому, файл не работает. Система, когда загружает PE-файл, читает только то, что ей надо. Твои данные в конце файла ей нигде не нужны, более того, они нигде не значатся, поэтому система на них внимания не обратит. Но не обратит внимания и PE-explorer, спокойно записав поверх твоих данных что-нибудь своё.

Space писал(а):Ну и в каком формате мне дописывать данные?

В каком удобно, в каком тебе надо, в таком и записывай.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 29.05.2009 (Пт) 23:19

В каком удобно, в каком тебе надо, в таком и записывай.
Так на кой тут был разговор про секции? Я думал, просто кинуть данные тогда по размеру кратные 512.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Включить двоичные данные в exe

Сообщение Williams » 30.05.2009 (Сб) 0:28

Space писал(а):Открыл копию notepad.exe, удалил пару строк из середины и всё - notepad.exe система отказалась запускать.

:lol:

в цитатник
И вы думаете, что вас оставят в живых после прочтения этого поста?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Включить двоичные данные в exe

Сообщение arvitaly » 30.05.2009 (Сб) 1:47

Блин работа с ресурсами реализована почти в любой среде разработки, в том числе и в VB6 - VB 6 Resource Editor

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 30.05.2009 (Сб) 3:23

в цитатник
Буде цитировать меня студентам :) На алтарь ;)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 30.05.2009 (Сб) 12:19

Space писал(а):Так на кой тут был разговор про секции? Я думал, просто кинуть данные тогда по размеру кратные 512.

Что, проблемы с пониманием? Если хочешь какие-то данные хранить в PE-файле, то только в секции.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Включить двоичные данные в exe

Сообщение Mikle » 30.05.2009 (Сб) 13:16

А если нужно, чтобы данные файл хранил в себе и при необходимости их можно было менять, не перекомпилируя?
Например прога для хранения паролей, при старте спрашивает пароль, если ввели верно - открывает данные на редактирование, при закрытии спрашивает, сохранить ли изменения, и, если "Да", шифрует и сохраняет, В СЕБЕ!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 30.05.2009 (Сб) 13:21

То..?

Или это вопрос «как такое сделать»?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Включить двоичные данные в exe

Сообщение Space » 30.05.2009 (Сб) 13:47

Что, проблемы с пониманием? Если хочешь какие-то данные хранить в PE-файле, то только в секции.
Так бы и сказал, в существующей секции данных. Там особо не разгонишься. Хакер, ты если такой умный, то так и сказал бы сразу :) А вообще можно сгенерить строку с идентификатором и нужным числом пробелов под данные и загнать в проект, а потом просто по идентификатору заменить содержимое строки в exe. Но тогда и можно сразу перекодировать двоичные в HEX строку и загнать в проект. Всю эту туфту я знаю. Меня просто прельстила возможность писать данные в конструкторе, автоматом, в конец файла. В принципе, мне не важно, писать в конец, или в зарезервированное место. Хакер, ваш выход! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 30.05.2009 (Сб) 15:49

Space писал(а):Так бы и сказал, в существующей секции данных.

Ты сведёшь меня с ума! Я так не сказал, потому что я ничего такого не имел. Не знаю, с чего ты взял такую ерунду. Можешь конечно и в секции данных, если тебе там хватит места. Но имелась в виду любая секция, главным образом, созданная тобою же внутри PE-файла. Или тебе не очевидно, что ты внутри файла можешь создать кучу своих секций?


Space писал(а):Там особо не разгонишься. Хакер, ты если такой умный, то так и сказал бы сразу :) А вообще можно сгенерить строку с идентификатором и нужным числом пробелов под данные и загнать в проект, а потом просто по идентификатору заменить содержимое строки в exe. Но тогда и можно сразу перекодировать двоичные в HEX строку и загнать в проект. Всю эту туфту я знаю. Меня просто прельстила возможность писать данные в конструкторе, автоматом, в конец файла. В принципе, мне не важно, писать в конец, или в зарезервированное место. Хакер, ваш выход! :)

К сожалению не мой выход. Я тебе сказал абсолютно правильный (не подкопаешься) способ, который (раз он правильный) даёт некоторые гарантии и преимущества (например, если тебе надо, данные после загрузки окажутся в нужном (тебе) месте памяти). Ты то не понимаешь вообще, то понимаешь неправильно (откуда-то решил, что я говорю о секции данных).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Включить двоичные данные в exe

Сообщение Mikle » 02.06.2009 (Вт) 17:55

Хакер
Да, вопрос в том, как такое сделать. То есть варианты, конечно, есть, например писать под ДОС :)
Можно сделать, чтобы программа порождала "двойника", передавала ему управление и закрывалась, он модифицировал, как нужно, данные в программе, а, закрываясь, снова запускал исходный EXE с заданием уничтожить "себя". Но как-то это некрасиво...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 02.06.2009 (Вт) 19:10

Тебя беспокоит то, что EXE не может править свой файл, пока запущен?

У меня есть предположение (никак не проверенное), что если промапленный образ, т.е. страницы, составляющие его, сделать swap-backed, то система даст поправить файл.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Включить двоичные данные в exe

Сообщение SLIM » 03.06.2009 (Ср) 21:24

Пусть файл не запущен
Секция - это ведь не просто кусок данных (иначе зачем называть ее секцией)
Значит она где-то "засвечивается". Значит просто "писанием" в нужное место не прокатит. Перекомпилировать нет возможности.
Что тогда?
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Включить двоичные данные в exe

Сообщение iGrok » 03.06.2009 (Ср) 21:37

SLIM писал(а):Пусть файл не запущен
Секция - это ведь не просто кусок данных (иначе зачем называть ее секцией)
Значит она где-то "засвечивается". Значит просто "писанием" в нужное место не прокатит. Перекомпилировать нет возможности.
Что тогда?

А речь о "просто писании" и не идёт. Дописать данные, сдвинуть всё остальное, поправить заголовок и т.п..
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 04.06.2009 (Чт) 3:33

SLIM писал(а):Пусть файл не запущен
Секция - это ведь не просто кусок данных (иначе зачем называть ее секцией)
Значит она где-то "засвечивается". Значит просто "писанием" в нужное место не прокатит. Перекомпилировать нет возможности.
Что тогда?

Глупость.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Включить двоичные данные в exe

Сообщение Mikle » 04.06.2009 (Чт) 10:14

Хакер
если промапленный образ, т.е. страницы, составляющие его, сделать swap-backed, то система даст поправить файл.

Поиск по "swap-backed" результата не дал...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 04.06.2009 (Чт) 11:53

А зачем?

Подумай о VirtualProtect. Подумай о режиме COPY_ON_WRITE. Зачем copy, кого copy, куда copy, и почему on-write. Если не особо поможет, прочитай статью Тёмыча о ВП.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Включить двоичные данные в exe

Сообщение Mikle » 04.06.2009 (Чт) 17:40

Хакер писал(а):А зачем?

Затем, что это единственное, годящееся для поиска, словосочетание в твоём ответе.
"статья Тёмыча о ВП", видимо о VirtualProtect?
Поиск в статьях по "VirtualProtect", как и по "COPY_ON_WRITE" так же не даёт результата.
Придётся прочесть все статьи Тёмыча :) В принципе только на пользу.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Включить двоичные данные в exe

Сообщение Хакер » 04.06.2009 (Чт) 17:54

Нет, у него в блоге есть единственный топик с названием «Виртуальная память».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

    TopList  
cron