Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Уточни 26.03.04 01:47 Число просмотров: 1674
Автор: amirul <Serge> Статус: The Elderman
|
> Уважаемые , подскажите как бы реализовать самомодификацию > исполняемого файла? > Т.е. есть exe'ник, необходимо заставить его стукнуться в > инет, чтоб он там качнул файл, и НЕ ЗАПУСКАЯ его, изменить > себя? Необходимо, чтобы он изменился в памяти или на диске. Если в памяти, то это тривиально, если на диске, то кроме того, что предложил Killer{R} есть способ:
Под NT:
Можно сделать свой thread в другом процессе и из него удалить/пересоздать файл. Причем не обязательно это делать в explorer-е как рекомендуют многие. Эксплорера может и не оказаться (есть извращенцы, которые меняют shell). Просто пытаешься открыть (OpenProcess) все процессы с нужными правами, какой откроется такой откроется. Делаешь там VirtualAllocEx, записываешь кусочек кода при помощи WriteProcessMemory и запускаешь на исполнение поток при помощи CreateRemoteThread. Благополучно выходишь из основного процесса. В созданном потоке ждешь пока процесс перестанет открываться и делаешь с его файлом что угодно.
Под 9x:
Есть одна тонкость. Можно освободить свой модуль и после этого удалять его. Надо выделить динамическую память HeapAlloc, скопировать туда кусок кода и перейти туда. На новом месте сделать FreeLibrary(GetModuleHandle(NULL)) и можно безболезненно удалять свой файл и перезаписывать его. Есть еще один (извращенный) способ: повыкладывать на стек адреса всех функций со всеми параметрами и сделать ret.
|
- [Win32] Самомодификация? - Lutien 26.03.04 00:46 [1263]
- [Win32] Уточни - amirul 26.03.04 01:47 [1674]
- Под NT:
- Killer{R} 26.03.04 01:02 [1412]
- Под NT: - Lutien 27.03.04 00:33 [1355]
- мдя - Killer{R} 27.03.04 00:48 [1368]
|
|
|