Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Пикабу Игры +1000 бесплатных онлайн игр

Щелкните блоки, чтобы они улетели в 3D. Разблокируйте куб, чтобы овладеть головоломками

Разбери Кубик

Головоломки, 3D, Обучающая

Играть
Собирайте комбинации из блоков! Бесконечный режим, более 100 уровней, ежедневные задания и турниры.

Расслабьтесь и отдохните: игра без ограничений по времени.

Проверьте свою смекалку: головоломка для любителей

Блоки Судоку - расслабляющая головоломка

Головоломки, Гиперказуальные, Мобильная

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

Герои Мини-Королевства

Кликер, Стратегии, Мидкорные

Играть
Управляйте маятником, чтобы построить самую высокую (и устойчивую) башню из падающих сверху постов. Следите за временем на каждый бросок по полоске справа: если она закончится, пост упадет мимо башни.

Башня

Аркады, Строительство, На ловкость

Играть
Погружайтесь в загадочный мир подводных приключений с игрой

Тайна морей - Затерянные сокровища: Три в ряд

Три в ряд, Казуальные, Головоломки

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Shadow Brokers

947 постов сначала свежее
2
AlexSabyr
AlexSabyr
8 часов назад

ГЕНИЙ с IQ 200 СТАНОВИТСЯ УБИЙЦЕЙ после гибели жены ОТ РУК ТЕРРОРИСТОВ | КРАТКИЙ ПЕРЕСКАЗ ФИЛЬМА⁠⁠

Краткий пересказ фильма: Новичок (2025)

Чарльз Хеллер — криптограф ЦРУ, чья жена погибает во время теракта в Лондоне. Однако его начальство затягивает расследование, поэтому Хеллер решает самостоятельно заняться поиском террористов. Так как у него нет необходимых навыков, он шантажирует агентство, чтобы его отправили на специальное обучение.

YouTube - https://www.youtube.com/watch?v=ptJkL88ZGGM

Rutube - https://rutube.ru/video/fafdfe7aaeb9a16bf5b14f942c880cdf/

Показать полностью
[моё] Актеры и актрисы Фильмы Хакеры Рами Малек Лоуренс Фишборн Джон Бернтал Видео Видео ВК Длиннопост
2
DELETED
9 часов назад

Паблик ВК умер?⁠⁠

Паблик вконтакте жив или взломан?

ВКонтакте Пикабу DDoS Хакеры Ватрушки сдобные Текст
2
Dev.Ops
Dev.Ops
2 дня назад

Меня поимели спецслужбы, вернусь не скоро⁠⁠

Меня поимели спецслужбы, вернусь не скоро
Хакеры Дайвер Матрица Глубина
4
13
bgafk
bgafk
3 дня назад
Юмор для всех и каждого

Посидит⁠⁠

Посидит
Картинка с текстом Юмор Зашакалено Кот Хакеры
1
8
Romabooy
Romabooy
3 дня назад
Всё о кино

ТОП-30 Фильмов и сериалов о Программистах⁠⁠

ТОП-30 Фильмов и сериалов о Программистах Программист, Хакеры, Фильмы, Длиннопост

Фильмы об айтишниках, хакерах и разработчиках

  1. Социальная сеть (The Social Network, 2010)
    История создания Facebook — блестящая драма о коде, предательстве, успехе и одиночестве.

  2. Игры разума (A Beautiful Mind, 2001)
    Не про программиста, но про математика и гения, на чьих идеях базируется современная криптография и ИИ.

  3. Игра в имитацию (The Imitation Game, 2014)
    Алан Тьюринг и расшифровка «Энигмы» — начало всего, что мы называем компьютерной наукой.

  4. Хакеры (Hackers, 1995)
    Культовый фильм 90-х с хакерским стилем и киберпанк-атмосферой. Молодой Ангелина Джоли — бонус.

  5. Кто я (Who Am I: Kein System ist sicher, 2014)
    Немецкий техно-триллер о талантливом хакере и его опасной группе. Один из лучших европейских фильмов на тему.

  6. Пароль «Рыба-меч» (Swordfish, 2001)
    Классика жанра: элитные хакеры, госзаговоры и высокотехнологичные преступления. Джон Траволта и Хью Джекман.

  7. Сноуден (Snowden, 2016)
    История Эдварда Сноудена, разоблачившего слежку АНБ. Интеллектуально и остроактуально.

  8. Чёрная шляпа (Blackhat, 2015)
    Технотриллер о кибертерроризме и международных атаках. Режиссёр — Майкл Манн, это стильно.

  9. Офисное пространство (Office Space, 1999)
    Гениальная комедия про айтишников, задолбанных офисом и тупыми начальниками. Программисты поймут.

  10. Пятая власть (The Fifth Estate, 2013)
    Фильм о Джулиане Ассанже и Wikileaks. Много программирования, хакинга и борьбы за правду.


💻 Сериалы про программистов и стартапы

  1. Кремниевая долина (Silicon Valley, 2014–2019)
    Безумно точный, смешной и местами болезненно правдивый сериал о стартапах, коде и VC-инвесторах.

  2. Mr. Robot (2015–2019)
    Хакер-анархист борется с корпорациями. Один из самых реалистичных сериалов про взломы и психику гения.

  3. Devs (2020)
    Мрачный философский триллер о квантовом компьютере и предопределённости. Очень атмосферно и красиво.

  4. StartUp (2016–2018)
    Сериал о криптовалютах, подпольных бизнесах и технологиях на грани закона. Динамичный и напряжённый.

  5. The IT Crowd (2006–2013)
    Британская комедия о неудачливых айтишниках. Абсурд, сарказм и незабвенное «Have you tried turning it off and on again?»

  6. Person of Interest (2011–2016)
    Искусственный интеллект, предсказывающий преступления. Много кода, технологий и философии ИИ.

  7. Halt and Catch Fire (2014–2017)
    История создания персональных компьютеров, интернета и поисковых систем. Очень сильная драма.

  8. Black Mirror (серия “Playtest”, “USS Callister”, “Metalhead”)
    Серии о VR, ИИ, симуляциях и технологической этике. Слово «гениально» подходит.

  9. Upload (2020–...)
    После смерти людей «загружают» в цифровой рай. Программирование, облачные сервисы и юмор.

  10. Codebreaker (2011)
    Докудрама про Алана Тьюринга — ещё одна вариация на тему, но с упором на технологии и его вклад.


🤖 Фантастика, где программисты и ИИ — в центре сюжета

  1. Ex Machina (2014)
    Молодой программист тестирует женоподобного ИИ. Философия, технологии и шикарная постановка.

  2. Трон: Наследие (Tron: Legacy, 2010)
    Программист попадает внутрь цифрового мира. Визуально потрясающе, с культурой 80-х.

  3. Первые игроки приготовиться (Ready Player One, 2018)
    Виртуальный мир Oasis, созданный программистом. Праздник геймеров и техногиков.

  4. Матрица (The Matrix, 1999)
    Программист Нео узнаёт, что весь мир — симуляция. Вечная классика с философским подтекстом.

  5. Трансцендентность (Transcendence, 2014)
    Учёный-программист переносит своё сознание в ИИ. Мрачная и красивая фантастика о будущем кода.

  6. Her (Она, 2013)
    Программист влюбляется в голос искусственного интеллекта. Очень тонкий и трогательный фильм.

  7. Чаппи (Chappie, 2015)
    Программист создаёт робота с сознанием. Идеи ИИ, человечности и воспитания кода.

  8. Anon (2018)
    Мир, где нет анонимности, и программистка-хакер ломает систему. Кибернуар.

  9. Eagle Eye (2008)
    ИИ, который взламывает всё вокруг, включая оборону и транспорт. Динамичный триллер.

  10. Превосходство Борна (The Bourne Legacy, 2012)
    Технологические манипуляции, программы слежки и биоинженерия — ближе к кибертриллерам, но с намёком на ИТ.

Показать полностью
Программист Хакеры Фильмы Длиннопост
4
595
SeverianX
SeverianX
6 дней назад
Книжная лига
Серия Сергей Лукьяненко "Диптаун"

Сергей Лукьяненко «Лабиринт отражений»⁠⁠

Сергей Лукьяненко «Лабиринт отражений» Обзор книг, Рецензия, Фантастика, Сергей Лукьяненко, Киберпанк, Лабиринт, Хакеры, Виртуальная реальность, Длиннопост, Лабиринт отражений

«Лабиринт отражений» – первый роман дилогии «Диптаун». По множеству отличительных черт его можно отнести к жанру киберпанк, но есть пару нюансов: в нем нет достаточного количества протеста против сложившейся системы. Поэтому было бы точнее назвать роман киберфантастикой. В то же время, это по-настоящему культовая веха русскоязычной фантастики и одно из самых влиятельных произведений о виртуальной реальности. Книга, созданная в эпоху зарождения массового интернета в России, удивительным образом предвосхитила многие вопросы цифровой эпохи, сохранив при этом свою актуальность и очарование.

Действие романа происходит в недалёком (на момент написания романа) будущем. Главным отличием от нашей эпохи является Глубина – своеобразная виртуальная реальность, доступная через специальные нейрошлемы и костюмы. В ней даже есть огромный мегаполис, Диптаун, с множеством различных возможностей и развлечений. Пользователи создают себе аватары и живут второй, зачастую более яркой, жизнью. Абсолютное большинство людей не способны самостоятельно покинуть Глубину, поэтому существуют специальные автоматические программы для выхода. А если они не срабатывают, помощь неудачникам оказывают «дайверы» – уникумы со способностью выходить из Глубины по собственному желанию. Лукьяненко с поразительной точностью уловил тенденции, которые лишь набирали обороты в конце 90-х: тотальное погружение в цифровое пространство, формирование онлайн-идентичностей, социальные сети в зачаточном виде, киберпреступность и цифровую валюту.

Сергей Лукьяненко «Лабиринт отражений» Обзор книг, Рецензия, Фантастика, Сергей Лукьяненко, Киберпанк, Лабиринт, Хакеры, Виртуальная реальность, Длиннопост, Лабиринт отражений

Главный герой романа, дайвер по имени Леонид, зарабатывает себе на жизнь мелкими киберпреступлениями и промышленным шпионажем. Получив задание по спасению некоего Неудачника от таинственного Человека без лица, Леонид оказывается вовлечен в многослойную интригу. На пути героя встретится множество приключений: ограбление хранилища могущественной корпорации, спасение застрявшего геймера, посещение виртуального борделя, крупномасштабный хакинг и, конечно же, встреча с настоящей любовью. Леонид получился типичным лукьяновским героем – при всей своей заявленной эгоистичности в итоге он оказывается традиционным «хорошим парнем», мало отличающимся, например, от Антона Городецкого из «Дозоров». Это не умаляет того факта, что герою легко сопереживать.

Автор отлично проработал атмосферу Диптауна – места одновременно притягательного и опасного, полного неоновых огней и глубочайших теней. Технические детали (хотя и условные) поданы убедительно, не перегружая текст, но создавая ощущение проработанности мира. Лукьяненко отлично выдерживает темп. Погони, схватки, взломы – все это создаёт непрерывное напряжение. Каждый шаг вперед сопровождается новыми загадками и угрозами. Экшен умело смешивается в нужных пропорциях с философскими размышлениями. Главная интрига также заслуживает внимания. Кто же такой Неудачник? Почему могущественные корпорации так жаждут его заполучить? И стоит ли сражаться и рисковать всем ради разгадки этой тайны?

Сергей Лукьяненко «Лабиринт отражений» Обзор книг, Рецензия, Фантастика, Сергей Лукьяненко, Киберпанк, Лабиринт, Хакеры, Виртуальная реальность, Длиннопост, Лабиринт отражений

Леонид задаётся вопросом: «Где граница между реальностью и виртуальностью?». Лукьяненко не даёт однозначного ответа, показывая, как для многих Диптаун становится подлинной реальностью со своими законами и правилами. Финал романа – это тяжёлый моральный выбор, который непросто дается главному герою.

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

Итог: Сергей Лукьяненко в «Лабиринте отражений» создал мир, который с годами стал только актуальнее. Сильные стороны романа – блестящий сеттинг Диптауна, интересный и харизматичный главный герой, напряжённый сюжет, сложные философские вопросы. Все это с лихвой перекрывает незначительные недостатки. «Лабиринт отражений» вполне заслуженно считается классикой русской фантастики и обязателен к прочтению фанатам жанра.

Так же подписываемся на мой ТГ-канал. Там ещё больше интересного!

Показать полностью 3
[моё] Обзор книг Рецензия Фантастика Сергей Лукьяненко Киберпанк Лабиринт Хакеры Виртуальная реальность Длиннопост Лабиринт отражений
247
200
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
10 дней назад

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру⁠⁠

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Осторожно: в данной серии статей я рассказываю о реверс-инжиниринге и хакинге простых кнопочных звонилок. Цель простая: расширить скудный функционал телефонов ценой до 1 000 рублей и сделать их привлекательной моддинг-платформой для самых разных гиков. Если вы когда-нибудь слышали про эльфы и патчи, и вам интересно узнать, как происходит процесс взлома и изучения прошивок, а также написания новых программ для кнопочников — приглашаю вас под кат!

❯ Предыстория

Недавно я познакомился с Ilya_ZX, человеком-легендой в моддинг сцене телефонов из нулевых. Илья рассказал мне забавную историю: ещё будучи студентом, он увидел как одногруппник играет на своём LG G1800 в легендарную мобильную игру нулевых — «Змейку». Его тогдашний Siemens A60 не умел ничего кроме игрушки Stack Attack, даже Java-игры не поддерживались, а молодому парню очень хотелось сыграть в Змейку на скучных парах!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Казалось бы, на дворе 2005 год, можно просто пойти на рынок и купить уже изрядно подешевевшую Б/У 3310 и поиграть в «трушную» змейку именно там. Но Илья был не просто студентом технаря, он с юности интересовался программированием, реверс-инжинирингом и телефонами! И он решил поспорить с одногруппником — сможет ли он реализовать Змейку на своём A60? Всего за один месяц он умудрился исследовать прошивку телефона на диковинной процессорной архитектуре, найти необходимые функции для работы с дисплеем, вводом и окнами и написать ту самую змейку. Попробуйте теперь представить лицо его одногруппника, который проиграл спор молодому реверсеру :)

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Сначала Илья написал игру на Паскале для самопального «симулятора» A60, а затем переписал её на ассемблере для C166s!

На момент написания статьи мне 23 года, я лишь чуточку старше тогдашнего Ильи. После рассказанной истории, я подумал «А чем я хуже?» и принялся реверсить прошивку бюджетного кнопочника 10-й давности - Explay B240. В прошлой статье, мы с вами проделали первые шаги по хакингу телефона: загрузка прошивки в IDA Pro и поиск системных функций, хакинг файлового менеджера для запуска программ с MicroSD-флэшки, разработка загрузчика исполняемых файлов и организация таблицы функций. В целом, это весьма неплохая поучительная статья для новичков в реверс-инжиниринге.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Однако итоговый результат в виде заливки экрана желтым цветом может показаться незначительным. Поэтому в сегодняшней статье мы с вами напишем первую действительно полезную программу!

❯ «Змейка»

Напомню, что загрузчик внешних программ работает по очень простому принципу: мы нашли в дизассемблере функцию обработки сообщений окна встроенной игры и хукнули её, дабы при открытии окна она загружала программу с MicroSD-флэшки в ОЗУ и передавала ей управление. При этом загрузчик сразу интегрирован в проводник: при запуске файла с расширением .app, патч кладет строку с абсолютным путем к нему в одну из «угнанных» глобальных переменных, открывает хукнутое окно игры, а далее бинлоадер транслирует все сообщения от ОС в загруженную программу.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Наглядная демонстрация работы

Таким образом, жизненный цикл приложений значительно упрощается по сравнению с "эльфами" на тех же Motorola и Siemens: по сути, нам остаётся лишь проинициализировать состояние программы в MSG_CREATE и освободить динамическую память в MSG_CLOSE. Читателям, которые хоть раз писали программы под Windows, такой подход может показаться очень знакомым!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для реализации змейки, нам необходимо уметь обрабатывать кнопки и рисовать что-то на дисплей. С кнопками проблем никаких не возникает: система шлёт сообщения типа MSG_KEYDOWN_KEY и MSG_KEYUP_KEY на каждое событие с клавиатурой. А вот с графикой чуточку сложнее: поскольку встроенные в прошивку функции завязаны на работу с вшитыми ресурсами, мы напишем нужные функции сами.

UI-подсистема телефона реализована по принципу «грязных зон». Вместо перерисовки всего экрана, система хранит массив с координатами прямоугольников, где что-то изменилось с момента прошлой перерисовки: это позволяет сэкономить такты процессора на тяжелых операциях по типу альфа-блендинга.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Таким образом, сначала нам нужно получить указатель на буфер кадра, затем сделать весь экран «грязным» путем отрисовки полноэкранного прямоугольника и только потом поверх него рисовать графику нашей игры. На первый взгляд листинг ниже кажется дичью, но чуток отрефакторить — и выглядит как типичный код эмбедщика!

void Paint(LoaderContext* context)
{
LcdId lcd = { 0, 0 };
uint16* fb = ((uint16*(*)(LcdId* id)) LcdGetFrameBuffer)(&lcd); // Get framebuffer for primary screen

uint16 startEnd[4] = { 0, 0, 240, 320 }; // Rect
((void(*)(LcdId* lcdId, uint32 start, uint32 end, uint16 col)) LcdDrawRectPtr)(&lcd, ((uint32*)&startEnd[0])[0], ((uint32*)&startEnd[0])[1], 0x0); // Draw fullscreen rectangle

((void(*)()) LcdUpdateRect)(); // Update rect
}

Далее я реализовал функцию для отрисовки текста на экране. Шрифты самые примитивные — 8x8, побитовые, примерно как в знакогенераторе оригинального IBM PC. Принцип отрисовки прост: каждый символ (глиф) хранится в виде 8 байт. В каждом байте один бит представляет из себя пиксель по координате Y, если он равен нулю — значит пиксель прозрачный, в обратном же случае он должен быть закрашен нужным цветом.

Алгоритм для отрисовки шрифтов выглядит так:

int LcdDrawChar(LoaderContext* context, uint16* frameBuffer, char chr, uint32 x, uint32 y, uint16 color)
{
if(x >= 0 && y >= 0 && x + FONT_WIDTH < LCD_WIDTH && y + FONT_HEIGHT < LCD_HEIGHT)
{
int i, j;
unsigned char* glyph = (unsigned char*)(GLOBAL(context) + &embedded_font[chr * 8]);

for(i = 0; i < FONT_HEIGHT; i++)
{
short* fb = &((short*)frameBuffer)[(y + i) * LCD_WIDTH + x];

for(j = 0; j < FONT_WIDTH; j++)
{
if((*glyph >> (FONT_WIDTH - j)) & 0x1)
*fb = color;

fb++;
}

glyph++;
}

return true;
}

return false;
}

void LcdDrawString(LoaderContext* context, uint16* frameBuffer, char* str, uint32 x, uint32 y, uint16 color)
{
if(x >= 0 && y >= 0)
{
unsigned int i;

for(i = 0; i < strlen(str); i++)
{
if(!LcdDrawChar(context, frameBuffer, str[i], x, y, color))
return; // Out of screen

x += FONT_WIDTH;
}
}
}

Наверняка вы заметили страшный костыль в локальной переменной glyph с арифметикой над указателями. Дело в том, что на момент написания статьи, программа представляет из себя сырую склейку секций .text, .data, .bss и .rodata, поэтому на данный момент в ней нет релокаций, которые помогли бы сделать программу перемещаемой в памяти. В arm-none-eabi все вызовы функций без явного указателя — относительные, но при этом обращения к глобальным переменным и константам (например, строковым литералам) — абсолютные. Если попытаться напрямую использовать глобальную переменную по адресу 0x18 — программа будет пытаться читать или портить память в таблице векторов прерываний, что неизбежно приведет к HardFault. Поэтому для получения настоящего адреса переменной, к ней необходимо прибавить базовый адрес загрузки программы:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Этот костыль можно избежать, если в конец программы дописать сведения о релокациях, которые можно вытянуть путем парсинга промежуточного эльфа, а при особом желании — можно сделать так, что программа сама себя будет патчить «на лету»!

Далее мы рисуем нашу строку с текстом:

LcdDrawString(context, fb, SCONST(context, "Ya lyublu AvtoVAZ"), 0, 0, 0xFFFFFF);

И получаем следующий результат:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для змейки, если она не ASCII, этого всё равно мало. Поэтому нам нужна функция для вывода картинок на дисплей. Написать загрузчик tga или bmp не составляет труда, но хотелось бы чтобы программа была самодостаточной и несла с собой все необходимые ресурсы. Поэтому для конвертации картинок я использую вот этот инструмент: выбираем файл, формат ставим в 16-бит 565 и преобразовываем в C-массив.

Процесс отрисовки изображения называется блиттингом, а его суть заключается в копировании пикселей с одной поверхности на другую. В нашем случае, исходная поверхность — само изображение, вторая — фреймбуфер. Также к пикселям могут применяться дополнительные операции: поворот и скейлинг (на фиксированные углы, либо же с аффинными преобразованиями), альфа-блендинг и колоркей.

void LcdDrawBitmap(uint16* frameBuffer, short* bitmap, uint32 width, uint32 height, uint32 x, uint32 y)
{
if(bitmap)
{
int i, j;
short* bmp = bitmap;

// Slow debug version
for(i = 0; i < height; i++)
{
for(j = 0; j < width; j++)
{
LCD_PLOT_565(clamp(x + j, 0, LCD_WIDTH), clamp(y + i, 0, LCD_HEIGHT), bmp[i * width + j]);
}
}
}
}

А отрисовать нашу картинку можно вот так:

LcdDrawBitmap(fb, (short*)(GLOBAL(context) + (uint32)&lada_bmp), LADA_WIDTH, LADA_HEIGHT, 0, 0);

Почему бы не спрятать дескриптор изображения в структуру?

Потому что в таком случае придется резолвить глобальный указатель два раза — первый раз на сам дескриптор, второй раз — на массив пикселей в дескрипторе, при всём этом необходимо необходимо будет разделить рантайм-изображения и ресурсы, что значительно переусложняет итоговую кодовую базу.

И вот наш результат. Не удивляйтесь тестовому изображению, просто я — прирожденный ТАЗовод!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Помощь

Переходим к геймплею. Сама по себе «Змейка» в реализации — простая игра, где каждый уровень представляет из себя примитивную сетку. Алгоритм работы заключается в том, что раз в n-миллисекунд вызывается один игровой тик, который двигает игрока в текущем выбранном направлении. Если в момент тика нажата одна из кнопок-стрелок — направление движения меняется — тут всё очевидно:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Сама змея представляет из себя массив сегментов, который хранит свою текущую позицию в сетке уровня:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

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

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Для того, чтобы проверить скушали ли мы яблочко — достаточно сравнить координаты головы и объекта. Если они идентичны, то прибавляем очко и переносим яблоко на другую позицию:

if(state->Segments[SEGMENT_HEAD].X == state->AppleX && state->Segments[SEGMENT_HEADER].Y == state->AppleY)
{
state->Score++;
MoveApple(state);
}

Для респавна яблочка можно использовать два подхода: параметрические таблицы с заранее прописанными координатами объекта (эдакая псевдослучайность) и обычный PRNG-генератор, который путем реверса можно найти в прошивке.

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Благодаря дипсику удалось определить, что в прошивке используется LCG. Вообще, нейронки очень сильно помогают при реверсе и могут легко анализировать стандартные алгоритмы: я тестировал от простых по типу memcpy, до относительно сложных как например программное деление по модулю и программная растеризация треугольника по Scanline-алгоритму.

unsigned int rand()
{
int v0; // r3
int v1; // r4
int v2; // r1

v0 = MEMORY[0x4710E80] - 1;
v1 = *(_DWORD *)(4 * MEMORY[0x4710E84] + 0x4710E88) + *(_DWORD *)(4 * MEMORY[0x4710E80] + 0x4710E88);
*(_DWORD *)(4 * MEMORY[0x4710E84] + 0x4710E88) = v1;
MEMORY[0x4710E80] = v0;
v2 = MEMORY[0x4710E84] - 1;
if ( v0 >= 0 )
{
--MEMORY[0x4710E84];
if ( v2 < 0 )
MEMORY[0x4710E84] = 54;
}
else
{
--MEMORY[0x4710E84];
MEMORY[0x4710E80] = 54;
}
return (unsigned int)(2 * v1) >> 1;
}

Если же голова оказывается в одном из сегментов или же за полем — игра окончена. Полный вес собранного приложения - 5 килобайт 644 байта! А ниже - демонстрация его работы:

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

❯ Заключение

Вот такой интересный моддинг бюджетного кнопочника у нас с вами сегодня получился. От слов к делу мы с вами написали первые действительно рабочие программы, которые может быть и не самые полезные, но поверьте, для гика важен сам процесс и объём получаемого от этого эндорфина...

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

Это приносит невероятное моральное наслаждение

А что ещё нужно парню в 23 года? Правильно: чтобы мотор бодро тянул любимую десятку и чтобы реверсилось всё легко и понятно! Исходный код и все что необходимо для установки бинлоадера есть в на моем гите.

А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статью) можно найти на моём YouTube канале.

Важно: друзья! Я уверен, что статью будут читать выходцы с форумов моддеров и возможно даже ребята, связанные с прошивочными боксами. Если у вас есть исходный код или объектные файлы для телефонов Siemens (S-Gold или E-Gold — не имеет значения) и вы хотели бы помочь общему моддерскому делу — напишите пожалуйста мне в Telegram. Несмотря на то, что этот код уже давно никому не нужен и E-Gold/S-Gold уже более 15 лет снят с производства, гарантирую полную анонимность и крутой контент :)

Очень важно! Разыскиваются девайсы для будущих статей!

Друзья! Если вам понравилась сегодняшняя статья про разработку эльфов, то спешу объявить: для подготовки будущих материалов с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я сейчас занимаюсь, а затем написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны на Linux (например Motorola EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E6, ZINE ZN5 и т. п., о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост
Самая сложная «Змейка»: Как я отреверсил и хакнул кнопочный телефон, чтобы написать для него классическую игру Телефон, Гаджеты, Программирование, Реверс-инжиниринг, Хакеры, Моддинг, Кастомизация, Игра змейка, Гифка, Длиннопост

А ещё я держу все свои мобилы в одной корзине при себе (в смысле, все проекты у одного облачного провайдера) — Timeweb. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Показать полностью 19
[моё] Телефон Гаджеты Программирование Реверс-инжиниринг Хакеры Моддинг Кастомизация Игра змейка Гифка Длиннопост
24
0
yablakla
yablakla
13 дней назад

Ради интереса я спросил у ИИ⁠⁠

Сколько времени понадобится на суперкомпьютере чтобы подобрать пароль на моём **** аккаунте, ИИ сказала 13,5 миллиардов лет.
Жаль хакер этого не знал и просто ответил на контрольный вопрос, за какую команду я болею...

[моё] Суперзлодеи Пароль Восстановление пароля Подбор пароля Хакеры Короткопост Текст
10
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии