Рубрика «реверс-инжиниринг» - 61

Tank! Tank! Tank! Arcade

Введение

Эта история началась практически сразу после написания статьи об исследовании аркады небезызвестной корейской компании: в аркадном автомате Tank! Tank! Tank! от Namco вышел из строя жесткий диск (что неудивительно, т.к. производитель установил в автомат не отличающиеся надежностью Seagate 7200.12), диск взяли с рабочей аркады и скопировали его через WinHex, после чего игра перестала запускаться. Предположив, что целостность диска была нарушена неосторожным нажатием клавиши в окне редактирования данных на диске в WinHex, был взят другой диск с еще одного рабочего автомата, скопирован аналогичным образом, который также перестал запускаться. Тут-то и стало понятно, что в диск каким-то образом встроена защита от копирования.
Arcade Linux ErrorЧитать полностью »

Этот пост — 5-в-1! Он затрагивает такие темы, как: генная инженерия, реверс-инжиниринг, ненормальное программирование, ностальгия по Dendy и эмуляция NES. Как же такие разные темы могли встретиться вместе? Добро пожаловать под кат!

Методы модификации машинного кода: «селекция» vs. «генная инженерия» - 1
Читать полностью »

Пациент нулевого дня - 1

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

Читать полностью »

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

Скрытый текст

Очень сильно сомневаюсь, что так может случиться на практике, но как человек, написавший в своё время определённое количество курсовых и дипломных работ, я просто не смог обойтись без секции «применение в народном хозяйстве».

Если речь идёт о браузере с открытым исходным кодом, то можно просто открыть этот код и посмотреть, какой там использован алгоритм. Однако существуют браузеры с закрытым исходным кодом (не будем показывать пальцем). Что делать в таком случае?

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

Что скрывает Array#sort: реверс-инжиниринг подручными средствами - 1

Читать полностью »

Web scraping на Node.js и защита от ботов - 1Это третья статья в цикле про создание и использование скриптов для веб-скрейпинга при помощи Node.js.

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

Также во второй статье затрагивалась тема инициализации сессий, но, там речь шла о предельно простом случае, когда достаточно выполнить один дополнительный запрос и сохранить куки.

В этой статье разбирается более сложный случай – инициализация сессий с авторизацией по логину и паролю и с преодолением довольно изощрённой защиты от ботов. Как обычно, на примере реальной (и весьма популярной среди скрейперов) задачи.

Важное примечание

В большинстве случаев защита от ботов на сайте направлена не против скрейперов, а против таких вещей, как мошенничество, накрутки или спам в комментариях. Однако это всегда лишний повод задуматься о легальности и этичности скрейпинга именно этого сайта. В этой статье для примера выбран сайт, про который хорошо известно, что его владельцы нормально относятся к скрейпингу (хотя и предпочитают, чтобы он выполнялся через специальный API). Простые правила: если у сайта есть открытый API, значит его владельцы рады скрейперам, а если сайт большой и ультрапосещаемый, нагрузка от скрейпинга в обход API его особо не побеспокоит.

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

Читать полностью »

Первый подтвержденный случай реального использования ReactOS - 1

На нашем официальном сайте еще недавно висело сообщение, что операционная система ReactOS пока не готова для повседневного использования, а образы ОС, раздаваемые с сайта, предназначены только для тестирования. Тем не менее периодически всплывали «утки», что ReactOS видели установленным на кассовых терминалах такого-то супермаркета. Однако шутки шутками, а время шло, и релизы выходили.

И вот некоторое время назад к нам обратился системный администратор одной из российских библиотек и поделился опытом реального «боевого» использования ReactOS в работе. Александр поделился с нами информацией, что смог установить и настроить сервер ИРБИС64 (библиотечный каталог книг) на компьютере под управлением ReactOS. Более того, конфигурация уже длительное время работает без серьезных сбоев и выполняет свои функции.

Читать полностью »

Для начала предыстория:

Некоторое время назад я приобрёл на Ebay б/у ноутбук Lenovo Thinkpad W520. Как известно, W-серия — это очень мощные ноутбуки, железки в которых дадут фору многим более современным машинам. Конечно же, я начал его обустраивать под себя, и, в частности, решил проапгрейдить имеющуюся память всем, что было в наличии, а в наличии было немало: 2 свободные планки DDR3-1600 из старого ноута — 4 и 8 гигабайт. Посмотрев на то, что было установлено продавцом, я обнаружил, что из 3 установленных планок 2 — DDR3-1600, а одна — 1333. Учитывая, что первые две были по 8 гигабайт, а последняя — 2 гигабайта, от неё я и решил избавиться. Рассчитывая получить после апгрейда 8+8+8+4=28 гигабайт DDR3-1600 в рабочем ноуте, я залил всё слюной и всё это быстренько подключил. И получил 28 гигабайт… DDR3-1333. «Что за...», подумал я и полез в гугл.
После непродолжительных поисков я обнаружил, что как официально, так и неофициально W520 поддерживает только DDR3-1333, а владельцы более быстрой памяти зря тратили на неё деньги. Мне стало немного обидно за всех таких владельцев, и я решил попробовать избавиться от этой несправедливости, тем более, что контроллер памяти, нынче, как известно, в процессоре, и установленный в моей модели Intel Core i7 2720QM официально поддерживает DDR3-1600.

Читать полностью »

Признаться, я играю в игры не чаще, чем пишу на хабре, но к жанру «ритмических» всегда питал некую слабость. В своё время мне очень нравилась Audiosurf, позже сталкивался с разными её клонами, Beat Hazard, osu. Ещё позже наткнулся в App Store на Deemo и Duet, от которых получил немало приятных минут.
Оживление старого кода или как сделать хорошо приложению, которому плохо - 1
Во время бесконечного бессонного вечера, блуждая в полудрёме по разным сайтам, я заметил вещицу, которая входила в круг моих интересов. Бесплатная загрузка, знакомая компания, ага, значит будет куча платного контента. С другой стороны, во что-нибудь поиграть наверняка дадут за просто так. Сделав напрашивающийся вывод, я скачал игру… и узрел девственно белый экран.

Дальнейшее изложение пойдёт не о том, какие озлобленные чувства у меня вызвала халатность издателей, потерявших код и/или забивших на обновление, а о получении желаемого в ситуации лёгкой безысходности.
Читать полностью »

Продолжаем начатое. В этот раз я расскажу о том, что содержится в полезной нагрузке кадра I/K-bus, кратенько об устройстве информационно-развлекательной системы BMW e38, e39, e46, e53, и рассмотрим подробнее работу протокола на примере чейнджера компакт-дисков.
Читать полностью »

Расширение для Chrome показывает, когда кто-то набирает текст

Шестое чувство Facebook - 1

Некоторые люди слишком много времени проводят в социальных сетях. Настолько много, что у них уже возникает зависимость. Один из таких — программист Александр Кирзенберг (Alexandre Kirszenberg), который к тому же любит копаться во внутренностях Facebook — в коде JavaScript, отвечающем за пользовательский интерфейс и коммуникации.

«Пару месяцев назад я задумался о маленьком статусном индикаторе, который показывает, когда один из ваших друзей набирает вам текст, — пишет Александр. — Такое маленькое расширение UI выдаёт много информации о собеседнике. Если индикатор несколько раз загорается и тухнет, это говорит о нерешительности. Если он загорелся надолго, кто-то пишет вам большое эссе. И нет ничего хуже того мучительного чувства, когда индикатор тухнет и больше не загорается».
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js