Сейчас на форуме: rmn, exp50848 (+9 невидимых)

 eXeL@B —› Основной форум —› Исследование NSIS
Посл.ответ Сообщение

Ранг: 49.0 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 18 марта 2008 23:47
· Личное сообщение · #1

Поднимаю этот топик только потому, что аналогичных нету, а тема очень актуальна. Допустим есть инсталлятор на NSIS и его нужно переделать. Самый простой способ - отслеживаем изменения в системе и клепаем подобие... Но бывают такие хитрые инсталляторы, особенно при использовании самописных плагинов, что повторить его работу становится довольно сложно.

Цель топика - сбор программ, которые могут помочь непосредственно в исследовании и восстановлении первоначального скрипта. Моя цель в данный момент - понять, как работает скрипт установки Daemon Tools.

Лучшее что мне удалось найти - 7z 4.40 - практически единственная прога, которая позволяет хотя бы примерно понять работу скрипта, и даже иногда показывает элементарные команды в исходном виде.
Далее - Тотал с MultiArc'ом, позволяет вытаскивать script.bin - уже скомпилированный скрипт, но и в нём можно увидеть немного из того, что не показал 7z.
Пожалуй на данный момент всё. Если знаете другие - велкам. Проги для тупого извлечения файлов из архива не рассматриваются - это слишком просто и тема о другом...

Теперь о Daemon Tools. Берём любую версию, для простоты Lite. В начале ставится дровина SPTD, которая на уровне ядра перехватывает 7 системных функций, чтобы никто не лез в HKLM\SYSTEM\CurrentControlSet\Services\sptd\Cfg, а также отрезает всем права доступа на эту же ветку. Daemon Tools Lite хранит свои настройки в HKLM\SYSTEM\CurrentControlSet\Services\sptd\Cfg\19659239224E364682FA4B AF72C53EA4, в частности самым важным является добавление ключа p0 со значением пути установки демона. Весь смысл вопроса в том, чтобы понять как он это делает при установке (так-то, блин). Мои исследования показали, что в этом процессе явно участвует плагин setuphlp.dll и ключик добавляется именно им (это видно в Hlp1), с активным SPTD и без прав доступа. Технически ключ добавляется после нажатия кнопки "Готово" в конце установки демона, вызовом одной из функций Hlp* в setuphlp.dll. С какими параметрами, в какой последовательности и т. д. - предстоит выяснить. Пока что повторить добавление ключа таким же способом, используя setuphlp.dll, у меня не получилось, хотя ковыряю уже не один день; а сделать хочу уже ради любопытства и создания альтернативной установки Pro Помогите разобраться, друзья.



Ранг: 49.0 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 19 марта 2008 20:42
· Личное сообщение · #2

Неужели всё так плохо и эта тема никому не интересна?




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 19 марта 2008 21:09 · Поправил: s0larian
· Личное сообщение · #3

А исходники NSIS ты смотрел? Там есть компилер скрипта. Все исходники упаковщика тоже есть. Всё это можно отреверсить.



Ранг: 49.0 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 20 марта 2008 02:22
· Личное сообщение · #4

Идея отличная, только опыта у меня маловато будет для её осуществления. А программ по теме, кроме указанных в шапке, надо понимать, больше не существует?




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 20 марта 2008 04:24
· Личное сообщение · #5

s0larian, ты google поспрашивал?



Ранг: 49.0 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 20 марта 2008 09:15 · Поправил: simplix
· Личное сообщение · #6

s0larian пишет:
s0larian, ты google поспрашивал?

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



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

Создано: 13 апреля 2008 08:08
· Личное сообщение · #7

По заявлениям из FAQ NSIS

Currently NSIS installers cannot be fully decompiled. The installer itself doesn't provide any method to extract files or the script without installation. It is the developer's choice whether the source code and/or the files for the installer are available to the public or not.
There are, however, external tools that allow this. 7-zip (version 4.40beta at the time of this writing) supports decompressing NSIS installers compressed with lzma or bzip, but the source code is still partially compiled and requires extensive modification before the script can be recompiled. A decompression plug-in is also available for TotalCommander.

И вот еще интересное заявление

A compiled installer has three parts:
1. NSIS VM
2. Script code
3. File data

the extracted script is not ready to work - it only shows
an approximate script to get the idea behind.
i have in mind that nsis compiles the script for runtime use
and not for scripting base. works like aPatch or a codefusion
patch where the instructions are hold inside encoded.

The "decompiled" scripts are also completely useless for most purposes, it's a bit like viewing the assembly code of an application. Everything done by the preprocessor, all names, high-level logic etc. are gone. So it's not like someone could steal your complete script. Extracting a script is impossible, since most of the script is compiled. All macro's and !ifdef's are lost. All installer attributes too. you can't get the installer attributes, labels, macro's etc, so the script will be useles.

Хотя по сути нет ничего невозможного, судя по успеху innounp и i6comp...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 02 июня 2015 20:01 · Поправил: Isaev
· Личное сообщение · #8

т.е. плаг для Тотала генерит полный скрипт?
если инсталлятор ставит несколько дров его нельзя в портабельную переделать или есть виртуализаторы с такой возможностью?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 02 июня 2015 22:45
· Личное сообщение · #9

Isaev
К чему этот некропост, если ты даже не удосужился прочитать то, что написал simplix:
Тотал с MultiArc'ом, позволяет вытаскивать script.bin - уже скомпилированный скрипт, но и в нём можно увидеть немного из того, что не показал 7z.

-----
EnJoy!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 03 июня 2015 00:59 · Поправил: Isaev
· Личное сообщение · #10

Jupiter
я всё всегда читаю и не по одному разу
Ты знаешь simplix'а? Я не знаю, и без понятия на сколько достоверная его информация, но знаю что тут наверняка есть специалисты, которые в теме и могут конкретно расписать всё что там и как работает при желании.

PS: Jupiter, как модератору совет: если считаете, что нет смысла давать возможность писать в существующих темах, прогоните скрипт и закройте все старые топики, делов то. Я считаю, что всё должно быть на своих местах, потому не поленился, нашёл топик по теме, а не стал плодить тупые новые темы на 1-2 сообщения, которых как грибов и никто их не будет тереть и тем более соберать в одном месте.
А вот к чему ваш упрёк не понятно, лучше бы по теме помогли

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh


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


Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 03 июня 2015 02:15
· Личное сообщение · #11

Isaev

Far
1. Ставишь Far 3: Far Manager v3.0 build 4242 x86
2. Ставишь плагин Observer: Observer_Far3_x86_1101.rar
3. Открываешь папку с установщиком на NSIS: Ctrl+PgDn
В корне архива файл "[NSIS].nsi", в нём декомпилированный скрипт.

Скрин "Far_Observer_NSIS.png" во вложении.

5c92_03.06.2015_EXELAB.rU.tgz - Far_Observer_NSIS.png

7-Zip
1. Ставишь 7-Zip: 7-Zip 9.38 beta
2. Открываешь установщик как архив, в корне архива:
[NSIS].nsi
Uninstall.exe.nsis

Внутри Uninstall.exe.nsis свой [NSIS].nsi со скриптом uninstall.


Total Commander
1. Ставишь Total Commander: Total Commander 8.51a
2. Ставишь плагин Total7zip: wcx_Total7zip_0856_7zip_1503.rar
3. Открываешь папку с установщиком на NSIS: Ctrl+PgDn
В корне архива файл "[NSIS].nsi", в нём декомпилированный скрипт.

-----
EnJoy!


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


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 03 июня 2015 02:30 · Поправил: DimitarSerg
· Личное сообщение · #12

Isaev пишет:
т.е. плаг для Тотала генерит полный скрипт?

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

Jupiter пишет:
Тотал с MultiArc'ом

Мультиарк никогда не юзал, знаю точно, что плаг Total7zip позволял входить как в архиве и можно извлечь bin, а дальше пробовать этим http://sourceforge.net/projects/nsidis/

Добавлено спустя 9 минут
В общем странно: из 7-ми инсталлеров нсиса что были под рукой везде внутри nsi был, не понимаю только зачем, всегда считал, что здесь аналогично Инно (только скомпиленый вариант), но сорк скрипта

-----
ds





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 03 июня 2015 02:58
· Личное сообщение · #13

DimitarSerg пишет:
везде внутри nsi был

По факту скрипта внутри нет, это скорее байт-код. То, что ты видишь скрипт, это заслуга программ, которые по возможности пытаются восстановить скрипт, но результат всё равно далёк от исходного скрипта (это явно заметно даже визуально).

-----
EnJoy!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 03 июня 2015 13:00 · Поправил: Isaev
· Личное сообщение · #14

Jupiter пишет:
7-Zip

пробовал, но файлов *.nsi он не показывает... Думал может нужно для этого что-то в меню выбрать, но ничего похожего не нашёл. Far дома сегодня потестирую

Тотал с MultiArc'ом, поставил, но так и не понял как использовать плаг, там что-то особенное конфигурировать нужно? И где вообще плагины, как вызываются? Визуально после установки ничего не изменилось, меню тоже вроде не поменялись

Добавлено спустя 46 минут
Far справился на 5, спасибо)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 04 июня 2015 02:31
· Личное сообщение · #15

Isaev
Для тотала собрал отдельно Total7zip с последним 7-Zip (15.03).
Открой архив wcx_Total7zip_0856_7zip_1503.rar из тотала, установи плагин, после чего при заходе в .exe через Ctrl+PgDn, увидишь [NSIS].nsi

-----
EnJoy!



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


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