![]() |
eXeL@B —› Вопросы новичков —› NSIS проверка целостности |
Посл.ответ | Сообщение |
|
Создано: 30 января 2020 22:14 · Личное сообщение · #1 Всем привет! Возникла потребность собрать проект в nsis. Однако, его инсталлеры открываются любым архиватором и я решил попробовать это подправить. Но после малейших изменений обнаружилась проверка целостности, что меня опечалило. Пролистав код в Оле, перенаправил куда нужно. Но на этом все не закончилось, вместо сообщения об ошибке и выхода, по ходу действия процесс натыкается на бесконечный цикл и грузит проц. Сама проверка целостности заключается в создании пустого файла с генерацией специального имени, которое тоже не статично. Дальше моих небольших знаний не хватает. Можно, конечно, запускать от ключа /NCRC, но это те еще костыли. Прошу подсказать, в какую сторону плыть. Желательно, не из разряда "найди алгоритм генерации имени, подставь новый хеш и будет тебе счастье". Если кто решит рискнуть поковыряться, прикладываю пример инсталлера ![]() ![]() |
|
Создано: 30 января 2020 22:19 · Поправил: Kindly · Личное сообщение · #2 |
|
Создано: 30 января 2020 22:33 · Поправил: bypass · Личное сообщение · #3 Kindly пишет: а вообще какое дело тебе до этого? инсталляторы созданы не для того, чтобы их защищали от распаковки. Я еще только на пути освоения возможностей nsis, но видел проекты с проверкой лицензии на основе инсталлятора. Одна из проблем такого подхода именно в возможности распаковать инсталлятор. Защита, конечно, не от крутых реверсеров, но на новичков сгодится. Я, конечно, это рано начал, но если не преодолеть даже это, то и начинать не стоит. По поводу алгорится проверки возможно я ошибаюсь, но там действительно только пустой файл с именем. ![]() |
|
Создано: 30 января 2020 22:34 · Поправил: f13nd · Личное сообщение · #4 Он вычитывает сам себя по 512 байт в буфер, ищет '00 00 00 00 EF BE AD DE 4E 75 6C 6C 73 6F 66 74' (сигнатура оверлея), затем считает црц32 (порождающий полином EDB88320) оверлея. Довольно дебильно, но как есть. Последние 4 байта оверлея - црц32. "Малейшие изменения" это наверное подвинуть оверлей, если конечно архиваторы не ищут его таким же способом. Хз что еще ты там собрался изменять. Сигнатуру еще вариант менять. ----- 2 оттенка серого ![]() |
|
Создано: 30 января 2020 22:44 · Личное сообщение · #5 f13nd пишет: "Малейшие изменения" это наверное подвинуть оверлей, если конечно архиваторы не ищут его таким же способом. Хз что еще ты там собрался изменять. Сигнатуру еще вариант менять. Спасибо за отклик! Малейшие изменения - это изменить 00 на 90 в любом месте файла, тут уж не знаю, как это меняет оверлей. А по поводу что собираюсь поменять.. Я Олей умею идти только напролом, перепрыгивая или затирая вредные функции.. ![]() |
|
Создано: 30 января 2020 22:46 · Личное сообщение · #6 Поиск сигнатуры: Code:
Code:
----- 2 оттенка серого ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 30 января 2020 22:47 · Личное сообщение · #7 |
|
Создано: 30 января 2020 22:56 · Личное сообщение · #8 |
|
Создано: 30 января 2020 23:05 · Личное сообщение · #9 ELF_7719116 пишет: Установка пароля при инсталляции разве не спасет отца демократии? Это будет обычный пароль, без шифрования данных Добавлено спустя 9 минут f13nd пишет: CRC-32(0x200--0xB29E)=F09524A8, это последние 4 байта файла в little endian. Туда весь код инсталлятора входит вместе с оверлеем, скорей всего достаточно пересчитать и на малейшие изменения реагировать не будет. Спасибо большое, знать бы еще, как это применить.. Буду знать, хоть куда копать. Может, даже удастся что нибудь удачно затереть ![]() |
|
Создано: 30 января 2020 23:19 · Личное сообщение · #10 bypass пишет: знать бы еще, как это применить Вручную - 010Editor установи, ctrl-shift-a, 200, B09E, enter, ctrl-K, enter. В появившеся окошке найди crc-32, флипни и замени этим последние 4 байта файла. Не вручную - сделать простенькую утилиту, которая пропатчит проверку сигнатуры, поменяет сигнатуру и пересчитает црц. ----- 2 оттенка серого ![]() |
|
Создано: 30 января 2020 23:36 · Личное сообщение · #11 f13nd пишет: Вручную - 010Editor установи, ctrl-shift-a, 200, B09E, enter, ctrl-K, enter. В появившеся окошке найди crc-32, флипни и замени этим последние 4 байта файла. Не вручную - сделать простенькую утилиту, которая пропатчит проверку сигнатуры, поменяет сигнатуру и пересчитает црц. Ого! Никогда бы не поверил, что получится что-то пересчитать. Огромное спасибо! Если проект удастся(он, правда, только начинается), с меня простава! ![]() |
|
Создано: 31 января 2020 12:10 · Поправил: cppasm · Личное сообщение · #12 bypass пишет: Это будет обычный пароль, без шифрования данных Может проще изучить возможности инсталлятора, чем гланды через Ж рвать? Готовый плагин: Не говоря уже про то что NSIS OpenSource и можно самому туда всунуть любое шифрование, было бы желание. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› NSIS проверка целостности |