Русский / Russian English / Английский

Сейчас на форуме: leedo (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› NSIS проверка целостности
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Статус: Участник

Создано: 30 января 2020 22:14 New!
Цитата · Личное сообщение · #1

Всем привет! Возникла потребность собрать проект в nsis.
Однако, его инсталлеры открываются любым архиватором и я решил попробовать это подправить.

Но после малейших изменений обнаружилась проверка целостности, что меня опечалило. Пролистав код в Оле, перенаправил куда нужно. Но на этом все не закончилось, вместо сообщения об ошибке и выхода, по ходу действия процесс натыкается на бесконечный цикл и грузит проц.

Сама проверка целостности заключается в создании пустого файла с генерацией специального имени, которое тоже не статично.

Дальше моих небольших знаний не хватает.

Можно, конечно, запускать от ключа /NCRC, но это те еще костыли.

Прошу подсказать, в какую сторону плыть. Желательно, не из разряда "найди алгоритм генерации имени, подставь новый хеш и будет тебе счастье".
Если кто решит рискнуть поковыряться, прикладываю пример инсталлера


{ Атач доступен только для участников форума } - wwwwwwww.exe


Ранг: 267.9 (наставник)
Статус: Участник
RBC

Создано: 30 января 2020 22:19 · Поправил: Kindly New!
Цитата · Личное сообщение · #2

bypass пишет:
Сама проверка целостности заключается в создании пустого файла с генерацией специального имени, которое тоже не статично.

какая-то наркомания...

а вообще какое дело тебе до этого? инсталляторы созданы не для того, чтобы их защищали от распаковки.

Ранг: 0.2 (гость)
Статус: Участник

Создано: 30 января 2020 22:33 · Поправил: bypass New!
Цитата · Личное сообщение · #3

Kindly пишет:
а вообще какое дело тебе до этого? инсталляторы созданы не для того, чтобы их защищали от распаковки.

Я еще только на пути освоения возможностей nsis, но видел проекты с проверкой лицензии на основе инсталлятора. Одна из проблем такого подхода именно в возможности распаковать инсталлятор. Защита, конечно, не от крутых реверсеров, но на новичков сгодится.
Я, конечно, это рано начал, но если не преодолеть даже это, то и начинать не стоит.

По поводу алгорится проверки возможно я ошибаюсь, но там действительно только пустой файл с именем.


Ранг: 256.4 (наставник)
Статус: Участник

Создано: 30 января 2020 22:34 · Поправил: f13nd New!
Цитата · Личное сообщение · #4

Он вычитывает сам себя по 512 байт в буфер, ищет '00 00 00 00 EF BE AD DE 4E 75 6C 6C 73 6F 66 74' (сигнатура оверлея), затем считает црц32 (порождающий полином EDB88320) оверлея. Довольно дебильно, но как есть. Последние 4 байта оверлея - црц32.

"Малейшие изменения" это наверное подвинуть оверлей, если конечно архиваторы не ищут его таким же способом. Хз что еще ты там собрался изменять. Сигнатуру еще вариант менять.

| Сообщение посчитали полезным: TryAga1n


Ранг: 0.2 (гость)
Статус: Участник

Создано: 30 января 2020 22:44 New!
Цитата · Личное сообщение · #5

f13nd пишет:
"Малейшие изменения" это наверное подвинуть оверлей, если конечно архиваторы не ищут его таким же способом. Хз что еще ты там собрался изменять. Сигнатуру еще вариант менять.

Спасибо за отклик!
Малейшие изменения - это изменить 00 на 90 в любом месте файла, тут уж не знаю, как это меняет оверлей.
А по поводу что собираюсь поменять.. Я Олей умею идти только напролом, перепрыгивая или затирая вредные функции..


Ранг: 256.4 (наставник)
Статус: Участник

Создано: 30 января 2020 22:46 New!
Цитата · Личное сообщение · #6

Поиск сигнатуры:
Code:
  1. 00402EA0 CMP DWORD PTR SS:[LOCAL.9],DEADBEEF
  2. 00402EA7 JNE SHORT 00402F12
  3. 00402EA9 CMP DWORD PTR SS:[LOCAL.6],74736E49
  4. 00402EB0 JNE SHORT 00402F12
  5. 00402EB2 CMP DWORD PTR SS:[LOCAL.7],74666F73
  6. 00402EB9 JNE SHORT 00402F12
  7. 00402EBB CMP DWORD PTR SS:[LOCAL.8],6C6C754E
Проверка црц:
Code:
  1. 00402F66 MOV EAX,DWORD PTR SS:[LOCAL.2]
  2. 00402F69 CMP EAX,DWORD PTR SS:[ARG.1]

Ранг: 410.3 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 30 января 2020 22:47 New!
Цитата · Личное сообщение · #7

bypass пишет:
проект в nsis.
Однако, его инсталлеры открываются любым архиватором

Установка пароля при инсталляции разве не спасет отца демократии?


Ранг: 256.4 (наставник)
Статус: Участник

Создано: 30 января 2020 22:56 New!
Цитата · Личное сообщение · #8

CRC-32(0x200--0xB29E)=F09524A8, это последние 4 байта файла в little endian. Туда весь код инсталлятора входит вместе с оверлеем, скорей всего достаточно пересчитать и на малейшие изменения реагировать не будет.

Ранг: 0.2 (гость)
Статус: Участник

Создано: 30 января 2020 23:05 New!
Цитата · Личное сообщение · #9

ELF_7719116 пишет:
Установка пароля при инсталляции разве не спасет отца демократии?

Это будет обычный пароль, без шифрования данных

Добавлено спустя 9 минут
f13nd пишет:
CRC-32(0x200--0xB29E)=F09524A8, это последние 4 байта файла в little endian. Туда весь код инсталлятора входит вместе с оверлеем, скорей всего достаточно пересчитать и на малейшие изменения реагировать не будет.

Спасибо большое, знать бы еще, как это применить.. Буду знать, хоть куда копать.
Может, даже удастся что нибудь удачно затереть


Ранг: 256.4 (наставник)
Статус: Участник

Создано: 30 января 2020 23:19 New!
Цитата · Личное сообщение · #10

bypass пишет:
знать бы еще, как это применить

Вручную - 010Editor установи, ctrl-shift-a, 200, B09E, enter, ctrl-K, enter. В появившеся окошке найди crc-32, флипни и замени этим последние 4 байта файла. Не вручную - сделать простенькую утилиту, которая пропатчит проверку сигнатуры, поменяет сигнатуру и пересчитает црц.

Ранг: 0.2 (гость)
Статус: Участник

Создано: 30 января 2020 23:36 New!
Цитата · Личное сообщение · #11

f13nd пишет:
Вручную - 010Editor установи, ctrl-shift-a, 200, B09E, enter, ctrl-K, enter. В появившеся окошке найди crc-32, флипни и замени этим последние 4 байта файла. Не вручную - сделать простенькую утилиту, которая пропатчит проверку сигнатуры, поменяет сигнатуру и пересчитает црц.

Ого! Никогда бы не поверил, что получится что-то пересчитать.
Огромное спасибо! Если проект удастся(он, правда, только начинается), с меня простава!

Ранг: 247.6 (наставник)
Статус: Участник

Создано: 31 января 2020 12:10 · Поправил: cppasm New!
Цитата · Личное сообщение · #12

bypass пишет:
Это будет обычный пароль, без шифрования данных

Может проще изучить возможности инсталлятора, чем гланды через Ж рвать?
Готовый плагин: https://nsis.sourceforge.io/DcryptDll_plug-in
Не говоря уже про то что NSIS OpenSource и можно самому туда всунуть любое шифрование, было бы желание.
 eXeL@B —› Вопросы новичков —› NSIS проверка целостности

Видеокурс ВЗЛОМ