· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

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

<< . 1 . 2 .

Посл.отвђт Сообщен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

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

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.103