Skip to content

About

Actual sources of the Elfloader 3.x

Resources

Stars

5 stars

Watchers

1 watching

Forks

 
 

Latest commit

 

History

150 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Changelog

2026.01.24 - @Azq2

  1. Новые функции:
    • 400: BCFG_GetDefaultDisk

2025.12.25 - @Azq2

  1. Новые функции:
    • 2FE: BCFG_LoadConfig
    • 2FF: BCFG_SaveConfig

2025.04.22 - @Azq2

  1. Значительно оптимизирован код для замены иконок в PIT через X:\ZBin\img
  2. Добавлен механизм для динамической замены картинок в PIT из эльфов. Новые функции:
    • 2FB: PIT_ClearCache
    • 2FC: PIT_SetImage
    • 2FD: PIT_ResetImage

2024.11.14 - @Azq2

  1. Теперь можно увеличить размер png-cache до 512 элементов (было 200).
  2. Реализована возможность размещать папку ZBin на дисках Cache и Config. Выбор диска работает по такой логике:
    • первый приоритет - поиск диска с ?:\ZBin\etc\ElfPack.bcfg (MMC -> Data -> Config -> Cache)
    • второй приоритет - поиск диска с ?:\ZBin\etc (MMC -> Data -> Config -> Cache)
    • третий приоритет - поиск диска с ?:\ZBin\ (MMC -> Data -> Config -> Cache)
    • четвёртый приоритет - если нигде нет папки ZBin, выбираем диск 0:
  3. Добавлена SWI 2FA - версия ELFLoader

2024.07.01 - @Azq2

  1. В состав ElfPack включены дополнительные патчи:
    • Исправлен перезапуск IDLE CSM при ошибке SIM или смене IMSI. Это актуально для multi-IMSI SIM, в которых IMSI может меняться во время работы.
    • Запатчены все функции BSD-сокетов, чтобы исключить возможное состояние гонки (если процесс NETCORE тормозит), что приводило к повреждению стека.
  2. Теперь все модели и версии прошивки из линейки NSG/ELKA получили:
    • Правильную область RAM, которая точно не используется прошивкой.
    • Врезка в инициализацию ОС для зануления этой несипользуемой памяти.
    • Перенос зеркала swilib и конфига из HEAP в неиспользуемую память (экономия 18 кб хипа).
  3. Инструменты для автоматического генерирования всех патчей, что перечислены выше.

2024.03.14 - @Azq2

  • Изменена область RAM используемая ELFLoader для S75sw52, C81sw51, EL71sw45, E71sw45.

    Теперь используется точно неиспользуемая ранее память.

    Так же добавлена врезка в инициализацию ОС для зануления этого блока памяти.

    Спасибо Feyman за предоставленные адреса несипользуемой памяти и FIL, k1r1t0 за тесты.

  • Для S75sw52, C81sw51, EL71sw45, E71sw45 зеркало swilib и конфиг перенесены в статическую память, вместо HEAP. Это позволило сэкономить до 18 кб heap-памяти.

  • Добавлена защита от двойного запуска ELFLoader и удалён его деструктор (в нём нет смысла).

  • Исправлена работа Explorer, которая была сломана из-за убранного __thumb у функции MyShowMSG.

2024.02.28 - @Azq2

  • Исправлена область RAM используемая ELFLoader для S75sw52
  • Исправлена функция FUNC_ABORT, у которой случайно было убратно __arm, из-за этого вместо "No function in lib" был пик.

2024.02.20 - @Azq2

Багфиксы:

  1. Заменил все "way" на "path"
  2. Исправил пик при клике на .elf, который не является эльфом (часто бывает, что файл нулевого размера и при клике на него пикало).
  3. Исправлен баг swi.blib, когда она не использовалась для EP3 эльфов, всегда передавался указатель на library.vkp.
  4. Исправлен баг, когда в R_ARM_ABS32 не учитывался предварительный offset.
  5. Добавлены данные для восстановления, чтобы можно было нормально откатывать патч ElfPack.
  6. Удалена AddrLibrary из патча ELFLoader.

Изменения:

  1. Теперь "Realtime lib cache cleaner" включен по-умолчанию.

  2. Добавлено автоматическое изменение номера диска в конфиге Elfloader (при первом запуске).

    Раньше могла быть ситуация, когда конфиг создаётся на 0:\Zbin\etc\Elfpack3.bcfg, но пути в нём остаются 4:\....

    Теперь конфиг создаётся с правильным диском.

  3. __sys_switab_addres и __switab теперь предоставляются самим ELFLoader, вместо libcrt_helper.so.

  4. Встроенные символы __ex, __sys_switab_addres и __switab теперь работают так же и в R_ARM_GLOB_DAT.

  5. Копирование библиотеки функций в RAM перенесено из libcrt_helper.so в сам ELFLoader.

  6. Все несуществующие функции теперь не 0xFFFFFFFF, а 0xFFFFxxx0, где xxx это swi-номер.

    Если раньше при попытке доступа к неизвестной функции происходил непонятный дата-аборт (в GCC-эльфах), то теперь будет явная ошибка доступа к адресу 0xFFFFxxx0, из которого можно понять, какая именно из функций отсутствует.

    При этом проблем не будет, в swilib никогда не указывались адреса или данные 0xFFFFxxxx.

  7. Базовая поддержка для реализации gdbstub.

    • Возможность установить хук на загрузку elf/so.
    • Первым эльфом грузится 0:\Zbin\Daemons\EP3DebugHook.elf (если он присутствует на диске), в него передаётся указатель на ElfloaderDebugHook, в который можно будет прописать указатели на hook() и _r_debug.
  8. Удалось сократить размер EP3 почти на 0.5-0.7 кб.

  9. Уменьшено кол-во malloc/free при загрузке ELF.

  10. Удалены бесполезные функции из swilib: elfclose, elfopen, elf_entry, GetBinSize, LoadSections, DoRelocation.

  11. PT_DYNAMIC для GCC-эльфов теперь работает по стандарту, а для IAR'овских оставлен костыль с клонированием в раму (это нужно для gdbstub).

  12. Новая система сборки.

  13. Опциональный пропуск загрузки демона, если присутствует файл с его именем с постфиксом .skip (например: 0:\Zbin\Daemons\XTASK3_ELKA.elf.skip). Это нужно, чтобы можно было управлять автозагрузкой без переноса файлов (для будущего пакетного менеджера).

Изменения работы swi.blib

  1. Теперь можно переопределять почти всю библиотеку функций, а не только добавлять новые функции.
  2. При этом добавлена проверка на совместимость. Если некоторые базовые функции (strcat, strchr, strcmp, strcpy) не совпадают с прошивочными, значит, это swi.blib от другого телефона. Он не будет загружен.
  3. Safe-Mode (# при загрузке) теперь действует и на swi.blib. Раньше кривая swi.blib могла убить телефон.

2023.10.21 - @Azq2

Багфиксы:

  • Исправлена сборка EP3 для устаревших прошивок.

2023.10.21 - @Azq2

Багфиксы:

  • Включен GStackAlign=1 для совместимости с AAPCS (8-байт стек)
  • Починена сборка EP3, добавлены отсутствующие файлы

2018.12.28 - @Azq2

Багфиксы:

  • Исправлен адрес StoreErrString для C81sw51
  • fix dlopen(Data Abort)
  • поиск кеш картинок происходит по хешу имени, должно немного дать прироста
  • Добавлен поиск либ в корне папки с эльфом
  • Исправлена утечка в логе
  • Исправлена серьёзная ошибка из за которой не правильно импортились некоторые функции из либ, обычно собраных на С++. К примеру не работал fstream из stdc++. Я сперва думал что это глюк в либе, но когда линканул статически то удивился что оно заработало, и стал искать ошибку в паке
  • По притензиям некоторых, добавлена в конфиг настройка путей к папкам либ
  • Добавлен в конфиг опциональный лог. Так как сложно выловить в мессагах че там не хватает эльфу. Чтобы выключить лог, ставим максимальный размер на 0.
  • Улучшена совместимость со старыми эльфами
  • Поддержка симлинков для либ, симлинк обычный текстовый файл содержащий только путь
  • Поменян прицыпе вызова конструкторов, они теперь вызываются библиотекой libcrt, разрабам следует обновиться из темы разработки
  • Исправлено 2 ошибки в освобождении либ
  • Добавлено опциональная очистка либ при не использовании, вы можете выключить реалтайм освобождение тем самым увеличить скорость последующего запуска и освобождения эльфов.
  • В свилиб вынесены 4 новых функций
    • 0x2F6 getBaseEnviron - указатель на переменную окружения(требуется для либц)
    • 0x2F7 dlerror - при ошибке открытия либы эта функция возвратит ошибку в текстовом виде
    • 0x2F8 dlclean_cache - принудительная очистка кеша либ(если отключена реалтайм очистка)
    • 0x2F9 SHARED_TOP - указатель на последнюю загруженую либу

Первая публичная версия

AI-assisted contributions

We are not against AI. We are against vibe coding, AI slop, and attempts to offload engineering work to a model. This project prioritizes quality, not development speed or results at any cost.

  1. Do not use AI-generated text in human-to-human communication.

    Write comments, discussions, PR descriptions, and responses to reviewers yourself.

  2. Do not let AI submit PRs or commits.

    The author must always be a human who has personally reviewed the changes and takes responsibility for them.

  3. Do not submit code primarily designed or written by AI.

    Architecture, algorithms, code organization, and the final implementation must be decided by a human. AI may only be used as an auxiliary tool.

  4. You must understand all the code you submit.

    You must be able to explain every change, justify your decisions, and fix any problems yourself. If you do not understand the code, open a feature request instead of a PR.

  5. Code must be simple, clear, and tested.

    Follow KISS, the project's coding style, and its existing architecture. Do not introduce unnecessary abstractions, dependencies, or untested changes.

AI slop PRs will be closed without review.

About

Actual sources of the Elfloader 3.x

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages