Pull to refresh
59
0.2
Григорий Клюшников @grishkaa

Пользователь

Send message
А, да, снова туплю
Если что, на андроиде это всё тоже можно прямо сейчас. Во-первых в большинстве прошивок есть секретное меню, которое открывается, если набрать *#*#INFO#*#*, там можно посмотреть информацию об используемой БС, и ещё можно вручную выбрать стандарт связи (пользуюсь иногда, когда оно включает EDGE при доступном, но, видимо, не 100% идеальном LTE). Во-вторых, для получения той же самой инфы есть апи, доступное приложениям. Где-то в недрах TelephonyManager, по-моему. Можно поставить какое-нибудь готовое приложение (их много), можно написать своё.
Так вообще, насколько я понимаю, «SWI-библиотека» появилась ещё до эльфлоадера, именно чтобы можно было писать портабельные патчи. И в Smelter есть кнопка, чтобы искать функции по паттернам.
Нуууу грабли, по которым я прошёл, я таки перечислил :)
Сомневаюсь, что кому бы то ни было было бы интересно смотреть на под сотню таких команд, мелких изменений исходника из папки examples и крашей прошивки. Но так, когда я ещё не разобрался с инициализацией структур, но уже смог собрать что-то пытающееся запуститься, я отлаживал эти проблемы с указателями с помощью таки работающих sprintf и ShowMSG (показывает алерт).
я просто лениво-лениво пишу эмулятор pmb8875/6, насмотрелась на оные.
Ещё интереснее! Такая мысль у меня тоже была, чтобы наконец-то какими-то практическими вещами укрепить своё понимание как работают процессоры в частности и железо в целом на низком уровне. Но лучше, видимо, всё-таки начать с чего-нибудь более документированного и менее сложного. Игровой приставки там какой-нибудь. Там из обязательной к поддержке периферии обычно только видеочип и кнопки/джойстики.

И как успехи?
ну, а на dead926e еще тогда, чуть меньше 15 лет назад.
В фулфлэше с того сх75, что в видео, оно есть на смещении 0x92AC4 (в обратном порядке байт).
там просто фс тоже в отдельном процессе и общение с ним mailbox'ами и очередями.
Ага, до чего-то такого я докапывался, по крайней мере видел процессы (CepID, кстати что такое CepID?) с FFS в названии — это либо For Fuck's Sake, либо Flash File System, каждый выбирает расшифровку по вкусу. И ещё все функции для работы с файлами вызываются через какую-то таблицу с указателями (которая я не смог найти где заполняется). Подозреваю, что они разные для флэша и карты.
*показывает на 3d-ускоритель в s75*
Так он вроде работал? В соседнем комменте про это писали.
гидрой, да 32-меговый бинарь… она ж подавится xD
Как ни странно, не давилась даже на макбуке 2012 года, а на этом с м1 макс уж и подавно.
наивный fopen/fread выдавал единицы килобайт в секунду
О. А вот это интересно. Я реально столкнулся с тем, что при чтении страницы (40 кб) из файла наивно в GUI_OnRedraw() всё ощутимо пролагивает на полсекунды. Решил это тем, что выделил два буфера: один для страницы, с которой мы рисуем кадры, и второй — чтобы асинхронно (если честно, всё ещё не до конца понимаю что делает SUBPROC(), но вроде бы запускает переданную функцию как отдельный поток) читать в него файл. Когда закончили с текущим буфером, меняем их местами и снова запускаем чтение асинхронно.
крч, не просто так в этих телефонах в векторах прерываний есть замечательная константа 0xFACE926E, а память при старте ос они проверяют не менее замечательной константой 0xDEAD926E.
Это я не находил :)

Но у меня как-то вообще всё туго с реверсингом bare metal кода, даже с современными инструментами вроде ghidra. Наверное, не стоит пытаться тренироваться в этом на ~22 мегабайтах прошивки с RTOS для устройства с каким-то умопомрачительным количеством периферии.
8. а на cx75 (и возможно m75)- 16, верхние 8 из которых не использовались. но можно включить обратно.
Поправил. Чот да, я всё-таки туплю — мне попадались адреса типа 0хa82f0714, при том, что я помню, что внешняя по отношению к процессору оперативка начинается с 0xa8000000, а это уже смещение почти 3 мб.

А зачем они ставили 16, чтобы не использовать половину? Это ж дорого?
Сами определения — вот тут, в том же репозитории вот тут есть куча примеров эльфов, где они используются. Ну а так, как ни странно, можно гуглить их названия (они достаточно уникальны!) и забредать на какие-нибудь древние форумы, или на буквально сайты на народе. В исходниках эльфов частенько есть комментарии. На русском. В windows-1251, ъаъ. И всякий там код для инициализации CSM/GUI все явно копипастили друг у друга, я тоже скопипастил, но переписал, чтобы он был более читаемый.

И, конечно же, можно экспериментировать. Но аккуратно. Любое неверное движение — и телефон говорит «пик» и вырубается. Причину можно посмотреть в инженерном меню в разделе "(S)Exit", но она в большинстве случаев вообще не помогает понять что именно пошло не так.
Так до появления айфона вполне себе были кнопочные смартфоны с более настоящими ОС, с тем же симбианом например. Стоили, как правило, как несколько обычных телефонов.

Мне, правда, кажется прикольным компромиссный вариант — слайдер и с большим сенсорным экраном, и с физическими кнопками. У меня как-то в итоге ни слайдера, ни раскладушки не было, может поэтому так и кажется)
Такие видео через ик-порт кидать долго, не факт что за урок получится успеть
поди найди, где вообще в 16 мб бинарнике код а где картинки с нескучным обоями
К моменту, когда я начал этим всем увлекаться, уже были инструменты вроде smelter, которые умели показывать где что по блокам. Дизассемблировать прошивку я, правда, тогда не пробовал, зато пробовал вот вчера, гидрой. Декомпилирует во что-то осмысленное, но, блин, всё равно сложно понять как именно и почему оно всё работает. Возможно я просто не умею реверсить bare metal код.
Поддержка zip в любом случае необходима любому телефону с J2ME, потому что .jar — это на самом деле zip с классами, ресурсами и манифестом.
Пиксели не продаются в России официально. Я оба своих (1 и 4а) покупал в Америке с пересылкой.
В странах, где распространена продажа телефонов через операторов (США), и так всегда были как минимум кастомизированные операторские прошивки, а часто так и вообще отдельные модели под каждого оператора.
Вот прочитал я это, и снова теперь меня мучает эта мысль запустить bad apple на телефоне Siemens CX75, который у меня валяется и до сих пор вполне себе работает (только батарейка почти не держит). Причём не на J2ME — это для слабаков и будет лагать — а нативно, эльфом, напрямую в буфер экрана. Осталось «всего лишь» понять, чем эти эльфы можно компилировать в 2022 году на macOS и дореверсить нужные части прошивки.
Знаете, если выбирать между вечной жизнью при диктатуре и смертью при сменяемой власти, я выберу первое. Мой инстинкт самосохранения настолько силён :)
если не для нашей, то для наших детей или внуков
То есть Марс терраформировать — это так, раз плюнуть, а вот старение мы за всё это время не победим? Ну-ну.
коммит для поддержки этого безобразия уже отправлен для включения в ядро Linux
А смержат ли?
Мне теперь даже стало интересно, какая у них minSdk в этом приложении. Андроид 6.0 вышел в 2015. Каких-то прямо серьёзных, значительных и затрагивающих все приложения изменений в API с тех пор не было — собственно, последнее значительное изменение было в самом 6.0, добавили runtime permissions.

upd: в гугл плее написано, что требуется 7.0, теперь мне ещё более непонятно, чем продиктовано такое решение
Можно ли хоть какой-то способ инъектирования кода считать безопасным?
В macOS можно подгрузить свою динамическую библиотеку в чужой процесс и подменить реализацию какого-нибудь метода в нём на свою через objc runtime. Выглядит достаточно безопасно, как по мне.

Information

Rating
2,154-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity