Symbian загрузка DLL
От: ASX  
Дата: 12.05.10 12:13
Оценка:
Carbide C++ 2.3, S60_5th

создаю в Carbide dll, делаю freeze, компилю для эмулятора и GCCE для телефона.

делаю простейшее приложение, которое использует эту dll, в .mmp файле прописываю "LIBRARY xxx.lib", создаю объект из dll
Cxxx* pp = Cxxx::NewLC();

на эмуляторе все пашет, на устройстве приложение не запускается, dll самоподписана и проинсталена в sys/bin

мля второй день тыкаюсь, меня этот symbian вместе с карбидом просто убивают, ну выдало бы хоть какую-то ошибку, чего не запускается

помогите кто чем может
Re: Symbian загрузка DLL
От: Crypto Украина  
Дата: 12.05.10 12:17
Оценка: 4 (1)
Здравствуйте, ASX, Вы писали:

ASX> мля второй день тыкаюсь, меня этот symbian вместе с карбидом просто убивают, ну выдало бы хоть какую-то ошибку, чего не запускается

ASX>помогите кто чем может

Как насчет начать с кода ошибки загрузки библиотеки с помощью RLibrary?
Loading DLL by RLibrary
Re[2]: Symbian загрузка DLL
От: ASX  
Дата: 12.05.10 13:43
Оценка:
Здравствуйте, Crypto, Вы писали:

C>Как насчет начать с кода ошибки загрузки библиотеки с помощью RLibrary?


Да, спасибо как раз рыл в направлении дин. загрузки.
Давало такую ошибку
KErrNotFound -1 "Unable to find the specified object"

как выяснил дело в том что приложение имело
CAPABILITY UserEnvironment

а dll нет

Вот такая вот засада

Вообще странная ситуация, откуда я могу знать какие CAPABILITY могут понадобиться приложению (моей dll не нужно никаких). Теперь что получается нужно объявлять все и подписывать DLL?
Re[3]: Symbian загрузка DLL
От: Truf Россия http://meego.fruct.org
Дата: 12.05.10 19:00
Оценка: 10 (2)
ASX>Вообще странная ситуация, откуда я могу знать какие CAPABILITY могут понадобиться приложению (моей dll не нужно никаких). Теперь что получается нужно объявлять все и подписывать DLL?

Сам себя процитирую.

"Защищенные возможности в библиотеках

Как уже говорилось ранее, список доступа к защищенным возможностям есть не только у исполнимых файлов, но и у динамически подключаемых библиотек DLL. При подключении библиотеки к процессу, она разделяет с ним и доступ к защищенным возможностям. Если учесть, что концепция платформы безопасности распространяется не только на пользовательские приложения, но и на системные службы и сервера, а также то, насколько широко применяются плагины (чаще всего, в форме полиморфных DLL) в Symbian OS, то мы увидим множество возможностей для нелегитимного доступа к защищенным ресурсам. Что бы этого не произошло, в платформе безопасности существует следующее правило: библиотека может быть загружена процессом только в том случае, если она декларирует доступ к такому же или более широкому набору защищенных возможностей. То же правило распространяется на загрузку всех библиотек, используемых подключаемой библиотекой. Если загрузить библиотеку не удается, программа просто не запустится.
На практике, для того чтобы расширить возможность использования DLL в сторонних программах, в них декларируют доступ даже к тем защищенным возможностям, которые не используются. "
Re[4]: Symbian загрузка DLL
От: ASX  
Дата: 13.05.10 06:26
Оценка:
Здравствуйте, Truf, Вы писали:

T>На практике, для того чтобы расширить возможность использования DLL в сторонних программах, в них декларируют доступ даже к тем защищенным возможностям, которые не используются. "


Да уж, глупость какая-то. Грубо говоря, моя dll делает 2+2, но должна запрашивать все привелегии, по моему, это наоборот создает дыру в безопасности, обычно чем меньше запрашивается привелегий, тем лучше.
Ну почему нельзя сделать так, что если dll не имеет capability, то она имеет capability приложения, в которое загружается
Re[5]: Symbian загрузка DLL
От: Truf Россия http://meego.fruct.org
Дата: 13.05.10 19:31
Оценка:
Здравствуйте, ASX, Вы писали:

ASX>Здравствуйте, Truf, Вы писали:


T>>На практике, для того чтобы расширить возможность использования DLL в сторонних программах, в них декларируют доступ даже к тем защищенным возможностям, которые не используются. "


ASX>Да уж, глупость какая-то. Грубо говоря, моя dll делает 2+2, но должна запрашивать все привелегии, по моему, это наоборот создает дыру в безопасности, обычно чем меньше запрашивается привелегий, тем лучше.

ASX>Ну почему нельзя сделать так, что если dll не имеет capability, то она имеет capability приложения, в которое загружается

Я уже объяснил почему — потому что такую dll можно было бы подсунуть как плагин, например, в ESOCK сервер и сделать из нее все с его правами.
Чем больше привилегий требует dll тем более жесткую сертификацию вынужден пройти содержащий ее sis файл. Т.е. если вы пишете dll, подгружаемую в процесс с серьезными capability, то вы попадаете на точно такую же сертификацию, какую бы вам пришлось пройти сертифицируя sis с исполнимым файлом самого этого процесса.
Re[6]: Symbian загрузка DLL
От: ASX  
Дата: 14.05.10 07:29
Оценка:
Здравствуйте, Truf, Вы писали:

T>Чем больше привилегий требует dll тем более жесткую сертификацию вынужден пройти содержащий ее sis файл. Т.е. если вы пишете dll, подгружаемую в процесс с серьезными capability, то вы попадаете на точно такую же сертификацию, какую бы вам пришлось пройти сертифицируя sis с исполнимым файлом самого этого процесса.


Ok, понятно, что нужно, чтобы пройти сертификацию?
Я так понимаю, нужен code signing сертификат (200 в год) и еще нужно платить за каждый .sis файл на предмет его обследования?
Т.е. после этого уже нельзя внести в него изменения.
Re[3]: Symbian загрузка DLL
От: Аноним  
Дата: 10.06.10 14:19
Оценка:
Здравствуйте, ASX, Вы писали:

ASX>как выяснил дело в том что приложение имело

ASX> CAPABILITY UserEnvironment
ASX>а dll нет

Capabilities для загружаемых DLL — это своеобразная AND-маска, которая будет наложена на capability-лист процесса, загружающего эту DLL. Результат AND не должен оказаться ниже, чем исходный набор capabilities для процесса.

Т.е. если у DLL флаг некоторого капабилити включен, то это вовсе не значит, что "ей дадут". Право исполнения дадут не ей, а процессу. Если же флаг некоторого капабилити в DLL сброшен, то хоть все сертификаты мира залей в процесс — DLL будет считаться менее trusted, чем загружающий её процесс. Поэтому фигвам.

ASX>Вообще странная ситуация, откуда я могу знать какие CAPABILITY могут понадобиться приложению (моей dll не нужно никаких). Теперь что получается нужно объявлять все и подписывать DLL?


Обычно имеет смысл оперировать не единичными capabilities, а группами. На сайте Нокии и SignedOnline есть картинки с перечислением групп capabilities и требованиями, которые они накладывают на автора.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.