Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Именно на диске.
27.03.04 00:29 Число просмотров: 1381
Автор: Lutien Статус: Незарегистрированный пользователь
|
> Необходимо, чтобы он изменился в памяти или на диске. Если > в памяти, то это тривиально, если на диске, то кроме того, > что предложил Killer{R} есть способ:
Именно на диске.
> > Под NT: > Можно сделать свой thread в другом процессе и из него > удалить/пересоздать файл. Причем не обязательно это делать > в explorer-е как рекомендуют многие. Эксплорера может и не > оказаться (есть извращенцы, которые меняют shell). Просто > пытаешься открыть (OpenProcess) все процессы с нужными > правами, какой откроется такой откроется. Делаешь там > VirtualAllocEx, записываешь кусочек кода при помощи > WriteProcessMemory и запускаешь на исполнение поток при > помощи CreateRemoteThread. Благополучно выходишь из > основного процесса. В созданном потоке ждешь пока процесс > перестанет открываться и делаешь с его файлом что угодно.
Идея очень хороша!
А не подскажите, мож шде есть статейка какая с примером, а то я такого не делала ни разу?
А будет ли работать метод NT под Win9x и наоборт?
> Под 9x: > Есть одна тонкость. Можно освободить свой модуль и после > этого удалять его. Надо выделить динамическую память > HeapAlloc, скопировать туда кусок кода и перейти туда. На > новом месте сделать FreeLibrary(GetModuleHandle(NULL)) и > можно безболезненно удалять свой файл и перезаписывать его. > Есть еще один (извращенный) способ: повыкладывать на стек > адреса всех функций со всеми параметрами и сделать ret.
|
|
|