Сейчас на форуме: tyns777, bezumchik (+6 невидимых)

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

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

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

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

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

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

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

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

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


d1dd_30.01.2020_EXELAB.rU.tgz - wwwwwwww.exe




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

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

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

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

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

-----
Array[Login..Logout] of Life




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

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

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 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 оттенка серого


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

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

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 30 января 2020 22:46
· Личное сообщение · #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]


-----
2 оттенка серого




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого




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

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

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

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

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

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

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

-----
2 оттенка серого




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

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

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

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



Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

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

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


 eXeL@B —› Вопросы новичков —› NSIS проверка целостности
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати