Разгадки Code Signing (окончательные)

Mar 26, 2012 12:36


Кросспост из блога автора. Комментировать лучше там, но можно и тут

Окончательно разобрался с проблемой вылезающего предупреждения при запуске моего инсталлятора с сетевого диска (понятно что тестовое окружение дурацкое, но в нем проблема проявляется).
Первая гипотеза была в том что UAC oчень умный и о чем-то таком догадывается. Похоже, это не ( Read more... )

authenticode, Программирование, code signing, windows 7

Leave a comment

Comments 14

maratyszcza March 26 2012, 09:26:57 UTC
Заменить манифест (как и любой другой ресурс) можно с помощью старой доброй программы ResHack/. Разумеется, сработает это только если e32 это обычные PE EXE. Думаю, это более правильный (и человечный) способ, чем править бинарник в хекс-редакторе.

Reply

alextutubalin March 26 2012, 09:37:53 UTC
Hex-редактор сработал, а больше мне ничего и не надо.

Ну то есть надо, конечно, это место в InnoSetup доделать, но лень.

Reply


_iga March 26 2012, 11:09:42 UTC
Ура!

А в InnoSetup явно баг :-(

Манифест ещё можно mt.exe внедрять:
mt.exe -manifest MyApp.exe.manifest -outputresource:MyApp.exe;1

Reply

alextutubalin March 26 2012, 11:53:24 UTC
Ну я исходники не читал, может быть там (безуспешно) пытаются это сделать и таки баг.

Там же прикольно, там зарезервировано место пробелами, чтобы поправить asInvoker в requireAdministrator (места как раз достаточно).
А вот кто это должен делать, сам innosetup или предполагается что потом я, ручками - не знаю. Может это фича такая.

А внедрить можно много чего - но вот я потратил полдня, чтобы оно работало только InnoSetup-ом (все версии и все такое - бралось строго из одного места) и обратно выписывать какие-то батники очень противно.

Reply


wizzard0 March 26 2012, 13:00:01 UTC
век живи, век учись. а корреляция с windows logo, видимо, потому, что там требуют, чтобы у инсталлятора был requireAdministrator в манифесте...

Reply

alextutubalin March 26 2012, 13:09:27 UTC
Ну, вообще, программа же может ставиться в Users и писать в Registry только в HKLU. И, соответственно, ничего такого не надо.

Ну и узнать, чего программа на самом деле хочет - нельзя же не запустив ея. А ругается - заранее. У меня в тестах ругалось просто на подписанное приложение (не инсталлятор), которому точно никаких прав не надо.

Reply


cranequinier March 26 2012, 15:50:45 UTC
Спасибо, интересно и полезно.

Reply


cranequinier March 26 2012, 15:54:39 UTC
Вот тут инносетапцы пишут, что это всё intentional, чтоб чего-то работало:
http://news.jrsoftware.org/news/innosetup/msg93060.html

Reply

alextutubalin March 26 2012, 16:05:53 UTC
Оно - очевидно - недоделано, хотя там осталось дел на 5 минут (+ еще нужно знание дельфи и компилятор, у меня оба предмета отсутствуют).

Т.е. в xml-ке уже оставлено место, где можно попатчить, осталось эту патчилку прикрутить в зависимости от настроек RequiredPrivileges (или PrivilegesRequired, никак не могу запомнить).

Но так как я пока ставлюсь в Program Files, т.е. права мне нужны (и defaults - годятся), я попатчил бинарно прямо по живому.

Reply

alextutubalin March 26 2012, 16:12:43 UTC
Да, про IE9 low-rights sandbox - жОстко. Как много я не знаю и как бы я хотел этого всего не знать.

Reply

cranequinier March 26 2012, 20:05:11 UTC
> Как много я не знаю и как бы я хотел этого всего не знать.

Это очень мудрые слова. Фактически мой девиз как профессионального программиста.

Reply


Leave a comment

Up