IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Wise Installer (script.bin)
PavelDAS
Oct 21 2025, 13:57
Сообщение #1


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



Дошёл до блоков со списком файлов и не могу сопоставить.
Зашифрованы? или параметры не имеют отношения к исходнику...
Интересуют параметры размера и даты
вот примеры:
в файле:
00 00 00 00 80 00 8e d6 2d 0f ab 08 2e 0f fb 28
58 6d 48 2a 01 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 fb 1a 93 b9
%MAINDIR%\fdata\f_x40.abf

исходник:
item: Install File
Source=h:\Games\Gp3\fdata\f_x40.abf
Destination=%MAINDIR%\fdata\f_x40.abf
Flags=0000000010000010
File Size=50528
File Date=20000703 092642
end

ещё:
00 00 00 00 80 00 2c ae 19 00 27 05 1a 00 fb 28
1b ba fa ed 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 96 36 ec e7
%MAINDIR%\ldata\russian.str

item: Install File
Source=h:\Games\Gp3\ldata\russian.str
Destination=%MAINDIR%\ldata\russian.str
Flags=0000000010000010
File Size=54904
File Date=20000708 124102
end

00 00 00 00 80 00 27 05 1a 00 43 05 1a 00 e3 28
b5 4b 16 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 b9 ff 1e 7b
%MAINDIR%\ldata\russian.loc

item: Install File
Source=h:\Games\Gp3\ldata\russian.loc
Destination=%MAINDIR%\ldata\russian.loc
Flags=0000000010000010
File Size=22
File Date=20000703 092942
end

00 00 00 00 80 00 e1 1a 2e 0f d9 21 2e 0f 6f 28
41 5f ee 0c 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 73 41 1b 58

%MAINDIR%\Icons\Uninstal.ico

item: Install File
Source=h:\Games\Gp3\Icons\Uninstal.ico
Destination=%MAINDIR%\Icons\Uninstal.ico
Flags=0000000010000010
File Size=3310
File Date=20000315 115802
end


-------
00 00 00 12 c0 81 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00

%MAINDIR%
00
Дополнительные файлы, не вошедшие в основную установку
00 00
%INST%\Addon\*.*
00

item: Copy Local File
Source=%INST%\Addon\*.*
Destination=%MAINDIR%
Description=Дополнительные файлы, не вошедшие в основную установку
Flags=0000000111000010
end


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Oct 21 2025, 14:31
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



Есть ещё такая штука - как оказалось, в этом script.bin очень много намешано: wisedump.c.
Сейчас проверил по 32-х битной, более новой версии, там, во-первых, другая длинна команд (массив len_code), другой заголовок архива в конце .EXE и больше строчек, которые нужно пропустить, перед байткодом.
Короче, чтобы сделать универсальный распаковщик, нужно определять версию Wise и, в зависимости от неё, по разному парсить script.bin, хотя общая структура будет схожей.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Oct 21 2025, 14:43
Сообщение #3


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



QUOTE(-=CHE@TER=- @ Oct 21 2025, 14:31) *

Есть ещё такая штука - как оказалось, в этом script.bin очень много намешано: wisedump.c.
Сейчас проверил по 32-х битной, более новой версии, там, во-первых, другая длинна команд (массив len_code), другой заголовок архива в конце .EXE и больше строчек, которые нужно пропустить, перед байткодом.
Короче, чтобы сделать универсальный распаковщик, нужно определять версию Wise и, в зависимости от неё, по разному парсить script.bin, хотя общая структура будет схожей.

Совсем новые меня не интересуют.
Конкретно эта версия 8.03
сетап от 2000 года.
Wise использовался где-то до 2009-го.

больше интересуют данные, чем распаковка.

вот файлы. Нужен exe (250мб)?
https://dropmefiles.com/UL4x1


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Oct 21 2025, 15:30
Сообщение #4


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



Ну, вот, во выложенном файле "script.bin" со смещения 0xA7F начинается байткод, как я понимаю. Первая запись, а вторая со смещения 0xA8E - как раз файл (типа 0), совпадает со структурой wise_dat, что приведена по ссылке выше на репозитории. Насчёт остальных записей и их размеров - ничего сказать не могу.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Oct 27 2025, 08:33
Сообщение #5


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



QUOTE(-=CHE@TER=- @ Oct 21 2025, 15:30) *

wise_dat, что приведена по ссылке выше на репозитории.

У меня описание файлов не совпадает...
45


Буду разбирать...

Нашёл более полное описание формата smile.gif
https://codeberg.org/CYBERDEV/REWise


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Oct 27 2025, 12:51
Сообщение #6


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



QUOTE(PavelDAS @ Oct 27 2025, 08:33) *
У меня описание файлов не совпадает...
Неудивительно, ведь ты какой-то другой файл смотришь. (*улыбается*)
Сообщением выше я писал про смещение 0xA8E в том script.bin, что ты выкладывал, а у тебя на скриншоте 0x14E4.
Я ведь выше писал, что в зависимости от версии Wise там размеры структур разные будут.
Wise, в зависимости от версии, нужно по разному парсить. Полноценных распаковщиков поддерживающих все версии и написанных по нормальному (в соответствии с внутренней структурой, а не гаданием на кофейной гуще), я не видел. Поэтому и приходится, тут что-то подсмотреть, там что-то подглядеть и так далее.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Oct 27 2025, 20:25
Сообщение #7


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



QUOTE(-=CHE@TER=- @ Oct 27 2025, 12:51) *

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

У меня цель другая: не распаковать setup.exe, а
расшифровать script.bin

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


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Oct 28 2025, 10:19
Сообщение #8


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



QUOTE(PavelDAS @ Oct 27 2025, 20:25) *
Нужно для нахождения закономерности и опознания переводчиков у изданий, которые не подписаны напрямую.
О! Так вот какая конечная цель была. Надо было сразу про это написать.
Если честно, я сильно не уверен, что анализ установочных скриптов в этом поможет.
Потому что в любом установщике, например в том же InnoSetup, есть файлы-примеры и наверняка на их основе люди свои установщики и делали, а по тем различиям, которые есть, я сильно сомневаюсь, что можно установить авторство, если, разве что, сами пираты где-то в установщике свои копирайты не указали (вон как ты выше пример приводил с "COMPANY=%COMPANY%").
Но, чем чёрт не шутит - попробуй. Главное чтобы в итоге это не выглядело как натягивание совы на глобус, когда по каким-то крохам, которые могут быть в любом установщике, авторство приписывалось переводчикам, которые к тому переводу никакого отношения не имели. (*улыбается*)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Oct 28 2025, 11:39
Сообщение #9


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



QUOTE(-=CHE@TER=- @ Oct 28 2025, 10:19) *

О! Так вот какая конечная цель была. Надо было сразу про это написать.
Если честно, я сильно не уверен, что анализ установочных скриптов в этом поможет.
Потому что в любом установщике, например в том же InnoSetup, есть файлы-примеры и наверняка на их основе люди свои установщики и делали, а по тем различиям, которые есть, я сильно сомневаюсь, что можно установить авторство, если, разве что, сами пираты где-то в установщике свои копирайты не указали (вон как ты выше пример приводил с "COMPANY=%COMPANY%").
Но, чем чёрт не шутит - попробуй. Главное чтобы в итоге это не выглядело как натягивание совы на глобус, когда по каким-то крохам, которые могут быть в любом установщике, авторство приписывалось переводчикам, которые к тому переводу никакого отношения не имели. (*улыбается*)


Признаки есть.
DDeM использовал свой перевод в разных вариациях. Использовал переменную PUSTO. + Часто куча мусора от других сборов, где использовался oggdec, ...
NoF8 использовал переменные SHITGAME, SHITCOMP
EP использовали перевод на основе французского и немецкого (и он подписан).

Выискивать это в hex редакторах муторно, а будет перегнал в текст -- смотришь.

Расшифровка идёт успешно smile.gif


p.s. Расшифровка Uninst.isu очень упростила жизнь. Правда, не смог пока что собрать свою реализацию в exe smile.gif использую свою на php.
ранее: Песочница+шпион процессов+запуск удаления и анализ ошибок обращения..
теперь: запуск скрипта и анализ только нужных строк.

p.p.s. Вот такой документ составил по опознанию.
инфу про script.bin на 11 странице можно будет выкинуть / адаптировать.
https://wdfiles.ru/Otmn
На выходных встретил авторан с навешенных Petit, проги его не взяли, вручную не могу импорт восстановить, или ещё чего для запуска не хватает...


--------------------
|__--__|
***|***
___|___


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Oct 28 2025, 13:23
Сообщение #10


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



QUOTE(PavelDAS @ Oct 28 2025, 11:39) *
Признаки есть.
О, действительно.
Спасибо за подробности! Интересно было прочитать как это всё определяется.

QUOTE(PavelDAS @ Oct 28 2025, 11:39) *
Выискивать это в hex редакторах муторно, а будет перегнал в текст -- смотришь.
Согласен, теперь я понимаю зачем ты с этим заморочился.

QUOTE(PavelDAS @ Oct 28 2025, 11:39) *
На выходных встретил авторан с навешенных Petit, проги его не взяли, вручную не могу импорт восстановить, или ещё чего для запуска не хватает...
Вроде бы были утилиты для распаковки Petit:
- unpetite (архивная копия);
- enlarge (архивная копия);
- https://github.com/Exidous/Unpackers - тут, правда, как я понял только исходные коды.
Кстати говоря, там может быть и не Petit. Могли просто секцию так обозвать для отвода глаз. Видел, уже не помню где, в исполняемом файле секцию "UPX" переименовали в ".sforce" (типа StarForce). (*улыбается*) Но тогда нужно какие-то серьёзные анализаторы применять, которые не смотрят на имена, а ищут специфичные куски кода характерные для того или иного упаковщика.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Oct 29 2025, 11:26
Сообщение #11


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



Расшифровал первый файл smile.gif
Остались моменты, но это что-то встраиваемое, в скрипте и подключаемых файлов такого нет...

update:
v2. Расшифровал блок 16. В блоке 01 вывел неизвестные биты.
https://wdfiles.ru/2aorl

Какой смысл в блоках 1b не совсем понятна. Они в середине файла и их около 5000.


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Nov 3 2025, 07:47
Сообщение #12


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



На текущий момент расшифровано большинство блоков и функций.
Итоговый файл выходит таким: https://file.com.ru/ymiWff40kX5hP8K/file


--------------------
|__--__|
***|***
___|___


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
Nov 6 2025, 08:27
Сообщение #13


Member
**

Группа: Authorized
Сообщений: 25
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 7 раз(а)



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

Вот пример с опцией Install DirectX
CODE
Flags
1 - DirectDraw (DX 1/2)
2 - DirectSound (DX 1/2)
4 - DirectPlay (DX 1/2)
64 - Direct3D (DX 1/2)

127 - Complete Installion of DirectX (DX 1/2)
128 - Reinstall DirectX Files (DX 1/2)

Options
+1 - DirectDraw (DX 3+)
+2 - DirectSound (DX 3+)
+4 - DirectPlay (DX 3+)
512 - Direct3D (DX 3+)
2048 - DirectInput (DX 3+)
64 - DirectVideo (DX 3+)
4096 - Install DirectX Setup DLLs (DX 3+)
+268435456 - Prompt when replacing audio/video drivers (DX 3+)
+536870912 - Restore audio/video drivers (DX 3+)

2623 - Complete Installion of DirectX (DX 3+)


805313095 (DX 3+)
все, кроме Complete Installion of DirectX


805313095 раскладывается на числа, которых нет...

История версий:

CODE
* Баги
* Function Id                : f23
    Function Name              : Include Script
    странный блок с числом А выводится не там, нужно собрать в массив, отсортировать и вывести...
*
* v1.03 2025.11.05 ! 0x09_f29. Self-Register OCXs/DLLs: UTF-8
*                  + 0x09_f10 Register Font
*                  + 0x09_f30 Install DirectX
*                  + Конвертация в UTF-8 Кириллицы, а для Rollback Латиницы
* v1.02 2025.11.04 ! Add ProgMan Icon: исправлена потеря номера блока при повторном вызове
*                  ! Copy Local File: исправлен пропавший первый символ в Source
*                  + Add ProgMan Icon: многоязычность
*                  + 0x10 Add ProgMan Icon End ?
*                  + Create Shortcut : +2 unknown param
*                  ~ Ширина левого столбца увеличена до 26 символов
* v1.01 2025.11.03 Многоязыковая поддержка
* v1.00 2025.11.02 Init


На выходных посмотрю, что ещё можно поправить и сделаю релиз на гит, может кому пригодится расшифровка на php smile.gif

определить кириллицу / латиницу (фр, нем) ещё та задача... Коды символов одни.


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Nov 6 2025, 16:12
Сообщение #14


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,401
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 323 раз(а)



QUOTE(PavelDAS @ Nov 6 2025, 08:27) *
Понял, что они формируются степенью двойки, но при расшифровке не всегда есть число с таким параметром...
Так это же битовая маска: ссылка.

QUOTE(PavelDAS @ Nov 6 2025, 08:27) *
805313095 раскладывается на числа, которых нет...
805313095 - это 0x30001A47 (hex) или 110000000000000001101001000111 в двоичном представлении.
Как видишь, в числе 9 не нулевых битов - т.е. использовано 9 флагов:
805313095 = 0x30001A47 = 0x1 or 0x2 or 0x4 or 0x40 or 0x200 or 0x800 or 0x1000 or 0x10000000 or 0x20000000
or - это операция битового "или" (в сях и си-подобных языках это "|" - вертикальная черта).
if (7 == (4 | 2 | 1)) { echo 'true'; }


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 1st December 2025 - 23:44