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

Моля, вижте един от моите предишни въпроси. Питам за зареждане на компилиран ресурс от DLL. След това вижте отговора на Дейвид Хефернан. Неговото предложение е да се използва вграден механизъм за зареждане на ресурс директно от екземпляра на DLL, без дори да се използва моя собствена експортирана функция. Това ми посочи вратичка в сигурността.

Ако това наистина е така, ако този тип решение е възможно, тогава може ли външна трета страна да зарежда ресурси от всяко Delphi приложение/DLL? Колко сигурни са вградените ресурси? Да предположим, че компилирам DLL с вграден ресурс. Може ли някой да вземе този DLL и да извлече ресурса? Колко лесно е, като се има предвид, че трябва да знаят името на ресурса? Те могат ли да открият кои ресурси са компилирани и да получат списък с именувани ресурси? Ако това е така, тогава ще трябва да внедря собственото си ниво на сигурност и да криптирам всеки вграден ресурс и да го дешифрирам с влизане.


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


Отговори (1)


Секцията с ресурси на Windows Portable Executable е достъпна и изброима за всеки процес/потребител с read привилегии над изпълнимия файл.

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

  • Добавяне, изтриване и замяна на ресурси
  • Изброяване на ресурси
  • Намиране и зареждане на ресурси
  • Ресурсни файлови формати
  • Използване на ресурси

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

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

Можете да намерите повече информация за PE файловия формат в статията Задълбочен поглед към Win32 Portable Executable File Форматиране.

person jachguate    schedule 07.02.2013
comment
Благодаря, точно това подозирах. Ще трябва да променя подхода си и да криптирам всичко, което вграждам. - person Jerry Dodge; 07.02.2013
comment
Като странична бележка, никога не съм знаел, че вградените ресурси са за целия прозорец. Винаги съм смятал, че е специфично за Delphi. Това ми отвори очите за много неща. - person Jerry Dodge; 07.02.2013
comment
@JerryDodge: Трябва да видите Resource Explorer. Приложението е доста полезно и страницата изброява типовете ресурси, които може да чете от всеки изпълним файл на 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, защита на софтуерния паспорт) и след това да използвате постоянен лиценз за оценка (без изтичане), за да защитите exe и dll на вашия софтуер. Това ще се погрижи за опаковането и криптирането на вашите неща и декриптирането и разопаковането, когато някой го стартира. - person Marjan Venema; 07.02.2013
comment
@JerryDodge има и други инструменти, които затрудняват извличането на ресурси като UPX, ASPack (Executable Packers). Мисля, че те основно компресират ресурсите в exe и променят вътрешната структура на изпълнимия файл, което прави по-трудно (макар че вероятно не е невъзможно) за конвенционалните инструменти да обработват/извличат данни. - person ; 07.02.2013
comment
Използвахме HASP ключ от Aladdin, той обгръщаше компилираните EXE файлове и изискваше сървърен ключ, за да може да работи. Това беше страхотна защита, но ние се отдалечихме от това и сега прилагаме наши собствени методи за криптиране. - person Jerry Dodge; 13.02.2013