TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
Para||elix — платформа демосцены

3 May 2023, 20:13

Открыть в Telegram Поделиться Пожаловаться

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

Напомню, что сейчас платформа состоит из 2-х файлов (потом будет ещё документация и т.п.):
🔸 parallelix.dll — содержит парсер командной строки, загрузчик и среду исполнения, т.е. всё :)
🔸 parallelix.exe — загружает DLL и передаёт ей командную строку.

Зачем так сложно?

Платформа использует фиксированные линейные адреса для хранения кода API, загрузки кода интро, видеобуфера и пр. Так проще, поскольку не нужно делать интро позиционно-независимым.

✅️ Исторически было решено использовать довольно-таки малые адреса, которые при загрузке программы оказывались занятыми (т.к. код инициализации DLL эти адреса "прибирал к рукам"). Поэтому EXE-шник резервировал нужные адреса, а потом динамически загружал наш основной DLL. Сейчас я снова решил поменять адреса, поэтому в принципе, такой проблемы быть не должно.

✅️ Вторая причина — более веская: возможность создания прототипов, которые будут использовать API из DLL. Т.е. мы делаем интро либо в виде DLL, либо в виде EXE-шника, который использует функции из parallelix.dll. В первом случае мы передаём наш DLL с прототипом в качестве параметра для parallelix.exe (аналогично тому, как мы передаём имя сайз-закодированного файла с плоским кодом). Во втором случае мы имеем полноценно работающий EXE-шник (и тут parallelix.exe нам вообще не нужен).


Так вот, вернёмся к исходному вопросу. Есть несколько вариантов организовать возможность запускать разные функции.

Засунуть все эти функции в ту же DLL-ку. Да, она будет больше в размере, но глобально: 500 КБ или 5 МБ она будет весить — не особо-то и важно. И тут есть 2 варианта:

1️⃣ Использовать команды в, пардон, командной строке, т.е. формат parallelix command [files and options]:
parallelix run intro.plx -kc -fr
parallelix run https://github/vasya/scene/intro.plx --check-hash md5:d41d8cd98f00b204e9800998ecf8427e
parallelix pack intro.plx -m 5 -o intro_packed.plx
parallelix remove-header intro.plx
parallelix version

Здесь для облегчения жизни можно пойти на хитрость: разрешить опускать команду run. Т.о. следующие 2 команды будут работать одинаково:
parallelix intro.plx -kc -fr
parallelix run intro.plx -kc -fr

Для надёжности (вдруг кто-то решит назвать файл именем pack без расширения) все команды можно предварять каким-то символом, например, слешем:
parallelix intro.plx -kc -fr
parallelix /run intro.plx -kc -fr
parallelix /run https://github/vasya/scene/intro.plx --check-hash md5:d41d8cd98f00b204e9800998ecf8427e
parallelix /pack intro.plx -m 5 -o intro_packed.plx
parallelix /remove-header intro.plx
parallelix /version

2️⃣ В случае необходимости использовать "специальную" функцию (не запуск), использовать опции вместо команд:
parallelix intro.plx -kc -fr
parallelix https://github/vasya/scene/intro.plx --check-hash md5:d41d8cd98f00b204e9800998ecf8427e
parallelix --pack intro.plx -m 5 -o intro_packed.plx
parallelix intro.plx --pack -m 5 -o intro_packed.plx
parallelix --remove-header intro.plx
parallelix --version

35 0 0
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot