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

Привет! В момент разгара битвы бабла со злом, мы объявляем о выпуске очередной версии нашей операционной системы. Совпадение? Не думаем!

В этом выпуске — поддержка новых API, возвращение доктора Ватсона, баги с фантастическими историями.

ReactOS 0.4.8: Мы переманили доктора Ватсона - 1

Скачать установочные образы | Пресс–релиз | Список изменений | TL;DR | Тесты и список регрессий
Читать полностью »

Существует несколько серий статей про программирование под NES, одна из них уже даже переведена на русский язык на хабре. Однако ни одна из них не заходит дальше обзора базовых возможностей консоли – рассматривается общая архитектура консоли, основы ассемблера, вкратце рассказывается, как выводить спрайты на экран, упоминается что-то о музыке и мапперах, и цикл заканчивается.

Я попробую продолжить рассказ о выводе графике игр для NES с того места, на котором заканчиваются другие туториалы. Разбираться самому, как программировать эффекты анимации, достаточно сложно, ввиду небольшого количества информации об этом, как на русском, так и на английском языке. Но не стоит расстраиваться, ведь в качестве документации можно использовать код из классических игр, которые сейчас легко найти в сети в виде ROM-файлов.

Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.Читать полностью »

Реверсим «Нейроманта». Часть 1: Спрайты - 1

Так вышло, что я большой поклонник творчества Уильяма Гибсона. Моё знакомство с этим замечательным прозаиком случилось вследствие глубокого увлечения эстетикой киберпанка и последующего обращения к "корням" жанра, отцом-основателям которого считают Гибсона (пусть сам он от этого всячески открещивается). Трилогией "Киберпространство" (Sprawl trilogy, 1984-1988), а именно открывающим трилогию романом "Нейромант" (Neuromancer, 1984), Гибсон популяризовал идеи киберпространства, виртуальной реальности и всемирной компьютерной сети (непосредственно термин "киберпространство" был изобретён самим же автором и впервые ведён в рассказе "Сожжение Хром" (Burning Chrome, 1982), однако широкое распространение термин получил лишь после публикации "Нейроманта"). Помимо очевидного влияния на поп-культуру (Sonic Youth, U2, Ghost in the Shell, The Matrix, Deus Ex, Shadowrun и ещё множество тайтлов, так или иначе испытавших влияние автора), существует мнение о менее очевидном влиянии Гибсона на сферу информационных технологий. В предисловии к юбилейному изданию "Нейроманта" американский писатель-фантаст Джек Уомак задаётся вопросом:

Может ли быть так, что видение Гибсоном глобального информационного пространства в конечном счёте стало причиной, по которой Интернет сегодня выглядит так, как он выглядит, и работает так, как он работает?

Я склоняюсь к положительному ответу на этот вопрос.

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

image

Примечание: В оригинале статьи есть демо на WebGL2, которые в переводе заменены на видео и GIF.

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

Недавно я расширил возможности моего приложения просмотра игровых моделей на основе WebGL, добавив поддержку некоторых игр с Nintendo GameCube, в том числе The Legend of Zelda: The Wind Waker и Super Mario Sunshine. В GameCube, если вы не знаете, установлен передовой, почти программируемый видеопроцессор, но с фиксированным функционалом. Разработчики не могли писать шейдеры, и вместо этого программировали наборы комбинаторов текстур способом, похожим на использованные в конвейерах glTexEnv, но доведённым до максимума возможностей.Читать полностью »

Ускорение перечисления процессов и потоков в ОС Windows - 1Иногда бывает нужно перечислить все процессы или потоки, которые в данный момент работают в ОС Windows. Это может понадобиться по разным причинам. Возможно, мы пишем системную утилиту вроде Process Hacker, а может быть мы хотим как-то реагировать на запуск/остановку новых процессов или потоков (писать лог, проверять их, внедрять в них свой код). Самым правильным способом это реализовать является, конечно же, написание драйвера. Там всё просто — используем PsSetCreateProcessNotifyRoutine и PsSetCreateThreadNotifyRoutine для установки колбек-функций, которые будут вызываться при запуске/остановке процессов и потоков. Работает очень быстро и не ест ресурсы. Именно так и делают все серьёзные инструменты. Но разрабатывать драйвера — не всегда подходящий способ. Их нужно уметь правильно писать, их с недавних пор обязательно нужно подписывать сертификатами (что не бесплатно) и регистрировать в Microsoft (что не быстро). И ещё их не удобно распространять — например, программы с ними нельзя выкладывать в Microsoft Store.

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

Самая большая проблема здесь — это производительность. Связка CreateToolhelp32Snapshot() + Process32First() + Process32Next() работает ну очень медленно. Возможно, проблема лежит где-то в той же области, что и описанная вот в этой статье проблема с Heap32First() + Heap32Next(). Кратко — в силу исторических причин кое-где проход по линейному списку занимает квадратичное время.

Можно ли как-то всё это ускорить? Можно. Но придётся сойти со светлого пути использования одних лишь публичных функций WinAPI.
Читать полностью »

Triton vs Kao’s Toy Project. Продолжаем хорошую традицию - 1

В данной статье речь пойдет про SMT-решатели. Так сложилось, что в исследовательских материалах, посвященных данной теме, появилась хорошая традиция. Уже несколько раз в качестве подопытного алгоритма для SMT-решателей разные исследователи выбирали один и тот же пример – крякми, придуманное некогда человеком с ником kao. Что ж, продолжим эту традицию и попробуем использовать для решения этого крякми еще один инструмент для символьных вычислений – Triton.

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

NeoQuest 2018: Читерство да и только - 1

Всем доброго времени суток. На прошлой неделе закончился очередной очный этап NeoQuest. А значит пришло время публиковать разбор некоторых заданий. Знаю многие ждали этого разбора, поэтому всех интересующихся прошу под кат.Читать полностью »

Microsoft Money имеет давнюю историю.
Начиная с первой версии вышедшей в 1991 году Windows 3.0 и заканчивая версией Plus 2007 года Money была удобным инструментом для управления личными финансами.

Помимо обычного ведения счетов Money предлагала и развитые online-сервисы.
Их можно разделить на три составляющие:

1) Получение данных о котировках и конвертации валют.
2) Синхронизация данных о счетах, как теперь модно говорить, с облаком.
3) Работа с online-банкингом, в том числе оплата счетов через протокол OFX.

К сожалению, в 2011 году Microsoft поддержав моду на закрытие сервисов, закрыла online-сервис MSN Money, и первые две функции перестали работать.
А вышедшая в 2010 году бесплатная версия Money Plus Sunset уже не содержала поддержку online-функций став простым инструментом для offline-ведения счетов.

Я пользуюсь Microsoft Money 2004 Standard начиная с 2006 года.
За это время были и попытки уйти на другие программы или online-сервисы, но тем не менее Money оказывалась удобней. Но вот не работающие функции откровенно расстраивали. И если online-банкинг в нашей стране бесполезен, т.к. насколько мне известно, даже ни один из крупных банков не поддерживает работу через OFX для частных лиц, то данных о обменных курсах очень не хватало. А уж online-синхронизация после работы с одним online-сервисом вообще была мечтой.

Сообществом было создано несколько инструментов разной степени костыльности, но они имеют один фатальный недостаток: они не интегрируются в Money и требуют ручного труда для получения результатов.

Ну а так как чуда ждать не приходилось, то воплощение мечты в реальность
является делом рук самих мечтающих.
Читать полностью »

image

Здравствуйте, хабро-дамы и хабро-господа!

Recently попался мне случайно на глаза один эпизод из недавно модного сериала «Мистер Робот». Не будучи сильно знакомым с проектом, я всё же знал о связанной с ним массивной пиар-компании (которая вроде как даже проводила нечто вроде ARG-мероприятий), поэтому когда я услышал условие занимательного CTF-таска (из жанра bin/exploitation), представленного в сюжете одной из серий, я подумал, что скорее всего, этот таск существовал в действительности. Обратившись ко всемирной паутине, я подтвердил своё предположение, и, так как задача не очень сложная (не успеет наскучить в рамках одной хабр-статьи), но крайне оригинальная и интересная, сегодня займемся её разбором.
Cut, cut, cut!
Читать полностью »

image

Привет!
Спешим сообщить, что операционная система ReactOS уже третий год подряд получает слот на Google Summer of Code!
В случае успешной сдачи работы участник Google Summer of Code получит 2 400 евро.

Кто может участвовать?

Участвовать могут любые студенты и аспиранты (т.к. в юрисдикции США аспиранты считаются PhD Students).

Что надо сделать, чтобы участвовать?

  1. Зарегистрироваться на https://summerofcode.withgoogle.com/;
  2. Выбрать вариант участия как студент;
  3. Выбрать ReactOS как проект участия;
  4. Описать в свободной форме то, что вы хотите сделать для проекта;
  5. Подписаться на почтовую рассылку разработчиков и продублировать туда текст из пункта 4;
  6. Обговорить в IRC свое участие;
  7. Взять в вашем учебном заведении Proof of Enrollment – бумагу, которая подтверждает, что вы являетесь студентом (или аспирантом) этого учебного заведения на срок Google Summer of Code.

Поторопитесь! Подача заявок закончится 27 марта!

Возможные идеи для участия – под катом.

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


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