Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
| 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 -------------------- |__--__|
***|*** ___|___ |
| -=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, хотя общая структура будет схожей. |
| PavelDAS |
Oct 21 2025, 14:43
Сообщение
#3
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
Есть ещё такая штука - как оказалось, в этом script.bin очень много намешано: wisedump.c. Сейчас проверил по 32-х битной, более новой версии, там, во-первых, другая длинна команд (массив len_code), другой заголовок архива в конце .EXE и больше строчек, которые нужно пропустить, перед байткодом. Короче, чтобы сделать универсальный распаковщик, нужно определять версию Wise и, в зависимости от неё, по разному парсить script.bin, хотя общая структура будет схожей. Совсем новые меня не интересуют. Конкретно эта версия 8.03 сетап от 2000 года. Wise использовался где-то до 2009-го. больше интересуют данные, чем распаковка. ![]() вот файлы. Нужен exe (250мб)? https://dropmefiles.com/UL4x1 -------------------- |__--__|
***|*** ___|___ |
| -=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, что приведена по ссылке выше на репозитории. Насчёт остальных записей и их размеров - ничего сказать не могу.
|
| PavelDAS |
Oct 27 2025, 08:33
Сообщение
#5
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
wise_dat, что приведена по ссылке выше на репозитории. У меня описание файлов не совпадает... 45 ![]() Буду разбирать... Нашёл более полное описание формата https://codeberg.org/CYBERDEV/REWise -------------------- |__--__|
***|*** ___|___ |
| -=CHE@TER=- |
Oct 27 2025, 12:51
Сообщение
#6
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
У меня описание файлов не совпадает... Неудивительно, ведь ты какой-то другой файл смотришь. (*улыбается*)Сообщением выше я писал про смещение 0xA8E в том script.bin, что ты выкладывал, а у тебя на скриншоте 0x14E4. Я ведь выше писал, что в зависимости от версии Wise там размеры структур разные будут. Wise, в зависимости от версии, нужно по разному парсить. Полноценных распаковщиков поддерживающих все версии и написанных по нормальному (в соответствии с внутренней структурой, а не гаданием на кофейной гуще), я не видел. Поэтому и приходится, тут что-то подсмотреть, там что-то подглядеть и так далее. |
| PavelDAS |
Oct 27 2025, 20:25
Сообщение
#7
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
Полноценных распаковщиков поддерживающих все версии и написанных по нормальному (в соответствии с внутренней структурой, а не гаданием на кофейной гуще), я не видел. Поэтому и приходится, тут что-то подсмотреть, там что-то подглядеть и так далее. У меня цель другая: не распаковать setup.exe, а расшифровать script.bin В первой моей версии мне не хватило понимания, что не так с блоком 09, и что за странные даты. Теперь понятно. Напишу расшифровку для одного файла, потом второго,.. так и наберётся с большего. Нужно для нахождения закономерности и опознания переводчиков у изданий, которые не подписаны напрямую. -------------------- |__--__|
***|*** ___|___ |
| -=CHE@TER=- |
Oct 28 2025, 10:19
Сообщение
#8
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
Нужно для нахождения закономерности и опознания переводчиков у изданий, которые не подписаны напрямую. О! Так вот какая конечная цель была. Надо было сразу про это написать.Если честно, я сильно не уверен, что анализ установочных скриптов в этом поможет. Потому что в любом установщике, например в том же InnoSetup, есть файлы-примеры и наверняка на их основе люди свои установщики и делали, а по тем различиям, которые есть, я сильно сомневаюсь, что можно установить авторство, если, разве что, сами пираты где-то в установщике свои копирайты не указали (вон как ты выше пример приводил с "COMPANY=%COMPANY%"). Но, чем чёрт не шутит - попробуй. Главное чтобы в итоге это не выглядело как натягивание совы на глобус, когда по каким-то крохам, которые могут быть в любом установщике, авторство приписывалось переводчикам, которые к тому переводу никакого отношения не имели. (*улыбается*) |
| PavelDAS |
Oct 28 2025, 11:39
Сообщение
#9
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
О! Так вот какая конечная цель была. Надо было сразу про это написать. Если честно, я сильно не уверен, что анализ установочных скриптов в этом поможет. Потому что в любом установщике, например в том же InnoSetup, есть файлы-примеры и наверняка на их основе люди свои установщики и делали, а по тем различиям, которые есть, я сильно сомневаюсь, что можно установить авторство, если, разве что, сами пираты где-то в установщике свои копирайты не указали (вон как ты выше пример приводил с "COMPANY=%COMPANY%"). Но, чем чёрт не шутит - попробуй. Главное чтобы в итоге это не выглядело как натягивание совы на глобус, когда по каким-то крохам, которые могут быть в любом установщике, авторство приписывалось переводчикам, которые к тому переводу никакого отношения не имели. (*улыбается*) Признаки есть. DDeM использовал свой перевод в разных вариациях. Использовал переменную PUSTO. + Часто куча мусора от других сборов, где использовался oggdec, ... NoF8 использовал переменные SHITGAME, SHITCOMP EP использовали перевод на основе французского и немецкого (и он подписан). Выискивать это в hex редакторах муторно, а будет перегнал в текст -- смотришь. Расшифровка идёт успешно ![]() p.s. Расшифровка Uninst.isu очень упростила жизнь. Правда, не смог пока что собрать свою реализацию в exe ранее: Песочница+шпион процессов+запуск удаления и анализ ошибок обращения.. теперь: запуск скрипта и анализ только нужных строк. p.p.s. Вот такой документ составил по опознанию. инфу про script.bin на 11 странице можно будет выкинуть / адаптировать. https://wdfiles.ru/Otmn На выходных встретил авторан с навешенных Petit, проги его не взяли, вручную не могу импорт восстановить, или ещё чего для запуска не хватает... -------------------- |__--__|
***|*** ___|___ Спасибо сказали:
|
| -=CHE@TER=- |
Oct 28 2025, 13:23
Сообщение
#10
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
Признаки есть. О, действительно.Спасибо за подробности! Интересно было прочитать как это всё определяется. Выискивать это в hex редакторах муторно, а будет перегнал в текст -- смотришь. Согласен, теперь я понимаю зачем ты с этим заморочился.На выходных встретил авторан с навешенных Petit, проги его не взяли, вручную не могу импорт восстановить, или ещё чего для запуска не хватает... Вроде бы были утилиты для распаковки Petit:- unpetite (архивная копия); - enlarge (архивная копия); - https://github.com/Exidous/Unpackers - тут, правда, как я понял только исходные коды. Кстати говоря, там может быть и не Petit. Могли просто секцию так обозвать для отвода глаз. Видел, уже не помню где, в исполняемом файле секцию "UPX" переименовали в ".sforce" (типа StarForce). (*улыбается*) Но тогда нужно какие-то серьёзные анализаторы применять, которые не смотрят на имена, а ищут специфичные куски кода характерные для того или иного упаковщика. |
| PavelDAS |
Oct 29 2025, 11:26
Сообщение
#11
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
Расшифровал первый файл
Остались моменты, но это что-то встраиваемое, в скрипте и подключаемых файлов такого нет... update: v2. Расшифровал блок 16. В блоке 01 вывел неизвестные биты. https://wdfiles.ru/2aorl Какой смысл в блоках 1b не совсем понятна. Они в середине файла и их около 5000. -------------------- |__--__|
***|*** ___|___ |
| PavelDAS |
Nov 3 2025, 07:47
Сообщение
#12
|
|
Member ![]() ![]() Группа: Authorized Сообщений: 25 Регистрация: 21-September 25 Из: Minsk Пользователь №: 18,037 Спасибо сказали: 7 раз(а) |
На текущий момент расшифровано большинство блоков и функций.
Итоговый файл выходит таким: https://file.com.ru/ymiWff40kX5hP8K/file -------------------- |__--__|
***|*** ___|___ Спасибо сказали:
|
| 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 определить кириллицу / латиницу (фр, нем) ещё та задача... Коды символов одни. -------------------- |__--__|
***|*** ___|___ |
| -=CHE@TER=- |
Nov 6 2025, 16:12
Сообщение
#14
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
Понял, что они формируются степенью двойки, но при расшифровке не всегда есть число с таким параметром... Так это же битовая маска: ссылка.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'; } Спасибо сказали:
|
![]() ![]() |
| Упрощённая версия | Сейчас: 1st December 2025 - 23:44 |