![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Привет!
Есть такая ситуация. Нужно отловить комбинацию флагов,когда файл открывается на запись. Никак не получается. Для функции
не работает,к примеру в Фаре по нажатию F4 такой код
Может кто подскажет правильные флаги,комбинацию которых надо проверить, что б узнать, что файл может открываться для записи Спасибо -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Не попадаю ни в один блок при отладке. То же самое, к примеру, и с блокнотом ,при сохранении. uCreateDisposition приходит с флагом FILE_OPEN Ну и что делать? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
ты б хоть привел значение AccessMask
![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Coocky, для начала покажи ты получаешь uCreateDisposition и AccessMask.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Смотрел через FileSpy-действительно Фар записывает через F2 с флагами, в которых одним является FILE_WRITE_DATA. Но я не попадаю в блок
Вообще в никакие не попадаю ![]() Вот при сохранении по F2 такое значение- AccessMask=1074790528 (hex 0x40100080) У меня определено #define FILE_WRITE_DATA ( 0x0002 )
Как и все-методом перехвата функции. ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Код?
Т.е. один вызов NtCreateFile и разные значения AccessMask у тебя и в FileSpy? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Да ну перестань. Сейчас возьму и всю либу брошу сюда ![]() Там с перехватом все ок. Все флаги нормальные.
Похоже, что да. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Ну давай тогда спишем всё на FileSpy, ибо из двух программ одна работает не верно, но т.к. ты уверен, что твоя работает верно, стало быть Far Manager просто нагло обманывает FileSpy, а сам на самом деле юзает порты IO для записи в файл. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Ну так а что-обвинить Detours ? ![]() Что тебе -сюда код перехвата выложить? Ну лови,найди ошибку
![]() Замечу, что все работает во многих приложениях нормально.И ВСЕ совпадает, кроме маски доступа. Ты просил код? Вот тебе код ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Встречал я такого зверя, не помню правда, толи это был Trojan.Downloader толи Bot.DDOS/Socks. Я надеюсь не ты автор? ![]() Ага, благодарю за одолжение ![]() Собственно, я вообще не знаю чего тут репу чесать, у тебя AccessMask_i = 0x40100080, а FILE_WRITE_DATA = 0x0002. С чего условие выполниться должно? ![]() Я б на твоём месте подключился к FAR'у, в который уже внедрена DLL, отладчиком и поставил бряк на CreateFile и протрейсил бы всё это дело внимательно анализирую параметры, ибо это гадание на кофейной гуще ни к чему не приведёт. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
прошу пардона за небольшой увод в сторону. GENERIC_xxx - это отдельные флаги, которые "превращаются"(где-то там "внутрях") в комбинации флагов согласно типам объектов.
посему проверять надо как-то так:
GENERIC_WRITE | SYNCHRONIZE | FILE_READ_ATTRIBUTES. GENERIC_WRITE вроде как содержит SYNCHRONIZE, так что зачем он тут - ![]()
![]() |
||||
|
|||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
dumb, хм.. Мне понравилась твоя мысль. Только не могу за нее толком зацепится
Вот что я нашел в описании winnt.h
Хрен его знает,как это мне поможет ![]() ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
dumb, ничего не понимаю, но вот так
работает ![]() Ладно,лови плюс в репу,незнаю чем помог,но на мысль натолкнул ![]() Дальше постараюсь копать сам. W4FhLF, не.Я не пишу трояны.Скорее наоборот-антитроянские программы.Хотя раньше просто интерфейсы для них, теперь-не повезло.Само ядро. ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
Access Rights and Access Masks
более правильную проверку я уже изобразил. а вот одолжений мне не нужно делать ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Нет, это был обычный ддос-бот, с жалкими зачатками руткита(прятал ключи реестра, свой файл и скрывал себя из диспетчера задач обычным перехватом по средствам сплайсинга). Достал я его вроде из эксплойта, ссылка на который пришла спамом.
Очень интересно. И отчего, по-твоему, должен защитить перехват в usermode? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
А никто и не делал ![]() Просто благодаря твоей мысли-я решил свою проблему ![]() Добавлено @ 15:14
![]() Ну во-первых я уже написал-я пишу ИНТЕРФЕЙСЫ под антируткиты ![]() А вот сейчас нужна маленькая утилита для защиты от кривых рук ![]() Я ж не говорил, что сейчас пишу защиту от троянов, а вот интерфейсы для работы с драйверами писал ![]() Но это уже оффтоп Добавлено через 10 минут и 23 секунды dumb, то что ты мне дал ссылку-я не про то. Я про вот что GENERIC_WRITE это комбинация FILE_APPEND_DATA FILE_WRITE_ATTRIBUTES FILE_WRITE_DATA FILE_WRITE_EA STANDARD_RIGHTS_WRITE SYNCHRONIZE тогда почему не работало
ведь
Это сообщение отредактировал(а) Coocky - 24.7.2007, 15:15 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||||
|
|||||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
А под какие именно, если не секрет? ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
В приват отвечу
![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
эти GENERIC'и - старшие четыре бита в маске доступа. посмотри на схематичное изображение, которое ты приводил в одном из своих постов. ты даешь GENERIC_WRITE для объекта файла - он(этот флаг) в ядре "раскрывается" в специфичные для данного типа объекта(файл) флаги + флаги доступа к самому объекту - их список в твоем посте. схематичный код того, что творится в ядре:
для другого типа объекта(например, папка или ком-порт) этот GENERIC_WRITE "раскроется" в иной набор флагов. но какой-нибудь "извращенец" может вместо указания какого-либо GENERIC, указать точный набор флагов, специфичных для объекта, с которым он работает. поэтому ловить только GENERIC_WRITE - тоже не совсем правильно. так что бери тот if, что я приводил. ps. блин, что-то у меня объяснялка сломалась от недосыпа. ![]() |
||||
|
|||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Так что делать? Понимаешь-тот набор заточен так, а представь будет два флага вместо трех-ведь тогда не раскроется? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
повторюсь:
![]()
![]() |
||||
|
|||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
У меня НЕТ ПРОБЛЕМ с этим ![]() Еще раз НЕ РАБОТАЕТ!
Добавлено через 3 минуты и 43 секунды Вот вот ![]() Я тебя не могу понять, что ты мне хочешь донести . Хотя проблема давно решена. Просто мы наверное не можем понять друг друга. ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
!!! я не знаю, как еще можно это объяснить... ![]() |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
dumb, ты издеваешься? Бл.... Все..Тема закрыта. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |