|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 10, 2004 10:02:50 frozen да хрен её знает , чё за функция , тебе нужно отмониторить все функции от ntvdm процесса исходящие, об этом скоро будет моя статья на сайте, если в армию не загребут, мать её за нагу. |
|
|
Дата: Окт 10, 2004 10:03:49 frozen Ну а с перехватом int21 таблицы IDT способ верный, вчера сам угарал с этим , всё канает. |
|
|
Дата: Окт 10, 2004 10:06:23 кстати, а какой студией ты пользуешься ? у меня 2.7 , только вот сам не понимаю, bpint действительно молчит, ну а вот если поставить бряку непосредственно по смещению, нарисованному в дескрипторе 21, то всё превосходно работает... в 2k, xp, 2k3 |
|
|
Дата: Окт 10, 2004 10:50:52 bpint 0x21 в ДОС под 2000-м(ХП) легко перехватывается. Найди ДОС-овкую таблицу прерываний и поставь BPM по выполнению, на адрес соответствующий INT 21 ( из 0:0x84 ). Я решил сам посмотреть. Короче все ДОС-функции в конце содержат JMP far cs:[xxxx] и идут в область 0xfe2e:xxxx. А MAPV86 гласит , что там ROM BIOS :-) Я не поленился и прошлепал покомандно всю INT 21 AH=40 Только в одном месте встретилась странная команда типа AND LOCK ................. Выполнялась она чуть дольше других ?! Не было никаких INT ( я уже знал что INT 13,25 и 26 не вызываются) и благополучно вышли по IRET :-( Тут уже обсуждалась запрещенная команда С4С4, которая на деле в NTVDM позволяет вызвать функции из NT. Видимо здесь похожий случай. |
|
|
Дата: Окт 10, 2004 14:07:16 CARDINAL У меня Driver Studio 3.1. Мониторинг функций ничего вразумительного не дает. Между NtCreateFile и NtClose нет ничего даже отдаленно напоминающего функцию записи. Такое ощущение, что вызов идет не через SST по int 2e ( ntdll!NtWriteFile), а каким либо образом напрямую вызывается из (NTOSKRNL.EXE!NtWriteFile), т.е. должен присутствовать какой то драйвер режима ядра у NTVDM...( есть ли такой вообще??) Хотя опять же, также нет функций для посылки кодов драйверу... - мысли вслух. Кому интересно, проблема уже решена другим способом, т.к. нет времени, и представляет чисто спортивный интерес. По поводу отслеживания IRP - как узнать момент, когда нужно приаттачится к флоппи диску? Ведь он монтируется при первом обращении к нему, т.е. когда нужно, например, что то записать - непосредственно перед записью. Соответственно, нужно приаттачится до записи, что бы успеть проанализировать IRP. |
|
|
Дата: Окт 11, 2004 05:43:10 valterg frozen это кусок протокола, полученного с помощью моего драйвера слежения. Здесь всё видно, какие модули включаются в состав процесса ntvdm. Как видишь, грузится два драйвера. Оба они имеют старый досовский формат. Укладываются в пространстве виртуальной машины в области, которую обычно занимает ROMBIOS и служат , скорее всего, как я понял,для эмуляции в некоторой степени DOS и контроля каких то важных доссовских структур. Все остальные действия выполняются где то в ядре выше. Инструкция, о которой ты писал, находится в модуле C:\WINDOWS\System32\ntdos.sys. Так вот, она никогда не исполнялась при int21(ah = 40h). Интересно то, что когда софтайс натыкался на инструкцию int21, система становилась колом. Очевидно, что данная инструкция вызывет какое то исключение и помоему это #GP. Кстати, инструкцию с кодом с4с4 я не видел. По правилам запрещённая инструкция вызывает исключение #UD, и дёргает обработчик 06 в IDT, независимо от уровня привелегий исполняемого кода. Так по крайней мере поступает драйвер HASP от аладина. Но, похоже, этим здесь не пахнет и близко. ... Ага, вот , покапался.. Кароче, в ntoskrnl имеется код, предназначенный для поддержки vdm машины. И функция NtWriteFile взывается, только через KiSystemService она не проходит. Код - виртуальной машины и монитора выполняется ОДНИМ И ТЕЖ ЖЕ ПОТОКОМ !!! Ладно, буду копать дальше... 1135 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\Documents and Settings\gamer\Рабочий стол 1136 23:47:06 1dc 1ec C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16 \??\C:\WINDOWS\system32\ntvdm.exe 1137 23:47:06 4 38 System ??? \DEVICE\HARDDISKVOLUME1 1138 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\DOCUME~1\gamer\0016~1 1139 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\Documents and Settings\gamer\Рабочий стол\Ярлык для DN.COM.pif 1140 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \DosDevices\A: 1141 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \DosDevices\B: 1142 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\system32\WINMM.DLLddd 1143 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\ 1144 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\ 1145 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\system32\NTVDMD.DLL 1146 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\System32\ntio.sys 1147 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\System32\ntdos.sys 1148 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\ 1149 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\SYSTEM32\CONFIG.NT 1150 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\TEMP\scs7E.tmp 1151 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\TEMP\scs7E.tmp 1152 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\TEMP\SCS7E.TMP 1153 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\SYSTEM32\HIMEM.SYS 1154 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\SYSTEM32\HIMEM.SYS 1155 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \??\C:\WINDOWS\SYSTEM32\COUNTRY.SYS 1156 23:47:06 5f0 640 "C:\WINDOWS\system32\ntvdm.exe" -f -i1 \DosDevices\C: |
|
|
Дата: Окт 11, 2004 17:18:22 · Поправил: valterg CARDINAL По правилам запрещённая инструкция вызывает исключение #UD, и дёргает обработчик 06 в IDT, независимо от уровня привелегий исполняемого кода. По правилам - да. Но тут в другой ветке уже обсуждали, что некоторые коды зарезервированы ntvdm для своих целей. C4C4 в ДОС и не будет, т.к. она используется хитрыми защитами для обращения в WIN32 именно из ntvdm. Кстати, я отслеживал запись на хард-диск. Для флоппи будет что-то другое. INT 40, например ?! И запросто DeviceIoControl. +++++++++++++++++ Свяжись со мной по мылу valterg(a)inbox.ru или посмотри тут ветки Как SoftIce узнает, что происходит загрузка ? 2bogrus native.exe Может подскажешь что. |
|
|
Дата: Окт 13, 2004 19:23:34 Эти драйвера, как я понял, не являются драйверами windows, а представляют собой обычные ДОСовские драйвера. Так вот, что бы функция не проходила через KiSystemService, у программы в ядре должен быть какой то свой кусок кода - драйвер (ВИНДУСОВЫЙ). Иначе никак. Что за функция NtVDMConrtol? Не может запись идти через нее? Описания я нигде не смог найти, нашел только прототип (см. выше). Кстати, почему же тогда NtCreateFile и NtClose вызываются по-нормальному, т.е. с проходом через SST? |
|
|
Дата: Окт 13, 2004 19:30:24 CARDINAL кстати, для того чтобы получить подобный протокол, не нужен никакой "свой драйвер слежения", достаточно запустить обычный File Monitor от sysinternals (www.sysinternals.com) |
|
|
Дата: Окт 15, 2004 09:28:23 frozen Есть еще идея. Ведь ДОС прекрасно может разгрести запись файла до записи секторов. И тогда ничто не мешает все реализовать, например, через NtDeviceIOControlFile ?! Да и вообще слово File в конце этой функции наводит на размышления ?! |
|
|
Дата: Окт 23, 2004 12:26:10 frozen какя разница. Да, в принципе ты прав. Но, у файлмона есть один минус - он не показывет обращения к устройствам, я же напротив наблюдаю и дрова и пайпы. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.103 |