Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

Объединение файлов   Найти похожие ветки 

 
paul_shmakov ©   (2001-12-23 21:36) [1]

если охота самостоятельно это программно сделать, то нужно:
1. почитать про устройство pe-файла. самое нормальное руководство от hard wisdom (оно плохое, но остальные еще хуже). после прочтения, в принципе, должно стать ясно, как сделать задуманное. базовые знания ассемблера тоже пригодятся.
2. расположить в exe-шнике код, который будет вызывать CreateProcess, загружая там самым нашу программу. сделать это проще всего добавив еще одну секцию с кодом. после добавления секции следует поправить множество параметров в заголовке (кол-во секций, размер кода и т.п.). в эту секцию следует поместить примерно следующий код:

push OFFSET pi
push OFFSET sinf
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push OFFSET filename
call CreateProcessA

push dword ptr [pi + 4]
call CloseHandle
push dword ptr [pi]
call CloseHandle

jmp dword ptr [OriginalEntryPoint]

filename db "Название мое программы.exe а здесь параметры можно вставить", 0
pi dd 4 dup(0)
sinf dd 44h
db 40h dup(0)
OriginalEntryPoint dd 0

код очень простой - всего лишь вызывает CreateProcess и CloseHandle два раза, чтобы закрыть дескрипторы процесса и потока.
далее нужно взять из pe-заголовка оригинальную точку входа (откуда начинается исполнения программы), сохранить ее в переменной OriginalEntryPoint, и записать свою точку входа.
(если быть более точным, то конечно в OriginalEntryPoint нужно записать значение, равное разнице адресов переменной filename и оригинальной точки входа).

в принципе это почти все. если мы правильно добавили новую секцию, правильно установили все ее параметры, правильно добавили код, после всего этого правильно исправили все переменные в pe-заголовке, то explorer.exe будет при своей загрузке загружать и нашу программу.

одно серьезное но. необходимо, чтобы программа, к которой мы цепляемся импортировала функцию CreateProcess и CloseHandle. если нет, то можно попытаться изменить таблицу импорта и добавить эти две функции, но эта задача уже более сложная и не всегда решаемая. на эту тему очень подробно писал Крис Касперски (не помню, правда, где).

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

если самому не очень хочется разбираться, то есть готовые программы. тут какой-то joiner советовали.



Страницы: 1 вся ветка

Текущий архив: 2002.03.25;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.219 c
3-80437
Sewix
2002-02-27 14:08
2002.03.25
Как подключить данные из Access в Delphi


1-80537
dima_
2002-03-13 13:19
2002.03.25
Помогите чайнику с Tmemo...


3-80430
SkyR
2002-02-26 06:48
2002.03.25
Такой ламерский вопрос...


1-80532
kserg@ukr.net
2002-03-13 12:09
2002.03.25
TComboBox.OnChange - непонятно что считать изменением?


7-80709
Kirill
2001-12-21 20:26
2002.03.25
Format Date