![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Общая задача: написать что-то вроде FileMon'а, который перехватывает все обращения к любым файлам. Перехватываю api функции сплайсингом. Сначала пробовал с FindFirst, FindNext, но ничего путного не вышло, все-таки они не всегда используются при обращении к файлам. Стал пробовать перехватывать ZwQueryDirectoryFile, но возникла такая куча проблем... У меня есть функции
которая представляет собой "настоящую" функцию. Есть
которая является "подменной" функцией. Какая-то из них не работает, т.е. вызов api перехватывается, но его подмена не происходит, и процесс, который вызвал ZwQueryDirectoryFile вылетает. В чем дело? P.S. есть предположения, что надо записывать какую-то инфу в параметры FileInformation и IoStatusBlock, но какую -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DoZENT, Во первых, как ты устанавливаешь перехват? Какие функции для этого используешь и.т.д
Во вторых, если ты хочешь перехватывать именно ВСЕ обращения то тебе придется писать драйвер В третьих, покажи код DLL которую ты внедряешь в процеесс |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Если процесс вылетает значит ошибка в функциях перехвата, т.е. происходит недопустимая операция и исключение. Смотри адрес по которому вылетает, грузи программу в отладчик и изучай, что творится по этому адресу и к какой функции она принадлежит.
Ты внимательно прочёл статью MsRem по перехвату? На первый взгляд только вот это глаз режет:
Вызывай NewZwQueryDirectoryFile. И покажи как перехват ставишь. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Наверное ты не понял механизма перехвата. В функции TrueZwQueryDirectoryFile я сначала устанавливаю оригинальный адрес входа в функцию ZwQueryDirectoryFile, потом вызываю ZwQueryDirectoryFile, потом устанавливаю "мой" адрес точки входа, чтобы при вызове этой ф-и вызывалась NewZwQueryDirectoryFile Перехват делаю так:
Нужно перехватывать обращения, которых хватит для того, чтобы при надобности скрыть файл. Я думаю ZwQueryDirectoryFile будет достаточно Это сообщение отредактировал(а) DoZENT - 6.1.2007, 19:12 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||||
|
|||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Этот механизм я уже выучил наизусть -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Все-таки хотелось бы найти путь попроще. есть предположения, что надо записывать какую-то инфу в параметры FileInformation и IoStatusBlock, но какую
Я заметил ;) Длл сначала не выгружалась из памяти, MsRem забыл, что для создания хука он создает отдельный поток, поэтому обрабатывать надо не только DLL_PROCESS_DETACH, но и DLL_THREAD_DETACH. Это сообщение отредактировал(а) DoZENT - 7.1.2007, 11:43 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DLL_THREAD_DETACH обрабатывать не надо. Где написано что он создает отдельный поток для перехвата? DoZENT, я использовал его модули для перехвата и работали они безупречно Я перехватывал FindFirst, FindNext и все тоже работало безупречно. Почитай статьи на wasm.ru по перехвату, если что то не понятно, милости просим |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Нет тут пути попроще, нужно отлаживать.
Зачем туда что-то класть твоей функции перехватчику? Если без перехвата программа не падает, а с перехватом падает, то эти параметры тут совсем не причём. К слову, о каких модулях речь? Если advApiHook, то там сплайсинг реализован иначе, чем в примерах к статьям. Кстати, гораздо более удачно. И ещё о каких статьях ты говоришь? По перехвату по-моему лучшими статьями на васме являются как раз статьи MsRem, ну можно ещё у Рихера неплохую информацию найти. Статьи 90211 уже достаточно устерели, да и в них нет того, чего бы не было в статьях Рема. Это сообщение отредактировал(а) W4FhLF - 7.1.2007, 15:33 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
А это что?
Если его не обрабатывать, то dll не выгружается из памяти. Так было у меня. Даже Delphi при следующей компиляции писала, что не может перезаписать dll, т.к. она используется. Добавлено @ 15:50
Вообще-то я этот модуль не юзал, но надо будет попробовать -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||||||
|
|||||||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
Я про него и говорю О 3х статьях MsRem'a которые на wasm.ru Его не надо обрабатывать, надо обрабатывать DLL_PROCESS_DETACH Вот пример простого перехвата с использованием AdvApiHook
Это сообщение отредактировал(а) bartram - 7.1.2007, 16:10 |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Блин. Еще раз. Если обрабатывать ТОЛЬКО его, то dll из памяти У МЕНЯ не выгружается. Я обрабатываю и его и DLL_THREAD_DETACH
Дык я то же самое делаю, но без этой библиотеки. Попробую ночью ее поюзать, отпишусь. -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
||||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
FreeLibrary ест-но Это сообщение отредактировал(а) DoZENT - 7.1.2007, 21:30 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Перехватывать я умею и без библиотек. Что делать в "новой" функции -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
вот:
смекаешь? |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
С ExitProcess и его одним параметром какнить сам разобрался бы. Кто-нибудь может привести ПРИМЕР перехвата ZwQueryDirectoryFile Это сообщение отредактировал(а) DoZENT - 8.1.2007, 19:16 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
DoZENT, я тебе пример дал, сделай по примеру. Структура описанная тем более у тебя есть. Если что то не получается спрашивай, по коду будет проще понять что у тебя не получается и что ты хочешь сделать
|
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
ОК, вот весь код:
Кое-что подправил, теперь процесс, вызывающий функцию не завершается, но не может найти ни одного файла (например total commander выдает только список дисков, но зайти в них не может). -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Сори за возможный оффтоп.
DoZENT, а у тебя OutPost случаем не стоит? (из последних версий 4) А то у меня проблемы с перехватом возникли после очередного обновления. При включенном файрволе при попытке перехвата целевое приложение вылетало с ошибкой. После отключения бока исчезали. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Блин, да сколько можно говорить, чтобы ты попробовал отладить процесс? Чё гадать и как дурак тыкать пальцем в небо? Посмотри как и что происходит, локализуй ошибку и исправь её.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Нет, KIS Forever
Каким образом отлаживать? Если ты имеешь в виду установку прерывания, то на ZwQueryDirectoryFile брейкпойнт на ставится, т.к. это недокументированная ф-я. Это сообщение отредактировал(а) DoZENT - 9.1.2007, 17:32 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
ZwQueryDirectoryFile является переходником к ядерной функции и экспортируется из ntdll.dll, именно это тебе позволяет перехватывать её таким методом, и именно это позволит отладить этот процесс. Берёшь любой отладчик, я обычно использую OllyDBG, загружаешь в неё приложение в которое будет проинжектирована твоя dll и в "Опции > Опции отладки > Events" ставишь галку на "Break on new module (DLL)", далее инжектируешь dll в процесс и прерываешься на процедуре DLLEntryPoint, трейсишь установку хуков, смотришь всё ли в порядке, далее ставишь бряк на ZwQueryDirectoryFile(bp ZwQueryDirectoryFile) и пускаешь программу дальше. Когда программа вызовет эту функцию ты прервёшься на её начале, где будет стоять прыжок(push @ZwQueryDirectoryFile / retn) на процедуру NewZwQueryDirectoryFile. Заходишь в эту процедуру, трейсишь и смотришь правильно ли всё происходит, тем самым ты сможешь проконтролировать весь процесс установки перехвата и его срабатывания. Это сообщение отредактировал(а) W4FhLF - 9.1.2007, 20:18 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Я использую сплайсинг, поэтому dll не будет проинжектированна в процесс. Или я что-то неправильно понимаю? Это сообщение отредактировал(а) DoZENT - 9.1.2007, 20:56 -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
как думаешь, зачем у тебя SetWindowsHookEx используется? - как раз для подгрузки dll во все процессы. а подгрузившись, ты уже устанавливаешь хук на ZwQueryDirectoryFile(изменения, вносимые WriteProcessMemory локальны для каждого процесса). |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Почитал MSDN, понял, спасибо
? -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Протрассировал процесс, не нашел ничего подозрительного. Хуки расставляются правильно, происходит вызов ZwQueryDirectoryFile, функцией возвращается какое-то числовое значение, и происходит вызов GetLastError... Ладно, буду копаться дальше
-------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Это инжектирование DLL в один отдельно взятый процесс. Ну а что делает код и так должно быть понятно. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
| MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
ммм... не нравится этот момент. а что, если другое приложение так-же поставила глоб.хук на GetMessage? в MSDN вот что сказано по этому поводу:
может это и не то... но все-таки -------------------- There are always someone smarter than you... |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Перехват функции осуществляется Ладно, пойдем другим путем. Кто-нибудь может привести ПОЛНЫЙ пример работы с библиотекой advApiHook? А то с wasm.ru ни сама библиотека, ни примеры ее использования не скачиваются -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Аттач. Присоединённый файл ( Кол-во скачиваний: 57 )
advapihook.zip 116,62 Kb-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Кстати... в факе есть пример использования драйверочков от FileMon
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| DoZENT |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Спасибо, с библиотекой я уже разобрался. Такой вопрос. Перехватываю ZwQueryDirectoryFile, обрабатываю результаты:
Процесс вылетает, если есть строчка
В чем ошибка обработки -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Ты б справчку по функции Copy и WideCharToString прочёл или посмотрел как она реализована. А потом бы глянул как переводится UNICODE в ASCII. Неверно ты их используешь.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DoZENT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 2.6.2006 Репутация: 1 Всего: 1 |
Тоже не проходит, причем не выполняется ни одна из этих строк (если хоть одна присутствует, то процесс вылелает) -------------------- Какая боль, какая боль, Internet Explorer 5.0... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
DoZENT, буду сегодня разбираться!
результат, если будет, все еще интересен? -------------------- There are always someone smarter than you... |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Результат всегда интересен.
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
мда.
у MS-REM'а видимо спецом ошибочки затесались.... много читал MSDN и понял, что FileName: PWideChar; нифига не так, а вот так: FileName: WideChar; ибо в MSDN анлгийским по белому написано:
и еще один косяк в описании структуры... Это сообщение отредактировал(а) MetalFan - 26.1.2007, 09:35 -------------------- There are always someone smarter than you... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
MetalFan, имхо ты здесь не прав
не может быть название файла соостоящее из одного символа! -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Romikgy, ;) конечно не может) а кто сказал, что оно из одного символа.
ладно, вот что у меня вышло, может кто явные недочеты укажет: структура
сама "перехваченная" функция
и вообще, часть статьи REM'а содрано слово слово из.. см.аттач з.ы. уже сам нашел небольшой недочет в коде. точнее отсутсвие кода по одному замечанию из статьи... Это сообщение отредактировал(а) MetalFan - 26.1.2007, 10:47 Присоединённый файл ( Кол-во скачиваний: 34 )
hidingru.txt 58,26 Kb-------------------- There are always someone smarter than you... |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Romikgy, сомневайся. а в MSDN написано именно так.
-------------------- There are always someone smarter than you... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Romikgy-неверующий! а самому посмотреть? вот ссылка
Windows Driver Kit: Installable File System Drivers. FILE_BOTH_DIR_INFORMATION, кушайте на здоровье) и вообще, почему сомневаешься? Это сообщение отредактировал(а) MetalFan - 26.1.2007, 13:19 -------------------- There are always someone smarter than you... |
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
это
не есть это это есть вот это
прально сомневался Добавлено @ 13:25 угу очень -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Romikgy, а какая разница?! что так 2 байта, что так? ну может чуть удобнее в использовании. но никак не PWideChar, да?
-------------------- There are always someone smarter than you... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
хотя поидее и твой вариант должен работать
просто я таких объявлений как у тя ни разу не видел Добавлено @ 13:29 просто в твоем варианте имхо не красиво и не понятно да не это -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Romikgy, да, согласен)
array[0..0] будет красивше) только Range Checking не забыть выключить. ну и все-равно контролировать FileNameLength придется, ибо наврядли в конце имени нули будут(сталкнулся с таким). -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |