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

Автор: admin от 18-11-2017, 22:00, посмотрело: 41

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

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

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

Ага, все довольно просто, мы должны ввести правильный серийник. Теперь откроем программу в дизассемблере. Как правило дизассемблерные листинги, даже относительно простых программ, довольно объемны. Для определения той части кода, которая проверяет ввод серийника, найдем где в памяти программы хранится строка с сообщением об ошибке «Fail, Serial is invalid !!!» и какой код к этой строке обращается.

Категория: Программирование

 

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

Автор: admin от 18-11-2017, 22:00, посмотрело: 26

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

Категория: Программирование

 

Паттерн Model-Update-View и зависимые типы

Автор: admin от 18-11-2017, 12:20, посмотрело: 39

Паттерн Model-Update-View и зависимые типы


Model-Updater-View — функциональный паттерн, успешно применяемый в языке Elm в основном для разработки пользовательских интерфейсов. Что бы им воспользоваться надо создать тип Model, представляющий полное состояние программы, тип Message, описывающий события внешней среды, на которые программа должна реагировать, меняя свое состояние, функцию updater, которая из старого состояния и сообщения создает новое состояние прораммы и функции view, которая вычисляет по состоянию программы требуемые воздействия на внешнюю среду, которые порождают события типа Message. Паттерн очень удобный, но у него есть маленький недостаток — он не позволяет описать какие события имеют смысл для конкретных состояний программы.



Схожая проблема возникает (и решается) и при использовании ОО-паттерна State.



Язык Elm простой, но очень строгий — он проверяет, что функция updater хоть как-то обрабатывает все возможные сочетания модели-состояние и сообщения-события. По этому приходится писать лишний, пусть и тривиальный — как правило оставляющий модель без изменений, код. Я хочу продемонстрировать, как этого можно избежать в более сложных языках — Idris, Scala, C++ и Haskell.

Категория: Программирование

 

Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ

Автор: admin от 18-11-2017, 12:20, посмотрело: 44

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

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

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

Категория: Программирование

 

Советы самому себе в молодости (дизайнерская версия)

Автор: admin от 18-11-2017, 12:20, посмотрело: 31

Советы самому себе в молодости (дизайнерская версия)




Я переехал в Сан-Франциско в 2013 году будучи младшим дизайнером с довольно небольшим опытом и огромным желанием с головой окунуться в мир дизайна. Я много что испытал за последние 4 года — и мне все еще нужно многому учиться как дизайнеру и профессионалу в своей области — я решил записать некоторые из самых больших уроков, которые я хотел бы преподнести себе из прошлого, в то время, когда я только переехал в Сан-Франциско



Найдите наставников для всего



Идеальный наставник, который научит вас всему необходимому для успешной карьеры, это довольно редкий случай. Когда я наконец отрекся от этого воображаемого образа идеального наставника, я стал видеть учителей повсюду в своем окружении. Каждый человек, которого ты встречаешь, может тебя чему-то научить. Некоторые из моих лучших наставников ничего не знали о дизайне, но помогли мне лучшим образом общаться, подавать себя и быть лидером. Директор по маркетингу на одном из моих первых рабочих мест был замечательным наставником. Он никак не был связан с дизайном, но он научил меня многому касающемуся общения и немедленному фидбэку. Марк научил меня ценности вопросов и стремления понять.



Найти наставника нужно не для того, чтобы научится всему в короткие сроки, это должно быть двустороннее взаимодействие.

Категория: Программирование » Веб-разработка

 

Learnopengl. Урок 4.1 — Тест глубины

Автор: admin от 18-11-2017, 12:20, посмотрело: 25

Learnopengl. Урок 4.1 — Тест глубины

Буфер глубины



В уроке, посвящённом системам координат, мы выполнили рендер трехмерного контейнера с использованием буфера глубины, что позволило предотвратить ошибочный вывод граней, находящихся позади других. В этом уроке мы пристальнее взглянем на буфер глубины (или z-буфер) и хранимые в нем значения, а также узнаем как конкретно проходит проверка находится ли фрагмент позади других.



Категория: Программирование » Веб-разработка

 

Настройка Minio и Nginx для RoR приложения

Автор: admin от 18-11-2017, 12:20, посмотрело: 72

Minio — что это



Minio это простое, быстрое и совместимое с AWS S3 хранилище объектов. Minio создан для размещения неструктурированных данных, таких как фотографии, видеозаписи, файлы журналов, резервные копии, а также образы виртуальных машин и контейнеров. Небольшой размер позволяет включать его в состав стека приложений, аналогичного Node.js, Redis и MySQL. В minio также поддерживается распределенный режим (distributed mode), который предоставляет возможность подключения к одному серверу хранения объектов множества дисков, в том числе расположенных на разных машинах.

Категория: Программирование » Веб-разработка

 

Компьютерное зрение, разработка облака и конкурс

Автор: admin от 17-11-2017, 21:30, посмотрело: 33

Компьютерное зрение, разработка облака и конкурс



Внезапная лошадь из работы «Spatial Memory for Context Reasoning in Object Detection» (представлена на ICCV 2017)



У нас есть несколько новостей, но скучно писать просто о конкурсе, в котором можно выиграть камеру для дома или о вакансии нашей облачной команды. Поэтому начнем мы с информации, которая будет интересна всем (ок, почти всем – речь пойдет о видеоаналитике).



Недавно завершилась крупнейшая конференция по технологиям компьютерного зрения – International Conference on Computer Vision 2017. На ней команды ученых и представители исследовательских подразделений различных корпораций представили разработки по улучшению фото, генерации изображений по описанию, заглядыванию за угол с помощью анализа света, etc. Мы расскажем о нескольких интересных решениях, которые могут найти применение в области видеонаблюдения.

Категория: Программирование » Веб-разработка

 

Итоги хакатона HR-hack

Автор: admin от 17-11-2017, 21:30, посмотрело: 38

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



Итоги хакатона HR-hack



13-го ноября были подведены итоги, и мы хотим поделиться ими с вами.

Категория: Программирование » Веб-разработка

 

Базовые станции: как все начиналось

Автор: admin от 17-11-2017, 21:30, посмотрело: 25

Первые ископаемые останки базовых станций семейства мобильных телесистем московского региона датируются 1994 годом. Это были настоящие динозавры – огромные и с маленьким объемом головного мозга функционала. Внешне они походили на большой холодильник, работали только в одном стандарте и в одном частотном диапазоне. Первая базовая станция МТС в Москве работала в стандарте GSM и только в диапазоне частот 900 МГц.



Базовые станции: как все начиналось

Категория: Программирование » Веб-разработка