Как отследить запись на диск файла из ДОСовской программы?

Тема в разделе "WASM.WIN32", создана пользователем frozen, 3 окт 2004.

  1. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    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:
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    CARDINAL



    По правилам - да. Но тут в другой ветке

    уже обсуждали, что некоторые коды зарезервированы

    ntvdm для своих целей. C4C4 в ДОС и не будет, т.к.

    она используется хитрыми защитами для обращения

    в WIN32 именно из ntvdm.

    Кстати, я отслеживал запись на хард-диск.

    Для флоппи будет что-то другое.

    INT 40, например ?! И запросто DeviceIoControl.

    +++++++++++++++++

    Свяжись со мной по мылу valterg(a)inbox.ru

    или посмотри тут ветки

    Как SoftIce узнает, что происходит загрузка ?

    2bogrus native.exe


    Может подскажешь что.
     
  3. frozen

    frozen New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2004
    Сообщения:
    7
    Эти драйвера, как я понял, не являются драйверами windows, а представляют собой обычные ДОСовские драйвера. Так вот, что бы функция не проходила через KiSystemService, у программы в ядре должен быть какой то свой кусок кода - драйвер (ВИНДУСОВЫЙ). Иначе никак.

    Что за функция NtVDMConrtol? Не может запись идти через нее? Описания я нигде не смог найти, нашел только прототип (см. выше).

    Кстати, почему же тогда NtCreateFile и NtClose вызываются по-нормальному, т.е. с проходом через SST?
     
  4. frozen

    frozen New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2004
    Сообщения:
    7
    CARDINAL

    кстати, для того чтобы получить подобный протокол, не нужен никакой "свой драйвер слежения", достаточно запустить обычный File Monitor от sysinternals (www.sysinternals.com)
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    frozen



    Есть еще идея. Ведь ДОС прекрасно может разгрести

    запись файла до записи секторов. И тогда ничто

    не мешает все реализовать, например, через

    NtDeviceIOControlFile ?! Да и вообще слово File

    в конце этой функции наводит на размышления ?!
     
  6. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    frozen



    какя разница. Да, в принципе ты прав. Но, у файлмона есть один минус - он не показывет обращения к устройствам, я же напротив наблюдаю и дрова и пайпы.