eXeL@B —› Основной форум —› Исследование NSIS |
Посл.ответ | Сообщение |
|
Создано: 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 Помогите разобраться, друзья. |
|
Создано: 19 марта 2008 20:42 · Личное сообщение · #2 |
|
Создано: 19 марта 2008 21:09 · Поправил: s0larian · Личное сообщение · #3 |
|
Создано: 20 марта 2008 02:22 · Личное сообщение · #4 |
|
Создано: 20 марта 2008 04:24 · Личное сообщение · #5 |
|
Создано: 20 марта 2008 09:15 · Поправил: simplix · Личное сообщение · #6 s0larian пишет: s0larian, ты google поспрашивал? Интересная рекурсия... Но полагаю вопрос мне Не просто спрашивал, я его так пытал, что гестапо отдыхало на фоне этой картины... Уже долго на паблике нету ничего нового, кроме вышеобозначенных утилит, а их возможности крайне ограничены. В общем ищутся добровольцы, чтобы расковырять скрипт демона, а если будут вопросы - поделюсь своими наработками. |
|
Создано: 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... |
|
Создано: 02 июня 2015 20:01 · Поправил: Isaev · Личное сообщение · #8 |
|
Создано: 02 июня 2015 22:45 · Личное сообщение · #9 |
|
Создано: 03 июня 2015 00:59 · Поправил: Isaev · Личное сообщение · #10 Jupiter я всё всегда читаю и не по одному разу Ты знаешь simplix'а? Я не знаю, и без понятия на сколько достоверная его информация, но знаю что тут наверняка есть специалисты, которые в теме и могут конкретно расписать всё что там и как работает при желании. PS: Jupiter, как модератору совет: если считаете, что нет смысла давать возможность писать в существующих темах, прогоните скрипт и закройте все старые топики, делов то. Я считаю, что всё должно быть на своих местах, потому не поленился, нашёл топик по теме, а не стал плодить тупые новые темы на 1-2 сообщения, которых как грибов и никто их не будет тереть и тем более соберать в одном месте. А вот к чему ваш упрёк не понятно, лучше бы по теме помогли ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: vptrlx |
|
Создано: 03 июня 2015 02:15 · Личное сообщение · #11 Isaev Far 1. Ставишь 2. Ставишь плагин 3. Открываешь папку с установщиком на NSIS: Ctrl+PgDn В корне архива файл "[NSIS].nsi", в нём декомпилированный скрипт. Скрин "Far_Observer_NSIS.png" во вложении. 5c92_03.06.2015_EXELAB.rU.tgz - Far_Observer_NSIS.png 7-Zip 1. Ставишь 2. Открываешь установщик как архив, в корне архива: [NSIS].nsi Uninstall.exe.nsis Внутри Uninstall.exe.nsis свой [NSIS].nsi со скриптом uninstall. Total Commander 1. Ставишь 2. Ставишь плагин Total7zip: 3. Открываешь папку с установщиком на NSIS: Ctrl+PgDn В корне архива файл "[NSIS].nsi", в нём декомпилированный скрипт. ----- EnJoy! | Сообщение посчитали полезным: Isaev |
|
Создано: 03 июня 2015 02:30 · Поправил: DimitarSerg · Личное сообщение · #12 Isaev пишет: т.е. плаг для Тотала генерит полный скрипт? хм, глянул пару инсталлов - лежит готовый nsi внутри... но насколько помню так далеко не всегда (возможно есть опция) Jupiter пишет: Тотал с MultiArc'ом Мультиарк никогда не юзал, знаю точно, что плаг Total7zip позволял входить как в архиве и можно извлечь bin, а дальше пробовать этим http://sourceforge.net/projects/nsidis/ Добавлено спустя 9 минут В общем странно: из 7-ми инсталлеров нсиса что были под рукой везде внутри nsi был, не понимаю только зачем, всегда считал, что здесь аналогично Инно (только скомпиленый вариант), но сорк скрипта ----- ds |
|
Создано: 03 июня 2015 02:58 · Личное сообщение · #13 |
|
Создано: 03 июня 2015 13:00 · Поправил: Isaev · Личное сообщение · #14 Jupiter пишет: 7-Zip пробовал, но файлов *.nsi он не показывает... Думал может нужно для этого что-то в меню выбрать, но ничего похожего не нашёл. Far дома сегодня потестирую Тотал с MultiArc'ом, поставил, но так и не понял как использовать плаг, там что-то особенное конфигурировать нужно? И где вообще плагины, как вызываются? Визуально после установки ничего не изменилось, меню тоже вроде не поменялись Добавлено спустя 46 минут Far справился на 5, спасибо) ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 04 июня 2015 02:31 · Личное сообщение · #15 Isaev Для тотала собрал отдельно Total7zip с последним 7-Zip (15.03). Открой архив ----- EnJoy! |
eXeL@B —› Основной форум —› Исследование NSIS |