Информация об изменениях

Сообщение Re: онлайн инсталлер от 14.12.2023 22:44

Изменено 14.12.2023 22:50 Пересичный Шароварщик

Re: онлайн инсталлер
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Вставлю свои 5 копеек —
жаба душит платить на КС серты + хочу сетап "как у хрома"

(уже закончил разработку, но ещё не в продакшене, предварительно всё ок)

всё "дот нет" С#
1. подписаный "сетап" (с манифестом запуска под админом) (по сути аппка консольная, с зеро интерфесом), при запусте — интерфеса нет — см. следующий пункт.
2. сетап стучится на сайт, получает с него ссылку на лейтест cloud-flare cdn последней версии — "версия в папке" на aws s3 (бекенд к КФ)
3. с cdn-а скачивается dll (SCL — setup control library) неподписанная, в которой находится логика установки конкретной версии
и собственно форма с прогресс баром.
4. 2-3 секунды SCL качает все "кишки программы в 7зип архивах" показывая прогресс бар юзеру, всё распаковывает в програм файлз и запускает основную аппку.
5. лончер программы (подписан) — выполняет грязный хакерский трюк загружает exe assembly from memory и ранит его. (по сути лончер пустышка)
6. если добавить в название сетапа debug — то вместо релиза с обфускатором будет выкачана дебаг версия с пдб файлами и без обфускатора (для отладки багов)

итого —
+ версионированы все версии
+ сетап контроллится с срв — "поинтер на лейтест" (старый сетап по умолчанию всегда поставит последнюю версию)
+ замена SCL либы даёт возможность без переподписывания сетапа поменять логику развёртывание\удаления любой версии.
+ лончер вечноподписан
+ сетапер вечноподписан
+ "слик" установка аппки — минимум интеракции от юзера, максимум скорости от клика, до запуска (я отказался от сф7, и 9! экранов визарда — установщика)
+ дебаг \ релиз + обфускатор

сборка + CI\CD автоматизированы.

из технически непростого — сетап качает длл для распаковки 7зипов и сейвит её в темп, дальше подключает рефлекшеном — так как
по другому ёё надо дропать в папку к сетаперу, что меня как юзера дико бы напрягло. И второй момент, по хорошему, мейн аппку надо реализовать как длл
и загружать рефлекшеном динамичски, но нет столько сил, поэтому в разы проще exe assembly from memory

Поэтому 2 крякерских решения — это exe assembly from memory + dll reflection load

Почему это работает — потому, что ОСь "доверяет" подписаному исполняемому сетапу и лончеру.

Думаю, можно изи зашить внутренюю чифровую подпись в сетапер, чтоб он ранил только самоподписанную SCL, — таким образом нельзя будет
запустить любую другую либу, с помощью подписаных модулей. Вирусятники — лесом.
Re: онлайн инсталлер
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Вставлю свои 5 копеек —
жаба душит платить на КС серты + хочу сетап "как у хрома"

(уже закончил разработку, но ещё не в продакшене, предварительно всё ок)

всё "дот нет" С#
1. подписаный "сетап" (с манифестом запуска под админом) (по сути аппка консольная, с зеро интерфесом), при запусте — интерфеса нет — см. следующий пункт.
2. сетап стучится на сайт, получает с него ссылку на лейтест cloud-flare cdn последней версии — "версия в папке" на aws s3 (бекенд к КФ)
3. с cdn-а скачивается dll (SCL — setup control library) неподписанная, в которой находится логика установки конкретной версии
и собственно форма с прогресс баром.
4. 2-3 секунды SCL качает все "кишки программы в 7зип архивах" показывая прогресс бар юзеру, всё распаковывает в програм файлз и запускает основную аппку.
5. лончер программы (подписан) — выполняет грязный хакерский трюк загружает exe assembly from memory и ранит его. (по сути лончер пустышка)
6. если добавить в название сетапа debug — то вместо релиза с обфускатором будет выкачана дебаг версия с пдб файлами и без обфускатора (для отладки багов)

итого —
+ версионированы все версии
+ сетап контроллится с срв — "поинтер на лейтест" (старый сетап по умолчанию всегда поставит последнюю версию)
+ замена SCL либы даёт возможность без переподписывания сетапа поменять логику развёртывание\удаления любой версии.
+ лончер вечноподписан
+ сетапер вечноподписан
+ "слик" установка аппки — минимум интеракции от юзера, максимум скорости от клика, до запуска (я отказался от сф7, и 9! экранов визарда — установщика)
+ дебаг \ релиз + обфускатор

сборка + CI\CD автоматизированы.

из технически непростого — сетап качает длл для распаковки 7зипов и сейвит её в темп, дальше подключает рефлекшеном — так как
по другому ёё надо дропать в папку к сетаперу, что меня как юзера дико бы напрягло. И второй момент, по хорошему, мейн аппку надо реализовать как длл
и загружать рефлекшеном динамичски, но нет столько сил (переписывать всю программу), поэтому в разы проще exe assembly from memory

Поэтому 2 крякерских решения — это exe assembly from memory + dll reflection load

Почему это работает — потому, что ОСь "доверяет" подписаному исполняемому сетапу и лончеру.

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