Ассемблерные вопросы:файлы и DLL
Быстрое усечение файла,создание DLL
Имеется контейнер в виде ехешника,содержащия в конце себя оверлей(ещё один ехешник).Как быстро(не перемещая никуда оверлейный ехешник) запустить его?
DLL
Имеется АссЕблер ML+MAsm32(скачано с Piter.com\Download,файлы к книге "Assembler.Практикум.2-е издание" и "Assembler.Учебник.2-е издание".При компиляции DLL-ки у неё отсутствует экспорт(кстати,чтобы опаблишить функцию,требуется написать PublicDLL <имя функции>,а ассемБлятор говорит,что не знает PublicDLL;при написании Public <имя функции> он не матерится,но функция в экспорте не появляется),работает она только при её загрузке.Как её скомпилировать,чтобы экспорт был?
или я не так понял вопрос
Имеется контейнер в виде ехешника,содержащия в конце себя оверлей(ещё один ехешник).Как быстро(не перемещая никуда оверлейный ехешник) запустить его?
[/QUOTE]
Насколько я понимаю, сделать это не получится.
1. Для того, чтобы иметь возможность выполнять программу, нужно загрузить образ в память.
2. Чтобы это работало надо либо загрузить в адресное пространство с адреса 0x00400000 (ну или какая там база указана в екзешнике) либо загрузить в адресное пространство твоего процесса и редактировать адреса по таблице перемещения.........
[/QUOTE]
Легко сделать на получится, но получится.
[QUOTE=HexEdit]
2. Чтобы это работало надо либо загрузить в адресное пространство с адреса 0x00400000 (ну или какая там база указана в екзешнике) либо загрузить в адресное пространство твоего процесса и редактировать адреса по таблице перемещения.........[/QUOTE]
Обычно экзешники неперемещаемы.
а нельзя ли просто изменить размер файла или создать новый,установив указатель начала файла на начало оверлея(правда,получится,что файлы будут иметь общую область,а такеи фокусы FAT/NTFS вряд ли выдержит).То есть мой ехешник с оверлеем похудеет(в глазах Explorder'а,Total Цommander'а и др. броузеров),а оверлей станет новым файлом
для чего тогда тебе вообще первый EXE?
запускай сразу оверлей, который оверлеем уже не будет.
Не,ты не понял.Есть файл(основной).При его запуске надо быстро запустить оверлей.Просто сохранять этот файл би запускать его потом будет долго,поэтому хотелось бы сделать это быстро,например просто урезав гл. ехешник и представив оверлей другим файлом
что его запустить просто jmp и всё
или может я что то не так понял
Немного смахивает на вирусописание :)
если сразу сказать зачем это надо то проблема намного быстрей решается
Имеется контейнер в виде ехешника,содержащия в конце себя оверлей(ещё один ехешник).Как быстро(не перемещая никуда оверлейный ехешник) запустить его?
[/QUOTE]
Срезай первый экзешник (пиши прогу):
1. Открыть файл.
2. Прочитать в буфер часть файла, содержащего второй экзешник.
3. Закрыть файл.
4. Создать новый файл.
5. Записать буфер в новый файл.
6. Закрыть файл.
Запускай новый файл.
3. Закрыть файл.
4. Создать новый файл.
5. Записать буфер в новый файл.
[/QUOTE]
А если второй ехе-шник офигеть большой?Да и память не резиновая.Хотя,конечно,можно вставить ограничение на размер поедаемых файлов,но это будет уже не по хацкерски