Устройство не коренится используется обратная инженерия

Устройство не коренится используется обратная инженерия

Копирование различных электронных блоков без фактической разработки. Известно, что часть советской цифровой электроники копировалась. Например, американская серия интегральных схем 74 и её советский аналог К(Р)155.

Ещё один пример обратной разработки — создание компанией AMD процессора Intel 80386.

Программное обеспечение

Исследование и обратная разработка программ обычно осуществляются с целью дальнейшей модификации, копирования, или, например, написания генераторов ключей, алгоритм работы которых получен на основе анализа алгоритма их проверки. Также исследование программ применяется с целью получения некоторых закрытых сведений о внутреннем устройстве программы — о протоколе сетевого обмена с сервером, аппаратным средством, ключом защиты или о взаимодействии с другой программой. Ещё одна область применения — получение информации о способах экспортирования данных из многочисленных проприетарных форматов файлов [1] .

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

Одним из широко известных примеров обратной разработки является исследование IBM, ставшее серьёзным шагом на пути развития производства IBM-совместимых компьютеров сторонними производителями. Создание сервера GNU/Linux и работающего с серверами на базе ОС Microsoft Windows) также потребовало обратной разработки используемого SMB.

Обратная разработка программного обеспечения производится с помощью следующих методик.

  1. Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффера для прослушивания шины компьютера и компьютерной сети соответственно.
  2. Дизассемблирование с помощью дизассемблера, при котором прямой машинный код программы читается и понимается в своём чистом виде, только с помощью мнемоник машинного языка. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
  3. Декомпиляция с помощью декомпилятора — процесс создания исходного кода на некотором языке программирования высокого уровня.

Базы данных

может использоваться при создании реляционной модели базы данных.

Промышленность

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

Военная промышленность

Самыми известными фактами обратной разработки во время второй мировой войны являлись:

  • Немецкие канистры для бензина — британские и американские войска заметили, что немцы имели очень удобные канистры. Они скопировали эти канистры, и те получили название Jerry cans (от слова «gerrys» — от «Germans»).
  • Туполев Ту-4 — некоторое количество американских бомбардировщиков B-29 при совершении вылетов в Японию были вынуждены садиться в СССР. Советские военные, которые не имели подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически полную копию.

Для анализа исходного кода

С широким применением SADT) связано возникновение основных идей популярного ныне понятия — BPR (бизнес-процесс реинжиниринг).

Существуют программы, которые предоставляют как возможность восстановления (обратный, reverse) по исходному коду общего системного проекта (классы, связь между ними и т.п.), так и прямой генерации исходного кода на основе созданного проекта (функциональных блоков бизнес-процесса):

Этичный хакинг и тестирование на проникновение, информационная безопасность

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

Кстати, как говорит Википедия:

Обратная разработка (обратное проектирование, обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого готового устройства или программы, а также документации на него с целью понять принцип его работы; например, чтобы обнаружить недокументированные возможности (в том числе программные закладки), сделать изменение или воспроизвести устройство, программу или иной объект с аналогичными функциями, но без прямого копирования.

Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Правообладатели таких объектов могут заявить, что проведение обратной разработки или использование её результатов нарушает их исключительное право по закону об авторском праве и патентному законодательству.

Читайте также:  Телевизор с bluetooth для наушников

Это перевод и автором является Jacob Pimental, но для лаконичности там, где он говорит «я», в тексте также будет говориться от первого лица, но имейте ввиду, что «я» — это Jacob Pimental.

Эта статья подразумевает, что у читателя есть хоть какие-то базовые знания в области программирования и языка Ассемблер. Если нет, то рекомендуется изучить «Введение в Ассемблер», благодаря которому многое при анализе кода и отладке программы станет намного понятнее.

Обратный инжиниринг в программном обеспечении — это возможность разобрать (дизассемблировать) программу, чтобы увидеть, как она функционирует. Реинжиниринг позволяет разбирать на части программу или программное обеспечение и пересоздавать его без даже без доступа к исходному коду. Это используется, к примеру, при анализе вредоносного ПО (Malware Analysis) для понимания, что делают куски вредоносной программы, чтобы создать идентификатор для предупреждения последующих инфицирований вашего компьютера. Это также может использоваться для исправления ошибок в старых играх, или для поиска эксплойтов в некоторых программах.

Radare2 — это инструмент, используемый в обратном инжиниринге. Он отличается от других инструментов тем, что он бесплатный, у него открыт исходный код и он использует интерфейс командной строки, а не графический. В этой статье я собираюсь провести вас по самым основам обратной инженерии: используя radare2, мы дизассемблируем программы, которые я предварительно для этого создал. Здесь вы можете загрузить эти программы, которые мы будем разбирать в этом уроке, или создать свою собственную и следовать уроку по аналогии.

Для установки Radare2 начните с проверки, возможно эта программу уже присутствует в стандартных репозиториях вашего дистрибутива.

Например, в Kali Linux эта программа не только присутствует, но и установлена по умолчанию.

В Debian и производных попробуйте выполнить установку с помощью команды:

В Arch Linux и BlackArch для установки Radare2 выполните:

Для установки Radare2 в дистрибутивы Linux, для которых она отсутствует в источниках приложений, вам нужно клонировать исходный код с GitHub и запустить файл sys/install.sh:

Теперь давайте взглянем на бинарники, которые вы загрузили ранее (или создали сами). Программа intro при запуске в консоли выводит строку “Hello World”:

Код этой программы простой:

Radare2 поставляется с очень удобным инструментом под названием rabin2. Он может использоваться для вытягивания информации из бинарника, в этой информации будут: строки, время компиляции и другая полезная информация. Я обычно использую это перед запуском любого серьёзного анализа, поэтому могу узнать в общих чертах, что программа может быть делает. Я начну с добавления флага -I. Это даст нам важную информацию о бинарнике.

Это говорит нам, что программа предназначена для работы на Linux и что она была написана на языке программирования C. Мы также можем увидеть что bintype имеет значение “elf”. Это называется «магическим числом» (“magic number”) и может нам помочь узнать, какого типа этот файл (бинарник Linux). Это всё, что нам нужно сейчас знать. Следующая команда, которую я люблю использовать, это rabin2 -z. Она выведет список всех строк из секции данных (data) этого бинарного файла. Запуском этой команды мы можем увидеть нашу строку “Hello World”:

После этого я иногда продолжаю с rabin2 -zz, которая показывает все строки в бинарнике (а не только из секции данных). Она выводит обычно довольно много строк. Иногда там имеются важные спрятанные строки, иногда — нет. В случае с разбираемой программой, там ничего интересного, поэтому мы закончили с rabin2. Другие флаги rabin2 вы можете посмотреть командой:

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

Читайте также:  Команды для консоли cmd

Поэтому теперь мы можем перейти к действительному запуску нашей программы в radare2 для просмотра кода Ассемблера. Запускаем команду:

Она загрузит наш исполнимый файл в radare2. Следующий шаг — это включить анализ двоичного файла в radare2. С помощью него найдуться такие вещи как строки, функции и другая важная информация, которую radare2 может показать нам во время анализа, то есть мы не просто пялимся в код Ассемблера. Для включения анализа, запустите команду “aa”. Это базовая команда анализа для radare2. У нас также есть “aaa” и “aaaa”, каждая анализирует больше информации, чем предыдущая. На данный момент нам достаточно просто “aa”.

Теперь наш исполнимый файл анализируется, мы можем перейти в раздел бинарника, где на самом деле размещён код. Команда “s” в radare2 используется для “seek” (поиска) места в памяти. Её можно использовать либо с действительным шестнадцатеричным адресом, или мы можем напечатать имя функции, которую надо найти. Поскольку мы знаем, что большинство программ Linux запускаются с функции “main”, мы можем поискать её:

Вы заметите, что адрес у курсора сменился с 0x00000540 на 0x0000064a. Это означает, что теперь текущим адресом является 0x0000064a и что мы в функции main. Мне нравится анализировать код в визуальном режиме radare2 (прямо сейчас мы в командном режиме). Для переключения в визуальный режим наберите “v” и нажмите Enter.

То, на что вы смотрите сейчас — это шестнадцатеричный редактор radare2 (да, у него есть всё!). Но это не обязательно код, который мы хотим видеть. Для изменения вида нажимайте “p”. Вид смениться на «вид разборки» (disassembly view) и мы сможем увидеть код ассемблера программы. Обратите внимание, что radare2 отделяет функции на небольшие типы ASCII «блоков». Код главной функции выглядит примерно так:

Теперь давайте пройдёмся по исходному коду. Поскольку этот исполнимый файл является x64 приложением, мы можем увидеть, что мы помещаем нашу строку “Hello World” в rdi по адресу памяти 0x0000064e. Затем мы вызываем функцию “sym.imp.puts” (или “puts”), которая то же самое, что и “printf”. То есть эта функция напечатает нашу строку. После этого команда “nop” делает абсолютно ничего (как команда pass в python), затем мы очищаем и завершаем функцию, используя “pop rbp” и “ret”. Поскольку наша функция закончила работу, и поскольку это главная функция, наша программа также отработала.

Даже без запуска самой программы мы можем сказать, что эта программа выводит стоку “Hello World”.

Это было очень простое применение radare2. В следующей статье мы будем использовать radare2 для «взлома» простой программы в стиле Capture the Flag (решение хакерских задач, когда доказательством достижения цели является получение специально спрятанной автором задачи информации — «Флага»)

Спасибо за чтение и счастливого ревёрсинга!

Читайте продолжние во второй части .

Если вы счастливый обладатель девайса, работающего под управлением android, то наверняка заметили, что одной из проблем является довольно существенное потребление устройством энергии аккумулятора. Часто владельцы android смартфонов и планшетов жалуются, что через некоторое (небольшое!) время после покупки, устройство стало быстро разряжаться, а зачастую пользователь видит, что уровень заряда еще 50, а то и 70%, а смартфон уже выключается. Многие думают, что дело в самой батарее и сразу бегут за новой, но часто проблема кроется вовсе не в аккумуляторе, а в самом устройстве! В этом случае с новой батареей повторится та же ситуация, что и со старой…

Калибровка батареи – что это такое и зачем нужно

Калибровка батареи – это процесс при котором вы приводите батарею в оптимальное состояние, и «заставляете» устройство корректно использовать ее заряд.

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

Читайте также:  Как узнать сервисный код домофона

Зачем и когда нужно калибровать батарею?

Первым делом, нужно убедиться, что проблема действительно есть. Поясним: если вашему устройству уже 4-5 лет и после покупки оно работало 4 дня на одном заряде, а теперь «вдруг» 2 дня, то проблемы нет. После многих циклов зарядки-разрядки аккумулятор смартфона будет терять емкость, в среднем от 4 до 20 % за каждый год службы и с этим ничего поделать нельзя.

Однако, если вы заметили, что заряд аккумулятора на уровне 50-80%, а устройство выключается или же после месяца нормальной эксплуатации аккумулятора хватает на полдня, то причины задуматься о калибровке однозначно есть.

Методы калибровки батареи

Все способы калибровки батареи устройства можно разделить на три категории:

  • С использованием специального программного обеспечения;
  • Калибровка без помощи специального софта, вручную;
  • Калибровка с использованием root-прав.

Способ первый: с использованием специального программного обеспечения

Первым делом вам нужно определить ёмкость аккумулятора устройства в мАч. Сделать это довольно легко: можно найти информацию в Интернете, прочитать на самом аккумуляторе или же в настройках устройства в пункте «Батарея».

Следующим шагом будет загрузка программы CurrentWidget: Battery Monitor.

На Android-устройства рекомендуем вам загружать приложения, игры и софт только с Play Market!

Эта программа сможет определить заряд вашего аккумулятора в мА. После этого подключайте зарядное устройство и ждите пока девайс зарядится до заявленной производителем ёмкости.

Далее зарядку отключаем и устройство перезагружаем. Таким образом вы «объясните» девайсу, каков реальный предел заряда аккумулятора.

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

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

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

Итак, сначала подключаем к устройству зарядный кабель и ждем, пока заряд аккумулятора не достигнет 100%. Далее кабель отсоединяем, а устройство выключаем и уже к выключенному девайсу опять подсоединяем зарядку. Теперь снова ждем пока на экране появится сообщение, что устройство полностью заряжено.

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

Ну а дальше опять подключаем зарядку и ждем пока будет 100%. Теперь зарядку отключаем и девайс полностью разряжаем. И опять подключаем зарядку и заряжаем до 100%.

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

Способ третий: калибровка с использованием root-прав

Обратите внимание: открытие root-прав лишает устройство гарантии и ремонтировать его в этом случае придется за свой счет!

Если все-таки решили использовать метод, предполагающий наличие root-прав, то первым делом скачайте программу Battery Calibration в Play Market.

Далее подключите зарядное устройство и зарядите аккумулятор пока индикатор не покажет 100%. Откройте Battery Calibration и сравните уровень заряда с указанной производителем емкостью батареи. Если он ниже, то продолжайте заряжать до нужного уровня.

Когда заряд аккумулятора будет совпадать с указанной производителем мощностью, нажмите кнопку «Калибровка батареи» (Battery Calibration) и перезагрузите устройство.

Итоги

За аккумулятором устройства нужно следить и реально оценивать время автономной работы девайса. Если батарее 5 лет, то потеря емкости — это норма и ничего кроме покупки новой тут не поможет. Но, если аккумулятор новый, то стоит опробовать описанные методы. Рекомендуем внимательно относится и к устройству, и к тому, что к нему подключаете – используйте только качественные зарядные устройства (в идеале исключительно комплектное), а также кабели к ним.

Ссылка на основную публикацию
Установка строго с биоса
БИОС – основа, на которой работает вся система компьютера. Именно с его помощью осуществляется выполнение ввода или вывода информации, а...
Уровень интенсивности в дб формула
Очень часто новички сталкивается с таким понятием, как децибел. Многие из них интуитивно догадываются, что это такое, но у большинства...
Усилитель wifi сигнала для роутера какой выбрать
Привет! Поговорим сегодня про усилители Wi-Fi сигнала. Переезд столкнул меня лицом к лицу с новой проблемой – площадь увеличилась, а...
Установка тахометра на дизель
И так…тахометр для дизеля …мечта многих владельцев старых тарахтелок в большинстве которых тахометра просто не было с завода…В старых дизельных...
Adblock detector