Защитите формат SQLite 3 только для моего приложения - PullRequest
0 голосов
/ 05 июня 2019

Файл базы данных и приложение, которое читает БД. В приложение добавлен компонент регистрации. Если пользователь не хочет регистрироваться, он может просто загрузить приложение с открытым исходным кодом, скопировать базу данных в новую папку, запустить пакетный файл, и база данных откроется в приложении, полностью исключив регистрацию и любые дополнительные функции, которые были добавлены.

Я хочу сохранить файл базы данных внутренним, даже если это означает добавление файла db в ресурсы основного приложения. Файл требует записи данных в этот файл.

Я дошел до того, что преобразовал командный файл в exe-файл и загрузил файл базы данных или даже переименовал файл базы данных во что-то непонятное, как abc.exe (даже если это файл db, его можно переименовать во что угодно)

Файл базы данных в настоящее время переименован в exe-файл, я бы предпочел, чтобы он каким-то образом был зашифрован или каким-то образом размещен в ресурсах моего основного приложения и получал доступ таким образом, я просто пытаюсь ограничить способ, которым программное обеспечение может быть пиратским.

1 Ответ

1 голос
/ 05 июня 2019
  1. Шифрование: Вы можете зашифровать базы данных SQLite, используя такие расширения, как Расширение шифрования SQLite. Полезность такого шифрования зависит от того, что вы пытаетесь сделать. Если ваше приложение может считывать ключи для его расшифровки, то может и хакер, который может запустить ваше приложение. Вы можете использовать API защиты данных Windows для управления ключами, так что если кто-то скопирует базу данных с одного компьютера Windows на другой, база данных будет нечитаемой; но опять же, если хакер может получить доступ к исходному компьютеру, он может получить ключи так же, как ваше приложение (но это защитит от «тупого» пользователя от простого копирования файлов).

  2. Помещение в ваши "основные ресурсы приложения": если вы имеете в виду встраивание базы данных в EXE, вам не повезет, если у вас возникнет необходимость в записи данных. Вообще говоря, EXE не может изменить себя (хотя в зависимости от ОС / версии / разрешения пользователя / отсутствия агентов защиты от вредоносных программ и т. Д. Теоретически можно выполнить самоизменяющийся EXE-файл; но если вы хотите, чтобы ваше приложение работало большую часть времени в дикой природе, эта стратегия не будет успешной). Даже если вы преуспели в работе EXE-файла, который считывал сам себя, загружал встроенный большой двоичный объект как базу данных, изменял эту базу данных в памяти, а затем переписывал весь EXE-файл с базой данных, экспортированной в виде нового большого двоичного объекта (размером, отличным от исходного, что наносит ущерб сборка), это не поможет. Злоумышленник может делать то, что делает ваше приложение, и получать доступ к данным. Сделайте себе одолжение и следуйте инструкциям операционной системы для записи пользовательских данных. Для Windows это обычно чтение и запись файлов в папку «Данные локального приложения».

  3. Переименование базы данных SQLite для расширения EXE. Что вы пытаетесь достичь? Неизвестность? Переименование его в EXE может ввести в заблуждение некоторых пользователей (определенно не мотивированного пользователя, которого я описал выше), но оно также может случайно обмануть антивирусное / антивирусное программное обеспечение, работающее в операционных системах вашего законного пользователя, и заставить его думать, что ваше приложение пишет испорченные исполняемые файлы (которые могут быть подозрительными) и закроют ваше приложение или, по крайней мере, помешают его правильной работе. Это приведет к тому, что ваши пользователи не будут использовать ваше приложение или массу поддержки для вас. Что это дает? Это мешает «тупому» пользователю пытаться открыть его в инструменте запросов SQLite?

При этом, если вы хотите ограничить возможности вашего пользователя читать данные, хранящиеся на его собственных устройствах хранения, вы действительно не сможете остановить определенного пользователя. Вы можете остановить менее опытных пользователей. Большинство пользователей не могут запустить рефлектор на сборке C # и выяснить, что он делает, но многие могут. Если вы хотите остановить менее опытных пользователей, шифрование данных остановит большинство из них, и это будет наименее вероятный подход, который вы обсуждали, чтобы помешать вашему приложению работать «в дикой природе».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...