|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
|
dvbelyaev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
всем доброго дня, есть вопросик
мое приложение занимается вопросами безопасности файловой системы (шифрование файлов разными алгоритмами и т.д.) во время простоя или пользователем вручную, программа переходит в режим "скрытости" чтобы "злоумышленник" не смог получить доступ к зашифрованным данным - в файловой системе прогу не видно - из списка процессов ее скрываю используя http://www.delphikingdom.com/asp/answer.asp?IDAnswer=17691 - осталось скрыть инфу о ней из реестра, а точнее все записи которые содержит путь к проге вычитал что нужно перекрыть функцию NtEnumerateValueKey, но тямки не хватает буду рад любым примерам и ссылкам на делфи |
|||
|
||||
Riply |
|
|||
Опытный Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
Впервые в жизни сталкиваюсь с необходимостью прятанья шивровалки. Зачем это нужно ? В голову приходит только одно объяснение: форма с предложением отправить смс-ку для расшифровки уже написана ? Косвенным подтверждением этого предположения является и механизм скрытия. Программу можно обнаружить в списке процессов практически любым просмоторщиком. Т.е. важно, чтобы ее не заметили только в первые минуты ее работы ? Теперь по сути: Механизм перехвата и коррекции значений NtEnumerateValueKey ничем, кроме названия процедуры и структурами данных, не отличается от перехвата NtQuerySystemInformation. Действуй по образу и подобию и все получится. Даже новую Dll писать не надо - прямо в этой можно перехватывать не одну, а две ф-ии. P.S. Рекомендую брать примеры перехвата из оригинала (у Джеффри Рихтера), а не чужие попытки их переделки на собственный манер, к тому же довольно неуклюжие P.P.S. Настоятельно прошу аргументировать необходимость скрытия шифровалки и развеять мои "смутные сомнения", высказанные в начале поста. В противном случае тема будет уничтожена. Это сообщение отредактировал(а) Riply - 5.9.2011, 21:27 |
|||
|
||||
dvbelyaev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
лично я против этих "глупых скрываний" но шеф настаивает
являюсь ведущим разработчиком сего "чуда" http://cybersafesoft.com/index_rus.php?page=4 в описании "черным по белому" написано что МЫ в режиме безопасности невидимы! надеюсь что развеил твои "смутные сомнения", |
|||
|
||||
Riply |
|
|||
Опытный Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
И правильно. А с шефом можно поговорить. Некоторые (отнюдь не все) аргументы против скрытия процесса я приводила в этом посте Если он будет настаивать, то можно попробовать всерьез подойти к этому вопросу, но (!) Не будет никаких гарантий, что процесс не будет обнаружен. В подобных случаях процесс вобще не создают, а, например, "распределяют" свой код по чужим нитям. На худой конец, пишут длл, которая живет в каком нибудь системном процессе и делает свое дело. |
|||
|
||||
northener |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: нет Всего: 20 |
Рано или поздно ваше ПО будет расцениваться антивирусным ПО как зловредное или "потенциально" зловредное! -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
dvbelyaev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
да как бы серьезно подходить и нет необходимости надо чтобы основной exe-шник не было видно в таскменеджере и в реестре (ТОЛЬКО regedit) нельзя было найти путь к проге Это сообщение отредактировал(а) dvbelyaev - 6.9.2011, 14:38 |
|||
|
||||
Riply |
|
|||
Опытный Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 21 Всего: 32 |
ну раз так, то перехватывай совершенно аналогично перехвату NtQuerySystemInformation. |
|||
|
||||
DYUMON |
|
|||
Опытный Профиль Группа: Участник Сообщений: 321 Регистрация: 17.6.2006 Где: Новосибирск Репутация: нет Всего: 3 |
вообще почитай на wasm.ru статьи от ms rem http://www.wasm.ru/article.php?article=apihook_1 типа этой у него хорошо написано что и где хучить
|
|||
|
||||
dvbelyaev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
после отвлечения снова вернулся к теме
что получается: перехватывать функцию, запрашивать структуру из оригинальной функции _KEY_VALUE_BASIC_INFORMATION = packed record TitleIndex: ULONG; aType: ULONG; NameLength: ULONG; Name: array[0..0] of PWideChar; end; все поля заполнены, но при попытке преобразовать Name в string - exception думаю что ошибся в определении Name описание структуры на си typedef struct _KEY_VALUE_BASIC_INFORMATION { ULONG TitleIndex; ULONG Type; ULONG NameLength; WCHAR Name[1]; } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; пробовал Name: array[0..0] of WideChar; вроде так правильней преобразую в string (перепробовал кучу способов) получаю всего 1 символ и совсем не похоже что из значания ключа Это сообщение отредактировал(а) dvbelyaev - 10.11.2011, 19:12 |
|||
|
||||
500mhz |
|
|||
шайтан Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
а зачем вообще что то писать в реестр? в чем сакральный смысл?
-------------------- |
|||
|
||||
kami |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
так правильно. В си, если массив объявлен всего из одного элемента, никто не мешает обращаться к "следующим", "не существующим" элементам. В Delphi это несколько проблематично. Выйти из положения можно, например, так (предложение навскидку): сделать переменную PWideChar и "указать" ее на name[0]. После чего - вытащить этой переменной куда-нибудь символы от 0 до NameLength-1 |
|||
|
||||
bems |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 14 Всего: 58 |
Ага, только в соседней теме было: http://forum.vingrad.ru/index.php?showtopi...t&p=2426712 Это сообщение отредактировал(а) Keeper89 - 18.11.2011, 20:32 |
|||
|
||||
Dik0n |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
Подтверждаю. Следующий код скомпилится без ошибок, так как на этапе компиляции, не известно, чему будет равна переменная I
А вот здесь он начнет капризничать, мол ты чего массив только из 1 элемента а ты обращаешься к 100
Это сообщение отредактировал(а) Dik0n - 20.11.2011, 02:47 --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
||||
|
|||||
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |