Может ли сторонняя загрузка встроенных ресурсов из моего проекта?

Пожалуйста, обратитесь к одному из моих предыдущих вопросов. Я спрашиваю о загрузке скомпилированного ресурса из DLL. Затем обратитесь к ответу Дэвида Хеффернана. Его предложение состоит в том, чтобы использовать встроенный механизм для загрузки ресурса непосредственно из экземпляра DLL, даже не используя мою собственную экспортированную функцию. Это указало мне на лазейку в безопасности.

Если это действительно так, если такое решение возможно, то могут ли какие-либо внешние сторонние ресурсы загружать из любого приложения Delphi/DLL? Насколько безопасны встроенные ресурсы? Предположим, я компилирую DLL со встроенным ресурсом. Может ли кто-нибудь взять эту DLL и извлечь ресурс? Насколько это просто, учитывая, что они должны знать имя ресурса? Могут ли они определить, какие ресурсы скомпилированы, и получить список именованных ресурсов? Если это так, то мне придется реализовать свой собственный уровень безопасности и шифровать каждый встроенный ресурс и расшифровывать его при входе в систему.


person Jerry Dodge    schedule 07.02.2013    source источник


Ответы (1)


Раздел ресурсов переносимого исполняемого файла Windows доступен и доступен любому процессу/пользователю с возможностью чтения привилегии над исполняемым файлом.

Windows API предоставляет ряд функций для работы с ресурсами., включая функции для:

  • Добавление, удаление и замена ресурсов
  • Перечисление ресурсов
  • Поиск и загрузка ресурсов
  • Форматы файлов ресурсов
  • Использование ресурсов

На самом деле готовых инструментов для выполнения этих операций предостаточно. В вашей собственной установке Delphi есть демонстрационный проект под названием Resource Explorer, который обычно устанавливается в папку Samples\Delphi\VCL\resXplor.

Как видите, любой, кто обладает знаниями и/или инструментами, может не только читать, но и удалять и заменять ресурсы, найденные в вашем исполняемом файле Windows, независимо от компилятора, который его создал.

Дополнительную информацию о формате PE-файла можно найти в статье Углубленный анализ переносимого исполняемого файла Win32. Формат.

person jachguate    schedule 07.02.2013
comment
Спасибо, именно это я и подозревал. Мне нужно будет изменить свой подход и зашифровать все, что я встраиваю. - person Jerry Dodge; 07.02.2013
comment
Кстати, я никогда не знал, что встроенные ресурсы доступны для всего окна. Я всегда думал, что это специфично для Delphi. Это открыло мне глаза на многие вещи. - person Jerry Dodge; 07.02.2013
comment
@JerryDodge: вы должны увидеть обозреватель ресурсов. Приложение довольно полезное, и на странице перечислены типы ресурсов, которые оно может считывать из любого исполняемого файла Windows (включая библиотеки DLL). Вы должны использовать его для просмотра любого приложения Delphi и проверки RCDATA ресурсов; Я думаю, вы будете, по крайней мере, немного удивлены. - person Ken White; 07.02.2013
comment
@KenWhite Понятно, теперь, когда я знаю, что это функциональность уровня Windows, а не только Delphi. Я имею в виду, что я уже был уверен, что в любом языке есть способ встраивания ресурсов, но теперь я знаю, что он универсален для любого языка. - person Jerry Dodge; 07.02.2013
comment
@JerryDodge: приложение по ссылке, которую я разместил, позволяет вам просматривать типы информации, которые другие могут видеть в вашем exe / dll (некоторые из них визуально). Как я уже сказал, вы можете проверить с его помощью свое собственное приложение или DLL, чтобы знать, что вам может понадобиться для защиты. Он работает и с другими (не Delphi) приложениями, некоторые из которых содержат интересные ресурсы. - person Ken White; 07.02.2013
comment
@JerryDodge Если вы беспокоитесь о том, что люди будут извлекать ресурсы из ваших exe/dll, вы также можете взглянуть на программные пакеты для защиты от копирования (такие как Armadillo, механизм защиты Software Passport), а затем использовать постоянную оценочную лицензию (без срока действия) для защиты exe и dll. вашего программного обеспечения. Это позаботится об обертывании и шифровании ваших данных, а также о расшифровке и распаковке, когда кто-то их запускает. - person Marjan Venema; 07.02.2013
comment
@JerryDodge есть и другие инструменты, усложняющие извлечение ресурсов, такие как UPX, ASPack (исполняемые упаковщики). Я думаю, что они в основном сжимают ресурсы в exe и изменяют внутреннюю структуру исполняемого файла, усложняя (хотя, вероятно, не невозможно) обычные инструменты для обработки/извлечения данных. - person ; 07.02.2013
comment
Раньше мы использовали ключ HASP от Aladdin, он обертывал скомпилированные EXE-файлы и требовал, чтобы серверный ключ мог работать. Это была отличная защита, но мы отошли от нее и теперь внедряем собственные методы шифрования. - person Jerry Dodge; 13.02.2013