Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Найти файл в оперативной памяти


Автор: FrouL 19.7.2008, 15:52
Нужно сделать программу, которая при загрузке в оперативке находит файл C:\WINDOWS\system32\drivers\tdi.sys и меняет пару байт в нем.
Нашел вот эти функции 
Код

hProcess := OpenProcess (PROCESS_VM_WRITE or PROCESS_VM_OPERATION, False, ProcessID);
WriteProcessMemory (hProcess, Pointer(Адрес в чужом процесса), Pointer(Адрес записываемых данных), <Число записываемых байт>, WrittenBytes);
CloseHandle (hProcess);

Но мне это, как я понимаю не подходит, так как tdi.sys это не процесс. Вопрос состоит в том, как найти файл (на худой конец я нашел его в WinHEX и записал позицию), но самое главное как там заменить эти пару байт?

Автор: W4FhLF 19.7.2008, 16:24
Для решения задачи необходимо писать драйвер. Образ tdi проецируется на виртуальное адресное пространство ядра системы, к которой ты доступ из своего приложения получить не сможешь. 

Автор: Riply 19.7.2008, 16:31
Цитата(FrouL @  19.7.2008,  15:52 Найти цитируемый пост)
Нашел вот эти функции 


Даже и не знаю, что посоветовать.  
Может перед тем как "менять пару байт в tdi.sys", стоит книжки почитать ?

Автор: FrouL 19.7.2008, 16:56
W4FhLF, Спасибо. Оказывается не все так просто.
Такая потребность возникла для совместимости с Vista SP1, так как в ней изменить сам файл можно, но при загрузке идет проверка цифровой подписи, которая естественно после изменения файла оказывается не валидной.
Riply, и вам спасибо за совет. 

Автор: W4FhLF 19.7.2008, 17:09
Так а в прицнипе зачем патчить tdi.sys? Ты что обход какой реализуешь?

Автор: Virtuals 21.7.2008, 15:52
FrouL, а просто снести подпись драйвера, и сказать системе чтоб забила на отсутствие подписи, никак? в ХР прокатывает как в висте незнаю, но она имхо неочень от ХП отличается если капнуть поглубже smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)