Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Максимальное количество значений в enum Часть II

Ненормальное программированиеJava
Recovery mode
Часть первая, теоретическая | Часть вторая, практическая



Продолжаем поиск максимального возможного количества значений в перечислении.
На этот раз сосредоточимся на практической стороне вопроса и посмотрим, как на наши достижения будут реагировать IDE, компилятор и JVM.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры2.5K
Комментарии 7

Что делать, если поймал HardFault?

Программирование микроконтроллеров
Tutorial
Что делать, если поймал HardFault? Как понять, каким событием он был вызван? Как определить строчку кода, которая привела к этому? Давайте разбираться.

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

В данной статье я хочу описать методику анализа тяжелых отказов популярных микроконтроллеров с ядром Cortex M3/M4. Хотя, пожалуй, «методика» — слишком громкое слово. Скорее, я просто разберу на примере то, как я анализирую возникновение тяжелых отказов, и покажу, что можно сделать в подобной ситуации. Я буду использовать программное обеспечение от IAR и отладочную плату STM32F4DISCOVERY, так как эти инструменты есть у многих начинающих программистов. Однако это совершенно не принципиально, данный пример можно адаптировать под любой процессор семейства и любую среду разработки.


Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Просмотры9.7K
Комментарии 10

Как безопасники боролись с мамонтами, или ИТ- и ИБ 25 лет назад и сейчас

Блог компании SearchInformИнформационная безопасностьИстория ITИнтервьюIT-компании
Recovery mode
В июне нашей команде и компании исполнилось 25 лет. В юбилей принято вспоминать былое, делать выводы и строить планы на будущее. Но делать стандартное интервью нам не хотелось. Хотелось, чтобы получился разговор двух людей, которые знают сферу ИТ, могут вспомнить «олдскульные ИБ-истории» и поспорить на тему «а вот если бы «ось пополам» обогнала в свое время майкрософт…»

Захотели – сделали. Алексей Дрозд (aka @Labyrinth) поговорил с Львом Матвеевым, инженером-программистом в прошлом, основателем и владельцем компании «СёрчИнформ» в настоящем. Разговор получился о том, как зарождалась ИТ-отрасль на постсоветском пространстве, чем нынешние программисты отличаются от «вчерашних», о поводах для гордости и уроках неудач.

Текст большой, но да пусть вас это не напугает. Для пугливых – ориентируйтесь на заголовки.

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры4.4K
Комментарии 0

Эмоциональная история процессоров: IBM/370

AssemblerКомпьютерное железоИстория ITСтарое железоПроцессоры
В первой части были описаны многие разные процессоры до середины 90-х. Для мейнфреймов IBM там места не нашлось, так как эти системы долгое время не использовали процессоры-чипы. Однако, мейнфреймы IBM тесно связаны с другими компьютерными системами, долгое время являясь одними из лучших образцов компьютерной техники, на которые так или иначе ориентировались практически все. Кстати, формат хабр-блога, как и Википедии, позволяет редактирование, что позволило значительно переработать содержимое первой части с учетом поступивших замечаний и прочей дополнительной информации.

В этой части главное внимание уделяется сравнению машинного языка мейнфреймов с другими системами, которые были популярны в период с 70-х по 90-е. Это прежде всего x86, 68k, VAX и ARM. Системы 390 и, в особенности, Z рассматриваются очень фрагментарно – основное внимание уделяется именно системе 370.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры7.3K
Комментарии 42

Пишем интерпретатор BASIC в стиле 80-х

Блог компании VDSina.ruJavaScriptПрограммированиеИстория IT
Перевод


В течение нескольких лет я работала над личным проектом создания (а на самом деле исследования) «фальшивого эмулятора», то есть написанного на JavaScript эмулятора никогда не существовавшего компьютера. Эта машина должна была стать данью памяти восьми- и шестнадцатибитным компьютерам 1980-х и 90-х.

Однако мне нравятся сложности: в этой машине ещё и использовался новый набор инструкций. Он похож на наборы, применявшиеся в ту эпоху, но немного проще в работе. Так родился Retroputer. В течение нескольких лет эмулятор расширял свои возможности и совершенствовался, но, скорее всего, он никогда не будет «закончен» (в конце концов, это ведь личный проект-исследование).

Когда появился @bbcmicrobot, я захотела создать нечто подобное для Retroputer. Мои навыки разработки на JS в основном ограничивались фронтендом, поэтому это будет отличным поводом получить опыт бэкенда. Только есть одна проблема: Retroputer может понимать только собственный язык ассемблера. Пока у него нет поддержки BASIC.

Так я и пришла к созданию интерпретатора BASIC в стиле 80-х, то есть полностью на языке ассемблера, как его тогда и писали. Я решила, что стоит поделиться своей работой, потому что нам не часто приходится погружаться в области, столь далёкие от привычных абстракций. Мой повседневный инструмент (JavaScript) делает многие аспекты тривиальными, и иногда это даже кажется магией. Понимание самого нижнего уровня процессов часто помогает в понимании этих абстракций.

Итак, давайте приступим.
Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры7.5K
Комментарии 5

Создаем EXE

Разработка под Windows
Из песочницы
Самоизоляция это отличное время приступить к тому, что требует много времени и сил. Поэтому я решил заняться тем, чем всегда хотел — написать свой компилятор.

Сейчас он способен собрать Hello World, но в этой статье я хочу рассказать не про парсинг и внутреннее устройство компилятора, а про такую важную часть как побайтовая сборка exe файла.
Читать дальше →
Всего голосов 96: ↑95 и ↓1 +94
Просмотры34.6K
Комментарии 48

Эмулятор RFID

Блог компании RUVDS.comНенормальное программированиеПрограммирование микроконтроллеровСхемотехникаDIY или Сделай сам
🔥 Технотекст 2020

Эмулятор карт EM Marine



Наверняка каждому из нас, кто хоть раз бывал в обычных офисах, было интересно, как же функционируют эти бесконтактные пропуска. В данной статье мы разберёмся с принципом работы бесконтактных карт и сделаем эмулятор буквально из трёх радиодеталей.
Читать дальше →
Всего голосов 172: ↑168 и ↓4 +164
Просмотры48.1K
Комментарии 91

Приключение чисел в ASCII-ландии. Часть 0x01u. Беззнаковые целые числа

Ненормальное программированиеПрограммированиеАлгоритмы


Думаю, с переводом чисел в ASCII строки в своей жизни сталкивался каждый программист. В свое время для меня было удивительно узнать, что перевод десятичной цифры в равнозначный ASCII символ – операция сложения. С этим знанием я ложился спать, и с этим же знанием я бодро просыпался утром. Но однажды я задал себе вопрос – а как переводятся числа с плавающей запятой: Float или Double!? С этого момента, сна в моей жизни, а тем более крепкого и спокойного – стало меньше. Уверен, не я один задавался этим вопросом, и более того, не я один нашел ответ на оный. Но я думаю, есть те, кто заблудился, те, кто до сих пор неровно дышит от полного непонимания, что же происходит под капотом этих ваших трансляторов, компиляторов и прочего-прочего. Более того, не только полное отсутствие знаний в трансляции чисел нарушало мое психическое равновесие: люди, услышавшие мои душевные страдания, кидали сомнения в нужности и полезности этого знания. Мне говорили так: “Ну раскроешь ты завесу тайны, а дальше то что?! Напишешь свой велосипед, который будет работать в сто раз медленнее?! Иди ка ты, Ваня, асфальт укладывай, а мы тут великим займемся – вон, JSON пришел, надо еще подумать, как его переложить...”. Я же, парировал: “Нет, я напишу мотоцикл! Он будет быстр как Ямаха, а его рев будет устрашать даже матерых программистов!”.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Просмотры5.2K
Комментарии 17

Пишем шеллкод под Windows на ассемблере

Информационная безопасностьAssemblerРеверс-инжинирингРазработка под Windows
image

В этой статье я хочу показать и подробно объяснить пример создания шеллкода на ассемблере в ОС Windows 7 x86. Не смотря на солидный возраст данной темы, она остаётся актуальной и по сей день: это стартовая точка в написании своих шеллкодов, эксплуатации переполнений буферов, обфускации шеллкодов для сокрытия их от антивирусов, внедрения кода в исполняемый файл (PE Backdooring). В качестве примера я выбрал TCP bind shellcode, т.к. на мой взгляд — это лучший пример, потому что все остальные базовые шеллкоды имеют много общего с ним. Статья будет полезна для специалистов по информационной безопасности, пентестеров, начинающих реверс-инженеров и всем, кто желает разобраться в базовых принципах работы ОС Windows. Плюсом — улучшаются навыки программирования.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры9.2K
Комментарии 20

Вскрытие покажет: Решаем лёгкий crackme и пишем генератор ключа

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

На просторах сети найден был наш подопытный. Это сrackme. Естественно, что необходимо изучить его. Для вскрытия нам понадобиться:

  • Немного языка Assembler
  • Логика вместе с отладчиком (IDA PRO)

Лекарство изготовим из яда австралийской змеи с помощью Python. Не будем терять времени.

image

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры4.8K
Комментарии 3

Excel как транслятор в ассемблер AVR

Блог компании DirectumНенормальное программированиеAssemblerПрограммирование микроконтроллеров

Предпосылки


Ряд статей (раз, два, три) навел на мысли о том, что Excel можно использовать как транслятор в ассемблерный код AVR.
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Просмотры7.9K
Комментарии 21

Дизассемблируем циклы, написанные на Си

AssemblerОтладкаCРеверс-инжиниринг
Tutorial

Доброго времени суток.

Сегодня мы будем смотреть дизассемблированный код инструкций if, for, while, swich, которые написаны на языке Си. Воспользуемся radare2.

Дизассемблировать код
Всего голосов 10: ↑9 и ↓1 +8
Просмотры7.2K
Комментарии 19

TreeOS. 16-битная рождественская демка в загрузочном секторе

Блог компании RUVDS.comНенормальное программированиеAssemblerДемосцена


В преддверии Нового Года бороздил просторы сети, и нашёл замечательную демку на ассемблере рисования новогодней ёлки. Демка не простая, а золотая, написана таким образом, чтобы работала в загрузочном секторе диска, фактически микрооперационная система, если её так можно назвать. Из-за большой любви к Новому Году и ассемблеру, решил таки её немного разобрать, и восхититься мастерством автора. Итак, поехали.
Читать дальше →
Всего голосов 41: ↑39 и ↓2 +37
Просмотры5.9K
Комментарии 11

Пишем загрузчик на Ассемблере и С. Часть 2

Блог компании RUVDS.com
Перевод
Tutorial

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

Здесь я ограничусь написанием программы на ассемблере и ее копированием в загрузочный сектор образа дискеты 3.5”, после чего мы, как и в прошлой статье, протестируем записанный загрузочный код при помощи эмулятора bochs. Для реализации этих задач я задействую службы BIOS, что позволит нам лучше понять их функционирование и более уверенно работать в реальном режиме (Real Mode).
Читать дальше →
Всего голосов 43: ↑42 и ↓1 +41
Просмотры7K
Комментарии 20

Редактор ассемблера для ARM микроконтроллеров для компилятора gnu as. Старт

AssemblerПрограммирование микроконтроллеров

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

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

Если у вас такой опыт был - то вы уже понимаете о чем я пишу и что меня в итоге побудило к написанию редактора более приспособленного к реальным нуждам.

добавлено по пожеланиям из комментариев: платформа запуска приложения Windows

Дальше очень много картинок!

Читать далее
Всего голосов 36: ↑35 и ↓1 +34
Просмотры4.2K
Комментарии 26

Assembler Editor Plus: Установка

AssemblerПрограммирование микроконтроллеров

Продолжение цикла статей.

Предыдущая статья: Редактор ассемблера для ARM микроконтроллеров для компилятора gnu as. Старт

Внимание! далее много картинок.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Просмотры2.6K
Комментарии 0

Assembler Editor Plus: Использование модулей

AssemblerПрограммирование микроконтроллеров

Продолжение цикла статей про редактор ассемблера для ARM микроконтроллеров под компилятор GNU AS

предыдущая статья Assembler Editor Plus: Первый проект

под катом будет скорее всего много картинок!

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры923
Комментарии 1

Assembler Editor Plus: Добавление нового микроконтроллера

AssemblerПрограммирование микроконтроллеров

Эта статья немного забегает вперед, и поясняет каким образом можно добавить настройки в редактор для других ARM микроконтроллеров.

Дальше будет много картинок.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры1.5K
Комментарии 0