Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Mobtime Cell Phone Manager v5.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Базы данных -> Access -> Прозрачное шифрование баз данных Access


Прозрачное шифрование баз данных Access

Эта статья посвящена новому способу защиты БД Access. Он имеет ряд преимуществ над существующими методами.

Введение

Известно, что на сегодняшний день не существует способа защитить значения, хранимые в таблицах БД Access от прямого доступа. Либо защита удаляется с помощью программ типа dbRecowery, либо она накладывает серьёзные ограничения на производительность приложений работающих с БД и всё равно взламываются, но с большими трудозатратами.

Вот достоинства предлагаемого способа:

  • защита устанавливается и снимается нажатием одной кнопки
  • добавление защиты в код - добавление одной строки при подключении БД и изменить строку с паролем в коде.(больше ни чего менять не надо)
  • её нельзя снять программами типа dbRecowery
  • её использование почти не сказывается на производительности
  • можно использовать ADO или DAO
  • защищающий код можно интегрировать в VB проект (2 класса и 2 модуля)
  • не надо платить за программы и электронные ключи

Вот его недостатки:

  • реализовано в виде Active-X dll на Visual Basic 6 (не удалось сделать на VBA)
  • работает только на чтение данных (запись не реализована)
  • работает под WinXP; должно работать под 2k; под 98 - не работает (надо доделывать)

О тестовом проекте

  • data.mdb - защищенная БД с двумя таблицами и одним запросом
  • user.mdb - БД с формой 'main' в которую выводятся данные из data.mdb с помощью Protect.dll
  • Protect.dll - ищет data.mdb в той же директории, где и сама и возвращает ADODB.Recordset для регистрации необходимо выполнить в командной строке 'regsvr32.exe [Ваш путь к]\Protect.dll'

Описание способа защиты

Данный способ основан на использовании прозрачного шифрования. При таком подходе работающая с данными программа не замечает, что данные зашифрованы. Иными словами, когда библиотеки ADODB нашей программы обращаются к файлу БД - они видят самый обычный файл. Но если с этими данными начинает работать чужая программа - она видит зашифрованные данные. Подобный подход используется в HASP Envelope. Но с его помощью шифруется весь файл, что сильно снижает производительность. Между тем, достаточно зашифровать только заголовок БД чтобы получить приемлемый уровень защиты.

Для работы с БД Access в настоящее время используется ADODB. Сначала создаётся подключение к файлу БД (ADODB.Connection). Когда заданы все параметры подключения - вызывается метод Open, который открывает БД. При этом, происходит чтение первых &H10000 байт файла БД. Здесь и срабатывает защита. Мы эти &H10000 байт предварительно зашифруем. Программа перехватывает вызов API функции ReadFile, сама считывает заголовок БД, и возвращает дешифрованные данные.

Чтобы перехватить вызов API функции ReadFile необходимо сделать следующее:

  • получить идентификатор процесса с помощью функции GetCurrentProcessId
  • получить описатель процесса, используя OpenProcess
  • получить адрес замещающей функции, используя AddressOf
  • получить описатель модуля kernel32 с помощью GetModuleHandle
  • получить адрес функции ReadFile с помощью GetProcAddress
  • прочитать и сохранить первые оригинальные 6 байт стандартной API функции ReadFile с помощью ReadProcessMemory
  • записать с помощью WriteProcessMemory вместо этих 6 байт код ASM инструкции push и ret, указав в качестве аргумента инструкции push адрес замещающей функции

Таким образом, сначала мы меняем код API функции ReadFile на вызов нашей замещающей функции. Поле вызова метода Open объекта Connection - одна из библиотек ADODB начинает читать файл БД, используя ReadFile. Так как эта функция была нами модифицирована - она обращается к замещающей функции.

Замещающая функция имеет тот же набор аргументов, что и оригинальная ReadFile. Таким образом, получив управление в свои руки, мы знаем - откуда и сколько надо считать и куда результат поместить. При вызове замещающеё функции происходит следующее:

  • возвращаем оригинальные 6 байт стандартной API функции ReadFile на место с помощью WriteProcessMemory
  • вызываем ReadFile с теми же аргументами, с какими её вызывала библиотека ADODB
  • так как нам известен размер считанных данных и адрес, куда они были прочитаны - мы дешифруем эти данные
  • всё. библиотека ADODB получает управление обратно, даже не заметив наших действий. С её точки зрения - она просто вызвала функцию ReadFile, которая считала блок данных из файла. Повторное чтение файла функцией ReadFile будет происходить как обычно, так как мы вернули её в исходное состояние

Развитие проекта

  • Этот материал ранее был опубликован на sql.ru в форуме по Access
  • Предлагаю поучаствовать в дальнейшем совершенствовании этой технологии. На мой взгляд, она достаточно эффективна в плане защиты, проста в использовании и пригодна для добавления в существующие проекты
  • Может, кому удастся перевести код на VBA. Основная проблема в использовании AddressOf. В таком случае можно будет интегрировать код в mde файл, и избежать той глупой ошибки, которую я допустил, возвращая Recordset из Active-X dll
  • Также можно реализовать не только чтение, но и запись заголовка и сделать возможной работу под win98

Источник: www.infocity.kiev.ua

Ссылки по теме
Защита и взлом баз данных Access
Схемы блокировок в Базах Данных
Защита баз mdb
Access 2000
Настройка программ Access 2000
 

Компьютерная документация от А до Я - Главная

 
Популярные книги

Практические работы по Excel на уроках информатики

Подробнее

Photoshop CS2 для пользователя

Подробнее

Введение в ИТ Сервис-менеджмент

Подробнее

 

 
Новости ИТ
21.11.2008  Thunderbird 2.0.0.18
21.11.2008  Miranda IM 0.7.13
21.11.2008  Dr. Web 5 Beta
21.11.2008  KAV/KIS 2009 8.0.0.506
21.11.2008  avast! 4.8 (1290)
21.11.2008  Radmin 3.3
21.11.2008  DVR-X162J - новый внешний DVD-привод от Pioneer
21.11.2008  Дизайнерские системные блоки от Smooth Creations
21.11.2008  SPARKLE представляет Calibre P980X+, видеокарту с необычным дизайном
21.11.2008  Titan представляет куллер для Intel i7
21.11.2008  Компактный ПК для дома Acer Aspire X3200 - в России
21.11.2008  Hitachi Data Systems объявляет о новом плане инвестиций в России и странах СНГ
21.11.2008  Назначен новый президент Microsoft в России
21.11.2008  Mustek: новые цифровые видеокамеры начального уровня
21.11.2008  Серверные Core i7 - быстры ли они? Да, и очень, судя по тестам в SPECfp
21.11.2008  NETGEAR: акция для партнеров
21.11.2008  Персональные фотокарты на Яндексе
21.11.2008  Программа для стартапов Microsoft BizSpark анонсирована в России
21.11.2008  Средства защиты от утечек конфиденциальных данных Symantec DLP 8.1 теперь и в России
21.11.2008  Axis: первый 6-канальный IP-видеосервер с поддержкой H.264/M-JPEG
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100