• Подробный разбор решения crackme01_x64

    Данная статья рассчитана на начинающих, интересующихся обратной разработкой, и имеющих базовые представления о работе ЦП, языке ассемблера. Этот crackme относительно старый и простой, но при его решении применяются в основном те же приемы, что и при решении более сложных. На просторах Сети можно найти несколько статей с его разбором такие как эта, а еще он здесь упоминается(crackme то с историей), однако те решения не такие подробные как это. В свое время мне сильно не хватало такого построчного разбора, куда можно было бы заглянуть, когда запутался и не понимаешь что делает тот или иной участок кода. Если этот пост окажется полезным хотя бы для одного человека, значит я не зря старался. Все скрины(кроме первого) кликабельны. Приятного прочтения.

    Итак, перед нами простой crackme, запустим его и посмотрим как он работает.


    Ага, все довольно просто, мы должны ввести правильный серийник. Теперь откроем программу в дизассемблере. Как правило дизассемблерные листинги, даже относительно простых программ, довольно объемны. Для определения той части кода, которая проверяет ввод серийника, найдем где в памяти программы хранится строка с сообщением об ошибке «Fail, Serial is invalid !!!» и какой код к этой строке обращается.
    Читать дальше →
    • +20
    • 3,4k
    • 3
  • Facebook или Google? Где выгоднее давать рекламу в 2017 году

      Задача простая. Доступно 2 канала привлечения посетителей: Facebook и AdWords. Туроператор с годовым бюджетом примерно $60.000 долл на оба канала.

      Владелец бизнеса спрашивает: Где выгоднее давать рекламу? Другими словами куда лучше инвестировать доллар чтобы заработать больше прибыли и заказов?

      "

      Итак по порядку.

      Часть 1. Анализируем посещаемость.
      Читать дальше →
      • +11
      • 3,7k
      • 3
    • Как написать свой первый Linux device driver. Часть 3

        Добрый вечер, хаброчитатели!

        В предыдущих статьях (один, два) мы определили понятие символьного устройства и написали простейший пример символьного драйвера. Последняя часть посвещена проверки его работоспособности. На Хабре уже есть примеры как можно протестировать драйвер, например: тык.

        Я попытаюсь рассмотреть данный вопрос чуть подробнее, надеюсь, вам понравится.


        Читать дальше →
        • +11
        • 2,1k
        • 1
      • Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ

          В предыдущих двух статьях речь шла о диаграмме состояний и переходов, используемой для описания динамических процессов в автоматном стиле, и о том, что диаграмма состояний и переходов даёт наилучшее понимание таких процессов. Также были рассмотрены базовые методы реализации автоматов, заданных диаграммой состояний, и были очерчены артефакты автоматной схемотехники, доставшиеся от неё автоматному программированию. Но, до сих пор совершенно не затронут вопрос: насколько эффективны автоматно-реализованные программы?

          Я бы сформулировал вопрос иначе: насколько эффективны автоматно-спроектированные программы? Такая формулировка вопроса намекает, что автоматное проектирование — источник высокой эффективности программ. Я ещё практически не касался столь важной темы как эффективность, и пример «Дисплей» идеально подходит для иллюстрации эффективности автоматного проектирования. В первой статье я познакомил читателей с «лабораторной» версией этого модуля, но тестировать я буду «боевой» вариант, процесс проектирования которого я приведу в следующей статье. Исследование эффективности будет выполнено для платформ msp430 и CortexM3.

          Чтобы не быть субъективным, оценивая эффективность, нужно с чем-то сравнивать результаты. Поэтому я проведу тот же комплекс испытаний для неавтоматной реализации примера «Дисплей» любезно предоставленной michael_vostrikov, за что ему огромная благодарность и плюсы в карму.

          Читать дальше →
        • UniRx — Rx для Unity3d

          Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом.

          Реактивное программирование — это всё то же самое, только на стероидах, то есть мы можем создавать потоки данных всего. И также наблюдать за ними и реагировать. Update, OnCollisionEnter, Coroutine, Event, Mouse input, Keyboard input, Joystick input — все это потоки.
          Все что нас окружает это потоки.

          image
          Читать дальше →
        • Опыт выявления одного бага или как не надо оформлять свой код

          Сразу оговорю, что ничего инновационного в статье не предлагается. Я просто описываю один небольшой случай работы с чужим кодом. Опытные разработчики, пожалуй, улыбнутся, ибо наверняка с подобным сталкивались и сами, а может и еще хуже. Тех же, для кого это всё в новинку, просьба взять на заметку, как не надо оформлять свой код, уж особенно если речь идет о публичном плагине. В статье далее описывается работа с посторонним плагином для wordpress. После моих “приключений” мне очень не хочется никаким образом упоминать название плагина, поэтому в кусках исходного кода я подменил название переменных, функций, чтобы максимально исключить возможность отсылки к плагину.
          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • Автоколебания и резонанс

          • Tutorial

          Здравствуйте!


          В связи с вопросами читателей моей публикации [1] касательно условий возбуждения автоколебаний в механической системе, я решил описать явление возникновения и поддержания автоколебаний подробно, выделив основные области возникновения и применения автоколебаний.

          В википедии автоколебания объясняют так [2]:
          Незатухающие колебания в диссипативной динамической системе с нелинейной обратной связью, поддерживающиеся за счёт энергии постоянного, то есть непериодического внешнего воздействия.

          Автоколебания отличаются от вынужденных колебаний тем, что последние вызваны периодическим внешним воздействием и происходят с частотой этого воздействия, в то время как возникновение автоколебаний и их частота определяются внутренними свойствами самой автоколебательной системы. При этом частота становится почти равной резонансной.
          Читать дальше →
        Самое читаемое