Реверс инжиниринг что это

Реверс инжиниринг что это

Реверс-инжиниринг — инструмент для импортозамещения

Реверс-инжиниринг — понятие, задачи.

Реверс-инжиниринг — он же обратное проектирование, он же — обратный инжиниринг — процесс разработки конструкторской документации (КД) на основе исходных данных, полученных в виде готового образца изделия. То есть КД не разрабатывается с нуля, а восстанавливается по образцу путём снятия с него размеров и изучения других его параметров.

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

Реверс инжиниринг что это

Этапы обратного инжиниринга

Вкратце, основные этапы данного типа работы:

Наглядно эти этапы представлены на изображении.

Реверс инжиниринг что это

Покупка готовых деталей VS Реверс деталей

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

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

С другой стороны, у закупки есть ряд существенных минусов, которые стали особенно актуальны на текущий момент в свете распространения санкций от иностранных компаний и не только. К ним относятся:

Зависеть от ограничений и сторонних разрешений не хочется никому. Тем более, когда на кону финансовая стабильность предприятия.

Поэтому тренд сегодняшнего дня и один из эффективных инструментов решения этого вопроса — реверс-инжиниринг. За март количество запросов на эту услугу у нас выросло в 2 раза.

Реверс инжиниринг что это

Преимущества реверс-инжиниринга

Реверс инжиниринг что это

Помимо этих моментов, реверс даёт не такие очевидные плюсы и возможности:

Реверс инжиниринг что это

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

Если уже решали вопросы таким способом поделитесь результатами. Это всегда ценно.

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

Источник

Reverse Engineering

I wanna dig inside to find a little bit of me

Reverse Engineering (ревёрсинг, обратная разработка) — процесс пизженья восстановления исходников из конечного продукта инженерной и/или научной деятельности, интуитивно конструируя внутреннюю механику по принципу «а какие процессы должны вызвать такое вот внешнее поведение этого продукта?». Ориентируясь на нюх, так сказать. Иногда приводит к написанию собственного сорца али моделированию/разводке/пайке железячного аналога. Много их — ибо ваистену…

Содержание

В общих чертах [ править ]

Реверс инжиниринг что это

Возможно, все мы в детстве сломали немало игрушек пытаясь понять «как оно там устроено». С возрастом это проходит. Но не у всех.

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

Software Реверсинг [ править ]

Реверсинг ПО — восстановление принципов/идей/алгоритмов работы программы для исследования и/или создания аналогичного ПО. Часто применяется для:

Не следует путать взлом ПО с его реверсингом: для взлома достаточно разобрать принцип работы лицензионной проверки, а реверсинг — это полный разбор программы по кирпичикам и раскладывание своего мозга по уровню кошерности.

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

Hardware Реверсинг [ править ]

Реверс инжиниринг что это

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

Любой разработчик и производитель имеет свою лабораторию анализа отказов для настоящего чип-реверсинга. Вот, например, фотоотчёт о лаборатории Atmel.

В той стране от безысходности вообще было принято решение об отказе от разработки собственных чипов. Копипиздинг топологии ИМС был поставлен на широкую ногу.

Инструменты [ править ]

Дизассемблеры [ править ]

Дизассемблер — это утилита, преобразующая бинарный код в ассемблерный листинг. В простейших случаях этого вполне достаточно, и остаётся немного покурить и найти то, что нужно. В худших — это каша, и без скриптов и/или отладчика не обойтись.

Hiew (Hacker’s viewer). Небольшая утилита, для нормальных людей бесполезная, юзают лишь надрочившиеся спецы, иногда — продвинутые пользователи (как шестнадцатеричный редактор). Давно существует куча GUI-шных тулзов для тех же целей, но по славной традиции тулзу продолжают использовать…

Архив даташитов и документация [ править ]

Без этих вещей вы никогда не узнаете, что процессор Nippon-Denso NP648976 на самом деле жалкий клон Motorola 6803 с 16К ROM на борту. А когда узнаете, поймёте, что япошки никогда ничего сами не придумывали, а только умело пиздили.

Отладчики [ править ]

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

Реверс инжиниринг что это

Реверс инжиниринг что это

IDA [ править ]

Основной дизассемблер на сегодняшний день. Обладает множеством функций типа поддержки скриптов, графического режима или встроенных плагинов вплоть до эмулятора x86. Не тупой интерфейс — множество интуитивно понятных «горячих» клавиш и т. п. Проекту уже лет 15, и он единственный из дизассемблеров живёт активной жизнью и поныне: у других в новых версиях фичи почти не родятся. До сих пор таскает с собой DOS-GUI версию для олдфагов. Также известен нефиговой ценовой политикой.

Остановимся на втором пункте подробнее.

А среди «неофициальных» юзеров Ильфак нелюбим за то, что без спроса берёт идеи. За счёт того, что IDA поставляется с SDK, юзеры могут делать свои плагины к IDA, и таки делают немало. Плагины пишутся как для того, чтобы исправить баги оригинальной функциональности, так и ради добавления своих фич для решения конкретных задач. Уровень альтруизма среди «неофициальных» юзеров высок, и исходники плагинов выкладываются на всеобщее обозрение. Так вот, примерно через полгода после появления полезных исходников это становится фичей IDA. У Ильфака на этот счёт железное алиби: «То, что тут придумали — это не новая идея, это меня пользователи попросили ещё год назад».

Вначале народная ненависть выливалась в троллинг на форуме официального русского сайта. Но потом всё быстро утихло, ибо Ильфак анально отгородил форум официальных юзеров, а с неофициальными общаться перестал. Посему примерно раз в год то китайцы, то албанцы, то русские (был интересный случай, когда народ скидывался на руборде, чтобы купить одну копию и поделиться), то немцы тырят с тренингов, кардят, хачат сервера с IDA и коммуниздят очередную версию. Чем каждый раз нереально доставляют целевой аудитории IDA. А официальные юзеры потом смотрят в закрытые форумы поддержки и скидывают цитаты баттхёрта Ильфака в публику, повышая градус веселья.

Потом Ильфак свалил с Datarescue и стал делать IDA от лица своей конторы Hex-Rays. Ходят слухи, что он нанял наконец программеров с прямыми руками, которые наконец начали чистить его говнокод. Поэтому версия 5.5 была воспринята с одобрением, и некоторые неофициальные пользователи даже начали помышлять о приобретении. Но эйфория продлилась недолго, баги снова были найдены, и всё вернулось на круги своя.

Ознакомиться с историей спионеривания можно тут. В июле 2011 года у антивирусной компании была упёрта полная версия декомпилятора версии 6.1. TEH DRAMA!

SoftIce [ править ]

Реверс инжиниринг что это

Дебаггер, работающий на нулевом уровне, на котором можно всё. Появляется по нажатию CTRL+D, и всё остальное — программы, драйвера и даже некоторые прерывания перестают работать. Переставало идти даже «время», и задебажившийся индивид мог потом реально фалломорфировать, осознав сколько прошло времени в «реальном мире». Заодно обрубалась модемная связь, вызывая лютый багет от забытого брейкпоинта при ночном дозвоне по дайлапу. Можно трассировать что угодно: драйвер HDD, USB-антенны и т. п. А ещё там работает мышь и можно делать скрины.

SoftIce вышел на рынок как отладчик уровня ядра совершенно неожиданно для самих создателей этого ядра — MS. Позиционировался как тулза «для нахождения багов в софте», но последние весьма разнообразны: сюда можно отнести MS Office, требующий ключ активации. Немаловажное преимущество: он умеет считывать при загрузке инфу о библиотеке, в процессе отладки показывая имена, например, Kernel.FindClose+105h.

Нынче похож на свежий навоз: его уже n лет никто не обновляет. И не будет — в связи с выпилом конторы разработчиков: Numega невозбранно была проебана за 30 сребреников мудацкой Compuware. В итоге всё закончилось тотальным выпилом как нумеговских проектов, так и собственно офиса бывшей Нумеги. А остатки Девпартнера отдали какому-то ебучему реселлеру Microfocus, потому что Compuware после тотального экстерминатуса Нумеги забил на все эти ваши девпартнеры-девшмартеры болт.

Остальные [ править ]

WinDbg — как бы быдлокодерам, испытывающим от слова «Майкрософт» жжение в области ануса, ни было обидно, это самый популярный kernel-mode отладчик со времён смерти SoftIce. Да и в user-mode Винбэг обеспечивает лютый вин, кладя болт на эти ваши Debugging API и позволяя, например, заглянуть в native code для процесса, в который уже впилен отладчик для managed code.

Syser — китайский дебагер уровня ядра с GUI. Пришёл на смену SoftIce, загнулся в 2011, проиграв войну новым 64-битным ядрам.

Декомпиляторы [ править ]

.NET Reflector — хороший инструмент для декомпиляции программ на C# и некоторых других языках. Авторы постоянно дорабатывают своё детище, вскорости обещают декомпилировать и другие основные языки. Изначально был бесплатен, но после появления широкой аудитории стал платным, впрочем, Reflector использовали для взлома платной версии.

ILSpy — свободный аналог рефлектора от разработчиков SharpDevelop. Вполне юзабелен, но остановился в развитии — все люди кинуты на новую версию SharpDevelop.

JD, JavaDec, JavaByte, Cavaj, тысячи их… — декомпиляторы для Жабы. Инструментарий тут гораздо побогаче, чем для С#, но реально хитовых тулзов не наблюдается. Впрочем, есть смысл полуркать (открытые библиотеки: так, бесплатная idea9 community edition плюс это и вот это вполне могут помочь в декомпиляции коммерческого быдлокода.

Деобфускаторы [ править ]

Нередко код бывает обфусцирован. Зачастую помогают деобфускаторы. Для интерпретируемых языков (за исключением perl) обычно не требуются или легко самопишутся.

Для шарпа один из лучших — de4dot.

Прочая дребедень [ править ]

PETools — тулза некоего NeoX (йодмен — человек, выливший йод на хуй). Пригодна для работы с PE-форматом. Конкурент — LordPE (умеет фиксить SizeOfImage в пебе), остальное из этой серии — УГ.

RSATool — GUI-программа для прокачивания скила по RSA. Автор — эгоист из ТМГ (илита сцены, ни одного нюка). Для факторизации не годна, лучше юзать msieve.

Вещи, затрудняющие анализ [ править ]

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

Продвинутые программы редко содержат паранойю, например, WinRar.

Быдлокодинг. Как это ни удивительно, но быдлопроги зачастую обладают естественной защитой от анализа. Cкажем, проект на Visual Basic, скомпилированный в P-code, читать гораздо труднее, чем продукт полноценного C-программера. Также сложность представляет индусский стиль программирования — быдлокодер неумело пытается защитить своё творение путём искусственного раздутия кода, хотя тот и без всякой доработки может представлять собой такую НЕХ, что даже имея оригинальные исходники, хрен поймёшь, как оно работает.

Пакеры сжимают программы, чтобы они занимали меньше места на диске и распаковывались в памяти. Per se защитой не являются, однако в нераспакованном виде анализировать сжатую программу невозможно. Для известных пакеров лучше всего найти анпакер, который вернёт программу в более-менее исходное состояние. Известные — UPX, ASPack, MEW, PECompact, NSPack.

Обфускация — превращение исходного/промежуточного/конечного (нужное подчеркнуть) исполняемого кода в кашу, которую невозможно читать. Из исходной инструкции обфускатор делает пять (а то и сотню, в случае паранойи пермутации), делающих то же, что и одна, плюс ещё 200, которые вообще ничего не делают, и 28 препятствующих эмулированию или отладке. Применяется как в «хороших» программах, чтобы перенести появление кряка, так и в «плохих», типа полиморфных вирусов, стремящихся оттянуть момент своей детекции — каждая следующая копия будет непохожа на предыдущую. Олсо пытается юзаться в илитной малваре типа рустока и прочей, в расчёте на то, что антивирусные вендоры будут сосать хуйцы. Кстати, есть такой сайтик http://www.ioccc.org, где проводится конкурсы на самую запутанную программу для UNIX. Победители конкурса — истинные шедевры кодописательства и кодозапутывания. Настоятельно рекомендуются к ознакомлению.

Краденые куски — часть кода программы выпиливается, а выполнение оригинального куска выносится вовне: в протектор, на удалённый сервер, донгл и прочая. Когда хацкер делает дамп, он получает не всю программу, а лишь её часть.

Виртуальные машины — часть кода программы транслируется в байткоды другого (не обязательно реального) процессора, и добавляется транслятор, который эти байткоды хавает и выполняет. Некоторые протекторы, такие как «Темида», превращают один грамм исходного быдлокода в 1-3 десятка кило нового говна.

Протекторы — проги, которые защитят ваше творение, особо не заставляя думать — знай сиди и бросай формочки в де билдере. Thinstaller, RCrypt, ASProtect, EXECryptor (привет Relayer), WL/Themida… много их. Могут содержать все вышеперечисленные пункты в невозбранном количестве и в самых невероятных сочетаниях, но обычно содержат баги в реализациях PRNG/метаморфов и прочей хуиты. Кстати, большая часть самых известных протов уже отошла в мир иной-не выдержали конкуренции с пиратами!

Немного о личных качествах самих реверсеров [ править ]

Вечер. Автобус. Едет. На первом сиденье сидят двое. У них коэф. интеллекта IQ=180:
— Я вчера Гамлета в оригинале читал. Такое эстетическое наслаждение.
На другом сиденье сидят ещё двое. У них IQ=140:
— Я вчера посмотрел «Андалузского пса» и нашёл коррелят с ранними картинами Пикассо.
На другом сиденье сидят двое. У них IQ=100:
— Мы с другом час назад посмотрели «От заката до рассвета». Как там тёлка говорит тёлке, что.
На другом сиденье сидят двое других. У них IQ=80:
— Слышь, брат! Помнишь, какое пойло мы в мерсе пили, когда ноги какой-то б..яди торчали в окне.
А на задней площадке стоят двое с IQ=40:
— Ну вот, вскрываю прогу твоим дебаггером.

Источник

Реверс-инжиниринг для начинающих: основные концепции программирования

Реверс инжиниринг что это

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

Примечание Программный код для этой статьи компилируется с помощью Microsoft Visual Studio 2015, так что некоторые функции в новых версиях могут использоваться по-другому. В качестве дизассемблера используется IDA Pro.

Инициализация переменных

Переменные — одна из основных составляющих программирования. Они делятся на несколько видов, вот некоторые из них:

Примечание в С++ строка — не примитивная переменная, но важно понять, как она будет выглядеть в машинном коде.

Давайте посмотрим на ассемблерный код:

Реверс инжиниринг что это

Здесь можно увидеть как IDA показывает распределение пространства для переменных. Сначала под каждую переменную выделяется пространство, а потом уже она инициализируется.

Реверс инжиниринг что это

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

Реверс инжиниринг что это

Инициализация строковой переменной в C++

Для инициализации строки требуется вызов встроенной функции.

Стандартная функция вывода

Примечание Здесь речь пойдёт о том, что переменные помещаются в стек и затем используются в качестве параметров для функции вывода. Концепт функции с параметрами будет рассмотрен позднее.

Теперь посмотрим на машинный код. Сначала строковый литерал:

Реверс инжиниринг что это

Вывод строкового литерала

Теперь посмотрим на вывод одной из переменных:

Реверс инжиниринг что это

Математические операции

Сейчас мы поговорим о следующих математических операциях:

Переведём каждую операцию в ассемблерный код:

Реверс инжиниринг что это

Для сложения мы используем инструкцию add :

Реверс инжиниринг что это

При вычитании используется инструкция sub :

Реверс инжиниринг что это

При умножении — imul :

Реверс инжиниринг что это

Реверс инжиниринг что это

При поразрядной конъюнкции используется инструкция and :

Реверс инжиниринг что это

При поразрядной дизъюнкции — or :

Реверс инжиниринг что это

При поразрядном исключающем ИЛИ — xor :

Реверс инжиниринг что это

Поразрядное исключающее ИЛИ

При поразрядном отрицании — not :

Реверс инжиниринг что это

При битовом сдвиге вправо — sar :

Реверс инжиниринг что это

Битовый сдвиг вправо

При битовом сдвиге влево — shl :

Реверс инжиниринг что это

Битовый сдвиг влево

Вызов функций

Мы рассмотрим три вида функций:

Реверс инжиниринг что это

Вызов функций без параметров

Функция newfunc() просто выводит сообщение «Hello! I’m a new function!»:

Реверс инжиниринг что это

Реверс инжиниринг что это

Вызов такой функции выглядит следующим образом:

Реверс инжиниринг что это

Вызов функции с параметрами

Посмотрим на код функции:

Реверс инжиниринг что это

Циклы

Теперь, когда мы изучили вызов функции, вывод, переменные и математику, перейдём к контролю порядка выполнения кода (flow control). Сначала мы изучим цикл for:

Реверс инжиниринг что это

Графический обзор цикла for

Прежде чем разбить ассемблерный код на более мелкие части, посмотрим на общий вариант. Как вы можете видеть, когда цикл for запускается, у него есть 2 варианта:

Реверс инжиниринг что это

Цикл for подробно

Теперь давайте взглянем на цикл while :

Реверс инжиниринг что это

В этом цикле генерируется случайное число от 0 до 20. Если число больше 10, то произойдёт выход из цикла со словами «I’m out!», в противном случае продолжится работа в цикле.

Условный оператор

Теперь поговорим об условных операторах. Для начала посмотрим код:

Посмотрим на ассемблерный граф:

Реверс инжиниринг что это

Ассемблерный граф для условного оператора

Оператор выбора

Оператор выбора очень похож на оператор условия, только в операторе выбора одна переменная или выражение сравнивается с несколькими «случаями» (возможными эквивалентностями). Посмотрим код:

Оператор выбора не следует правилу «Если X, то Y, иначе Z» в отличии от условного оператора. Вместо этого программа сравнивает входное значение с существующими случаями и выполняет только тот случай, который соответствует входному значению. Рассмотрим два первых блока подробней.

Реверс инжиниринг что это

Два первых блока оператора выбора

Реверс инжиниринг что это

Если var_D0 (A) равно 5, то код перейдёт в секцию, которая показана выше, выведет «5» и затем перейдёт в секцию возврата.

Пользовательский ввод

В этом разделе мы рассмотрим ввод пользователя с помощью потока сin из C++. Во-первых, посмотрим на код:

Разберём это в машинном коде. Во-первых, функция cin :

Реверс инжиниринг что это

Реверс инжиниринг что это

Функция C++ cin детальнее

Реверс инжиниринг что это

Мы рассмотрели лишь основные принципы работы программного обеспечения на низком уровне. Без этих основ невозможно понимать работу ПО и, соответственно, заниматься его исследованием.

Источник

Плагиат или обратный инжиниринг?

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

Реверс инжиниринг что этоФото: technet-nti.ru

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

В России к обратному инжинирингу традиционно относятся без энтузиазма. Помните, пару лет назад появилась новость о создании Центра обратного инжиниринга. «Газпром нефть», «Башнефть» и «Зарубежнефть» вызвались стать соучредителями Центра, и заниматься он должен был созданием отечественных аналогов зарубежного оборудования для нефтяной отрасли. В журнале «Нефтегазовая вертикаль» тогда появилась статья, отражающая классический российский взгляд на эту проблему. Дескать, негоже нам, великой державе, родине Сахарова и Менделеева, воровать чужие конструкции и копировать иностранные инженерные решения. У самих способных учёных и перспективных разработок хватает, так зачем отбирать хлеб у своих умов? По такой схеме работает Китай, так что же нам, теперь у китайской науки учиться?

Делай, как китайцы

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

В этой истории есть очень показательные эпизоды. Например, Lenovo много лет копировала разработки IBM, а потом взяла и купила часть их бизнеса. С такими активами китайский производитель вполне может конкурировать с гигантами мирового рынка Dell и HP. Ну а скорость, с которой китайские компании поглощают производителей роботов, вообще поражает. А ведь всё опять же начиналось с копирования, а теперь китайский рынок промышленных роботов — крупнейший в мире.

Может, дело в самом менталитете? Если восточные подмастерья удачно копировали работу мастера — скажем, вазу или ювелирное изделие, это считалось особой гордостью. Если копировать европейский компьютер с таким же отношением к делу, то никаких сделок с совестью заключать не придётся.

Какого цвета реинжиниринг?

А как быть с авторским правом, с патентами? Как подобная деятельность в принципе может быть законной? Здесь возможны разные мнения. Одну из точек зрения представил вице-президент по стратегическому развитию ГК «ФИНВАЛ» Владимир Сметана.

«Когда мы говорим реверс-инжиниринг, или обратный инжиниринг, надо говорить немножко шёпотом, потому что эти процессы находятся на стыке законной и незаконной деятельности. Мы ведь берём чей-то прототип и начинаем его разбирать на части. Вопрос: а где здесь авторское право? Где здесь законодательная защита автора, который владеет этим изделием? Поэтому мне кажется, с этим делом надо быть осторожнее. И задумываться о последствиях, если вдруг где-то что-то всплывёт», — сказал г-н Сметана.

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

«Да, все этим занимаются. Но об этом не говорят — это серый рынок. И нам обязательно нужно этим заниматься, пользоваться такими возможностями. Ведь наша страна всегда это и делала. В советский период мы покупали оборудование через «дружественные страны», разбирали, делали опытные образцы и запускали серию. Здесь должна быть государственная политика, и она не должна быть открытой», — считает Владимир Сметана.

ЭКСПЕРТ

Реверс инжиниринг что это

Марат Абдурахимов,
директор по развитию компании «Майнинг Элемент»

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

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

Про СССР — собственно говоря, не новость. Вспомните, как у Союза появился Ту-4. Очень нашей стране хотелось иметь собственный дальний бомбардировщик, ОКБ Туполева честно пыталось его создать, но сроки были сжатыми.

Американский В-29 нравился очень, мы несколько лет просили их у США, но в ответ следовал вежливый отказ. И сразу же после войны советские инженеры начали копировать американские самолёты, которые волею случая оказались на нашей территории ещё во время ведения боевых действий. Вот он — обратный инжиниринг с ремаркой «плагиат» в рафинированном виде. Скопировали подчистую: даже пепельницу в кабине пилота установили, как у американцев, хотя советским лётчикам курить запрещалось.

А тепловоз ТЭ1 — копия американского RDS-1? А добрая половина произведений советского автопрома? Да и к отечественной ядерной бомбе на самом деле есть вопросы. Но, как и в случае с современным Китаем, победителей не судят. Эмоции по этому поводу отлично перекрываются экономическими показателями.

Реверс инжиниринг что этоФото: wciom.ru

Но СССР на самом деле работал по названной г-ном Сметаной схеме «действуй строго по закону, то есть действуй втихаря». Все отлично знали, что «Москвич» сделали с Opel, но внимание на этом не акцентировали. И дело, пожалуй, было не в авторских правах, а в патриотизме — ну или имперском комплексе. Слово «воровство» уж точно не употреблялась. Однако в сегодняшних условиях использовать обратный инжиниринг и делать всё абсолютно легально возможно — у компании «Русал» ведь получается.

По опыту «Русала»

Алюминиевый гигант использует весьма структурированный подход к созданию технологий. Условно специалисты компании делят их на три группы. В первую входят технологии, которые необходимо закупать. Это прорывные идеи, на острие новых направлений, и таковые абсолютно легально и официально приобретают — никаких вопросов по поводу авторских прав.

Вторая группа — это технологии, которые российской компании не продают. И вот тут стартуют работы в направлении реверс-инжиниринга.

«Так, технологию по производству алюминиевых паст нам не продали. Как бы мы ни строили переговоры, результата добиться не удалось. Ну что ж, у нас есть два института, специалисты которых могут разработать очень перспективные решения. Мы изучили импортные продукты, их свойства, получили ТЗ от наших клиентов и создали собственную технологию. Сегодня мы её запатентовали и уже внедряем на заводе в Волгограде», — рассказал технический директор ПАО ОК «РУСАЛ» Виктор Манн.

Ну и в третью группу «Русал» определил технологии, которые «нельзя покупать». Причины могут быть разные. Финансовые, например.

По стопам Ломоносова

Практика реверс-инжиниринга намного древнее, чем может показаться. В XVII веке китайский фарфор ценился очень дорого, в дворянских домах он считался предметом роскоши. Но, как бы оценили ситуацию современные экономисты, Китай был монополистом на этом рынке, и вся Европа вместе с Россией активно содействовала развитию китайской экономики за счёт закупок фарфора. В общем, нам срочно нужны были русские вазы — по-современному, импортозамещение. За дело взялись Михаил Ломоносов и Дмитрий Виноградов. Выяснили состав китайского фарфора, сформировали технологию подготовки сырья, выбрали режим обжига. Русский фарфор получился не хуже китайского. Причём ни у первых, ни у вторых не было никаких аналогов патентов, поэтому о плагиате здесь и говорить глупо.

«Когда в 2004 году мы проектировали один из наших алюминиевых заводов, лучшие технологии принадлежали французской компании. Мы вели переговоры по их приобретению. Цены, которые они выставили, были огромными, причём только за лицензию на одну серию. А мы не собирались ограничиваться одним заводом — в перспективе были Богучанский, Тайшетский. И эти траты были только началом. Получалось так, что эта импортная технология тянула за собой необходимость трансфера и иностранного оборудования. Французы заявили: если вы не приобретёте такие-то краны, такую-то систему автоматической подачи сырья, такую-то преобразовательную станцию, то мы не обещаем, что всё будет работать корректно. Такой подход предполагал сотни миллионов рублей инвестиций.

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

Он также добавил, что не понимает и не принимает определения «серая зона»: о каких полузаконных процессах может идти речь, если все решения «Русала» сегодня запатентованы на международном уровне?

Выступление г-на Манна вызвало дискуссию на круглом столе в рамках КЭФ. Ведь изначально разработка принадлежала другим специалистам. И здесь опять возник вопрос о том, как именно идёт работа по технологии, полученной в результате реинжиниринга. Что мы получаем на выходе: такой же продукт или нечто более совершенное, отвечающее требованиям заказчика конкретного производителя?

«Давайте я для наглядности приведу ещё один пример из нашего опыта. Есть американская компания, которая производит замечательную литейную оснастку. Но сроки поставки у них огромные, к тому же это очень дорого. Скопировать это решение мы не можем — это будет как раз нарушением авторских прав. Поэтому мы начали разрабатывать собственную оснастку. Выяснили все недостатки американского решения и создали своё с тем расчётом, чтобы их устранить. У нас получилась разборная конструкция, которая является более ремонтопригодной и долговечной. Сначала мы запатентовали свою оснастку в нашей стране, а сейчас патентуем и на международном рынке.

И был прецедент. Один из наших заказчиков отказался приобретать наш алюминий, сказав, что мы изготавливаем его, используя ворованную оснастку. Но мы объяснили ситуацию, продемонстрировали патенты, после чего перед нами извинились и сотрудничество было продолжено. Всегда можно найти легальное решение», — уверен Виктор Манн.

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

«Ещё один возможный подход — вступление в кластеры. Например, мы участники Кластера разработчиков, поставщиков и потребителей алюминия. Совместно с другими компаниями мы «в складчину» создаём технологии, таким образом, являемся соавторами», — добавил г-н Манн.

Копирование с опережением

Удивительно, но, высказав такие разные мнения, специалисты всё-таки пришли к общему знаменателю. С этого, собственно, и начинал Алексей Боровков. И об этом же мы не раз говорили с экс-министром экономического развития Красноярского края Михаилом Васильевым.

«В своё время СССР, восстанавливающий экономику после Гражданской войны, выполнил задачу импортозамещения — в прямом смысле слова. Тогда Россия целиком копировала оборудование и технологии из Германии или Америки. В результате страна получила набор промышленных производств, но это была техника вчерашнего дня. И, говоря про импортозамещение, нужно понимать, что мы можем, конечно, пользоваться вчерашними чайниками и вчерашними пылесосами. Но с точки зрения задач, которые стоят перед Россией в целом, необходимо, чтобы конструкторские, технологические бюро, лаборатории, институты и передовая наука генерировали те наработки, которые должны лечь в основу промышленного оборудования и технологий будущего. Просто копируя то, что производят именитые западные фирмы, мы большого эффекта на длительную перспективу не получим», — разложил всё по полочкам Михаил Геннадиевич.

Реверс инжиниринг что это

«Мы на собственном опыте убедились в том, что реверс-инжиниринг неопережающего типа — это путь в никуда. Расскажу нашу историю.

Перед компанией ТВЭЛ стоит задача развивать неядерные бизнесы.

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

В итоге мы создали передовую разработку, которая опережает решения наших конкурентов. Только в этом случае реверс-инжиниринг имеет смысл. За исключением, конечно, тех ситуаций, когда мы работаем с оборудованием длительного срока эксплуатации, производителей отдельных компонентов уже нет на рынке или, скажем, на них утрачена документация. Для их воспроизводства и возможно копирование, то есть реверс-инжиниринг в чистом виде», — подвёл итог вице-президент по стратегическому развитию и маркетингу Топливной компании Росатома «ТВЭЛ» Илья Галкин.

Источник

Reverse engineering: обратная разработка приложений для самых маленьких

Реверс инжиниринг что это

Выделяют 4 методики проведения обратной разработки:

анализ обмена данными приложения, с помощью различных анализаторов трафика;

использование режима отладки для поиска нужных участков кода и просмотра данных с которыми работает приложение;

дизассемблирование машинного кода программы (изучение требует довольно много времени);

декомпиляция кода программы для создания исходного кода программы на языке программирования высокого уровня.

Установка

Рекомендуемым разработчиками способом установки и обновления Radare2 является установка из официального git-репозитория. Предварительно в системе должны присутствовать установленные пакеты git, build-essential и make.

Запуск установки рекомендуется производить не из под пользователя root, иначе скрипт сам произведёт понижение привилегий.

Далее устанавливаем графическую оболочку для Radare2. Мы будет устанавливать официальный GUI под названием Iaito. Установим пакеты, необходимые для установки Iaito:

Для дистрибутивов Linux на базе Debian, есть готовые пакеты, ссылки на которые можно взять тут. Скачаем и установим нужную версию пакета:

Теперь установим плагин r2ghidra, который является интеграцией декомпилятора Ghidra для Radare2. Плагин не требует отдельной установки Ghidra, так как содержит в себе всё необходимое. Для установки плагин доступен в качестве r2pm пакета:

Установленный плагин автоматически интегрируется в GUI Iaito. После установки запускаем графическую оболочку и если все сделали правильно, то видим стартовый экран:

Реверс инжиниринг что это

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

Первый запуск программы-примера

Реверс инжиниринг что это

Открываем файл в Iaito, оставляем настройки анализа по умолчанию:

Реверс инжиниринг что это Реверс инжиниринг что это

После того, как Radare2 проанализирует файл, смотрим результат, открывшийся во вкладке Dashboard:

Реверс инжиниринг что это

Программа скомпилирована под 64-битную версию Linux, написана на языке C. Слева мы видим список функций, которые Radare2 смог обнаружить. Среди них импортируемые из библиотеки libc функции printf, puts и putchar, выводящие на экран строку по формату и символ.

Функция main – это главная функция программы. Выполнение начинается с неё. Кликнув два раза по её названию, открывается вкладка Disassembly с результатом её дизассемблирования:

Немного про Ассемблер

Команды ассемблера

Каждая команда Ассемблера — это команда для процессора. Синтаксис команды состоит из нескольких частей:

Или рассмотрим другой пример как выглядит возведение числа в степень в Ассемблере:

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

Вернемся к нашему заданию

Для большего понимания логики выполнения программы можно переключиться на вкладку Graph внизу окна. Там мы увидим блоки команд функции, в которой мы находимся, и переходы между ними, построенные Radare2 на основе команд условных и безусловных переходов.

Реверс инжиниринг что это

Масштабирование на этой вкладке выполняется сочетаниями клавиш Ctrl+»-» и Ctrl+»+». Можно было бы начать разбираться в работе программы уже с этого места, но есть возможность посмотреть на программу в ещё более “читаемом” виде. Переключаемся на вкладку Decompiler, внизу окна и видим псевдокод, полученный в результате декомпиляции (восстановление до кода на языке, на котором программа была написана, в нашем случае – язык C) средствами встроенного декомпилятора Radare2.

Реверс инжиниринг что это

В полученном тексте всё ещё много упоминаний регистров и безусловных переходов. Переключимся на декомпилятор Ghidra, который мы ранее установили. Для этого в правом нижнем углу окна в выпадающем списке выберем “pdg” вместо “pdc”.

Реверс инжиниринг что это

Теперь код программы стал практически полностью читаем, за исключением имён переменных.

В коде мы видим, что сначала выводится строка “Token:”, после чего происходит вызов некой функции с двумя параметрами, после которого идёт цикл с переменной var_8h, которая проходит значения от 0 до 14 включительно и выводит что-то посимвольно, основываясь на адресе памяти 0x5020 и счётчике с множителем 8. Из этого можно сделать вывод, что в памяти, начиная с адреса 0x5020, расположен массив структур из 15 значений размером 8 байт. Также стоит обратить внимание, что адрес 0x5020 передавался в качестве первого параметра в функцию, вызываемую перед этим циклом. Будем для простоты далее называть его “токен”. Далее по коду выводятся строки начала закрытого ключа и в цикле выводится посимвольно закрытый ключ. Внутри цикла вывода ключа идёт повторяющийся цикл по обнаруженному нами ранее массиву структур, используя переменную var_ch. Перед выводом на экран над каждым символом закрытого ключа производится операция исключающего ИЛИ (XOR) с текущим символом токена. После цикла выводится строка, завершающая закрытый SSH ключ. Исходя из того, что выводимый программой токен не является правильным, можно сделать вывод, что что-то происходит не так в ранее обнаруженной нами функции с двумя параметрами fcn.00001189, вызываемой перед выводом токена на экран. Перейдём на неё, дважды кликнув по названию функции в списке слева.

Реверс инжиниринг что это

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

Получается, нужно это исправить. Переключимся на вкладку дизассемблера:

Реверс инжиниринг что это Реверс инжиниринг что это

В полученном коде мы видим только одну команду вычитания 8:

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

Представление в виде графов

Реверс инжиниринг что это Реверс инжиниринг что это

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

Реверс инжиниринг что это

Для этого, находясь на вкладке дизассемблера, поставим курсор на эту команду и переключимся на вкладку Hexdump:

Реверс инжиниринг что это

По относительному адресу команды 0x00001211 убеждаемся, что курсор стоит там, где необходимо. Выделяем 4 байта, начиная с адреса 0x00001211 и справа выберем вкладку “Parsing”. Увидим результат дизассемблирования выделенных байт.

Реверс инжиниринг что это

Теперь нужно заменить выделенные байты на 4 байта со значением 90 (шестнадцатиричное значение машинного кода команды nop), но тут мы сталкиваемся с тем, что в Iaito нельзя просто так отредактировать шестнадцатиричное значение по адресу. Список доступных действий мы можем увидеть, нажав на выделенных байтах правую кнопку мыши.

Реверс инжиниринг что это

Да, можно воспользоваться сторонним hex-редактором, но это было бы “неспортивно”. Так как мы пробуем выполнить все действия только в рамках функционала Radare2, то будем использовать что есть.

Сначала выберем “Write zeros”. Iaito напомнит нам, что файл открыт в режиме “только для чтения” и предложит переоткрыть его либо в режиме для записи, либо включить режим кэширования. В режиме кэширования все изменения к исходному файлу будут применяться только после выбора пункта меню “File → Commit changes”.

Реверс инжиниринг что это

Выберем режим кэширования, после чего снова попытаемся записать нули. И теперь это у нас получается. На каждом из четырёх байт выберем из контекстного меню пункт “Edit → Increment/Decrement” и добавим значение 144 (десятичную запись шестнадцатиричного числа 90).

Реверс инжиниринг что это

Смотрим на получившийся результат:

Реверс инжиниринг что это

После внесения изменений не забываем нажать “File → Commit Changes”. Запускаем ещё раз программу dechip, чтобы посмотреть результат наших действий:

Реверс инжиниринг что это

Реверс инжиниринг что это

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

Заключение

В целом, бесплатный аналог IDA Pro в лице Radare2 является довольно неплохим решением. Однако, официальный GUI Radare2 хоть и позволяет удобно перемещаться между инструментами Radare2 и в части отображения информации удобнее консольной версии, но в то же время он ещё недостаточно доработан и не предоставляет всех возможностей, которые можно реализовать через консоль. Со всеми возможностями консольной версии можно ознакомиться в официальной книге по Radare2.

Что касается обратной разработки, то он оказался совсем не страшным и даже при начальном уровне знания языка Ассемблер можно разбираться в устройстве какого-нибудь простенького приложения. А в Корпоративных лабораторияx Pentestit можно попробовать свои силы не только в реверс-инжинеринге бинарных файлов, но и в деассемблировании Android/IOS приложений.

Источник

Реверс-инжиниринг. История. Моя

Реверс инжиниринг что это

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

Начало

А начиналось всё ещё в далёком детстве. Думаю, как и многим парням (а может и девушкам), мне всегда было интересно знать, как же всё устроено, почему работает, почему не работает, и т.д.
Сначала я начал разбирать все машинки на батарейках, которые у меня были (даже те, что были у брата). Конечно, не всегда удавалось собрать, но, интерес был превыше. Потом нашёл какой-то старый радиоприёмник-магнитофон у отца в кладовке, и разобрал его тоже. Ещё были тамагочи. Но там я вообще ничего не мог понять: микросхема, «капля» и экран. Хотя да, экран я разбирал на слои.
Конечно же, за всё несобранное я получал по шапке.

Sega Mega Drive

Реверс инжиниринг что это

Отец купил мне её на день рождения: обычная пиратка, ибо лицензионных тогда не было, плюс картридж » Contra: Hard Corps «. Уверен, момент покупки приставки для многих детей 90-х не забыт до сих пор (ромхакеры и ретрогеймеры — привет!), а именно для меня он стал ещё и ключевым в будущем. Но обо всём по-порядку.

11-й класс

Реверс инжиниринг что это

(прим. автора: тот самый компьютер, только куда позднее)

Осенью 2005-го года мне купили компьютер. С первых дней я начал играть в игры. Учёба в школе просела, но держалась на нормальном для гимназии уровне. А спустя полгода играть надоело. Тогда и свершился переломный момент!

Негеймер

Именно тогда, в 2006 году, как мне кажется, начался варезный бум. Куча сайтов с кряками, кейгенами, патчами. Каждый старался перепаковать инсталлятор так (привет сборкам Винды), чтобы скачавшему ничего лишнего делать не нужно было: установилось и работает, правда иногда добавляя что-то от себя.

Реверс инжиниринг что это

Переводчик

Реверс инжиниринг что это

cracklab.ru

Скачал для экспериментов себе парочку «крэкмисов» (программы, специально написанные для того, чтобы их реверсили, обучаясь при этом взлому и защите ). Попробовал — очень понравилось! Всё получилось с первого раза, чему я был несказанно рад.

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

Реверс инжиниринг что это

Ромхакинг

Иногда играя в Сегу, мне попадались картриджи на русском языке, на титульных экранах игр которых были такие надписи как «Группа перевода SHEDEVR «, «Перевод NEW-GAME.RU «. Разработчики ли это, или же какие-то сторонние организации я не знал, но у них явно был доступ к каким-то манускриптам, древним текстам шумеров, в которых рассказывалось, как переводить игры на русский язык. И мне захотелось овладеть этими знаниями.

Реверс инжиниринг что этоРеверс инжиниринг что это

Так я открыл для себя форум «Шедевра«.

У них были статьи, были программы — всё необходимое для того, чтобы сделать твою любимую игру ещё и «твоей любимой игрой на русском языке«. Правда, статьи были только для NES (Nintendo Entertainment System, или по-народному: Денди, Сюбор). Но всё равно круто! И я погрузился в новые и увлекательные для себя темы: Ромхакинг и эмуляция ретро-консолей на ПК.

Реверс инжиниринг что это

Если вкратце, то ромхакинг — это любое изменение образа или файла игры, с какой либо целью: перевод, исправление кода, графики.

Это был очень занимательный процесс: сидишь, перерисовываешь квадратики игрового шрифта пиксель за пикселем, переводишь и вставляешь с помощью программы для перевода PokePerevod текст, и смотришь что получилось. Правда, никакого тебе ассемблера, только хардкор! Но это уже было планкой, через которую очень немногие могли перепрыгнуть (судя по количество активных на форуме Шедевра).

Я учитель

Сделав какие-то переводы «в стол», а какие-то и в народ, я вернулся к исполняемым файлам Windows. Ещё немного поднаторев в ассемблере, я понял, что «секретных» знаний во мне теперь чересчур много, и мне есть что рассказать из своего опыта, есть чем поделиться, и что ещё не было описано в имеющихся статьях. Хотелось передавать знания таким же новичкам, каким я был сам (видимо, сказывается то, что мама — учитель).

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

Получив положительные отзывы, я писал ещё и ещё, понимая, что спрос есть.

Инструменты

Реверс инжиниринг что это

А в универах учат реверсу?

Если в двух словах, то в Беларуси с этим туго, и, насколько я знаю, в России и Украине тоже. Почему? Да потому что специалисты этой профессии обычно нужны в одной с половиной организации, и, обычно, полтора человека. Собственно, и преподавателей не так много.

Реверс инжиниринг что это

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

Например, в Беларуси я знаю только два-три места, куда требуются реверс-инженеры. В России, конечно, ситуация получше, но, специалистов также немного.

Первая работа

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

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

Другой ассемблер

Однажды я узнал, что кроме ассемблерного кода Intel (16-, 32-, 64-битного) бывает и другой, по-началу кажущийся совершенно непохожим на тот, что ты знаешь. Это произошло в тот момент, когда я добрался до перевода своей любимой игры — » Thunder Force III «, в которую брат играл лучше меня.

Реверс инжиниринг что это

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

Реверс инжиниринг что это

P.S. Thunder Force III я так и не перевёл, но написал редактор уровней к ней.

Sony Playstation

Реверс инжиниринг что это

Обратное мышление и первый кейген

Знаете, что тогда стало для меня настоящим испытанием? Имея на руках лишь ассемблерный листинг кода, который распаковывает что-либо, написать к нему упаковщик. Здесь потребовалось выработать обратное мышление, которое практически не требовалось во время патчинга «крэкмисов«, и излечивания программ от жадности.

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

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

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

Статья о кейгене

А вот писать статью о кейгене было тяжело. Тяжелее написания кейгена. Т.к. в статье передать принцип обратного мышления довольно таки сложно. Как и всё, что приходит с опытом.

Крякерские команды

Реверс инжиниринг что это

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

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

На самом деле, не все из них реверсеры. Кто-то художник, кто-то умеет доставать платный софт, у кого-то вычислительные мощности (возможность факторизовать любой публичный ключ RSA-512 за два дня, на 2013-й год, если это требовалось для снятия лицензионной защиты). В общем, преимущества налицо. Но софт для релиза всё равно выбираешь сам, чаще всего. И денег за релизы не получаешь. Правда.

Проблемы с законом?

Да, за распространение кряков и кейгенов всё таки есть вероятность загреметь (особенно если программа популярная и стоит много денег). В любой момент может произойти контрольная закупка: тебе напишет дядя, который хочет «взломать Adobe / 1C Бухгалтерия сколька будит стоеть» (реальная история). Но ребята хотят выживать, особенно если работы нет, а «навык«-то применять хочется, не важно пока куда. И начинают идти на крайности.

… барыжат ломаным софтом, взламывают программы за деньги.

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

Честно заработанный лицензионный ключ

Да, и такое бывает. Даже у крякера. Были где-то статейки о том, как выпросить у разработчика ключ. И я так пробовал делать. Не помогало.

Тогда я перевёл программу на белорусский язык, и отправил автору языковой файл. За что получил в ответ лицензионный ключ на своё имя! Мой первый лицензионный ключ.

Реверс инжиниринг что это

Что дальше?

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

Ещё бывают реверс-инженеры хардварщики (те, что железо реверсят), но о них я знаю мало. Хотя, тема очень даже интересная. Я же больше по программной части.

Нирвана

Источник

Право на реверс. Как обратная разработка выглядит с юридической точки зрения

Реверс инжиниринг что это

Партнер

Реверс инжиниринг что это

Содержание статьи

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

Введение

Фанаты Starcraft наверняка помнят те времена, когда можно было играть не через Battle.net, а через левый сервер на эмуляторе bnetd (или даже поднять собственный). Игра была той же, но лицензионный ключ не требовался. Или вспомнить другой случай: несколько лет назад многие радовались новости о том, что простой американский парень Джордж Френсис Хоц — младший aka geohot (тот самый, что в прошлом году объявил о создании своего автопилота для автомобилей) «обул» корпорацию Sony, взломав защиту PlayStation 3.

Ни Blizzard, ни Sony, ясное дело, не были рады таким публичным пощечинам и в конечном счете нашли крайних. В первом деле такой оказалась компания Internet Gateway, во втором — Джордж и сотоварищи из сообщества fail0verflow. В обоих кейсах дело касалось в том числе реверс-инжиниринга программного кода.

К чему мы это вспомнили? К тому, что занятие обратной разработкой софта без согласия правообладателя кода законно и ненаказуемо только в очень редких случаях. Да-да, букве закона (и не только американского, но и нашего) знакомо такое явление, как реверс-инжиниринг. Конечно, не настолько хорошо и детально, как хотелось бы, но и то, что есть, — это намного лучше, чем ничего. Но давай-ка начнем с самого начала.

Обратная разработка и закон

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

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

Законы, которые ограничивают реверсинг, в каждой стране (а в США — в каждом штате) свои, и их нормы могут сильно различаться. Давай пройдемся по основным из них.

США

Россия

Евросоюз

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

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

Вот, например, как выглядит лицензионное соглашение для Kaspersky Rescue Disk 10:

«Запрещается декомпилировать, дизассемблировать, модифицировать или выполнять производные работы, основанные на ПО, целиком или частично за исключением случаев, предусмотренных применимым законодательством».

А вот EULA для продуктов Cisco:

Customer specifically agrees not to:
(iii) reverse engineer or decompile, decrypt, disassemble or otherwise reduce the Software to human-readable form, except to the extent otherwise expressly permitted under applicable law notwithstanding this restriction or except to the extent that Cisco is legally required to permit such specific activity pursuant to any applicable open source license.

Такие формулировки часто встречаются в пользовательских соглашениях. Их задача — ограничить возможности пользователя там, где закон ему прямо не запрещает обратную разработку. Это своего рода юридическая перестраховка от посягательств на программный код. Нарушение EULA напрямую ведет к разным негативным последствиям — начиная от досрочного прекращения лицензии и заканчивая денежной компенсацией за нарушение авторских прав.

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

В России дел, связанных с реверсом, почти нет, так что детали пока не успели накопиться. Гораздо интереснее изучить прецеденты в США, где примеров много. В рамках этой статьи я рассмотрю упомянутый в начале кейс Blizzard.

Blizzard против bnetd

Началась эта история еще в 1998 году, когда фирма Blizzard приступила к продажам игры Starcraft. Спустя несколько месяцев студент Калифорнийского университета в Сан-Диего Марк Бейзингер (Mark Baysinger) занялся реверс-инжинирингом протокола, по которому игра подключалась к серверу Battle.net.

Результатом работы стал эмулятор StarHack. И почти сразу же Бейзингер получил от Blizzard письмо с предупреждением о нарушении прав компании и требованием прекратить нарушение. В ответ он поинтересовался, в каких именно действиях было выражено нарушение авторских прав компании. Не получив ответа на свой вопрос, Бейзингер решил все же прекратить заниматься развитием проекта, но выложил в интернет исходники под лицензией GPL. Так появился опенсорсный проект bnetd — клон Battle.net, который, в частности, использовался на сервере bnetd.org.

В 2002 году в Blizzard начали бета-тестирование следующей игры — Warcraft III. А в 2003 году умельцы зареверсили протокол новой игры и написали форк bnetd под названием Warforge — с поддержкой Warcraft III.

Через несколько дней после релиза Warforge компания Internet Gateway, предоставлявшая хостинг проекту bnetd, получила аналогичное письменное предупреждение (так называемое C&D, cease and desist letter) от Blizzard, содержание которого сводилось к тому, что создатели bnetd нарушали права Blizzard. Поскольку после отправки предупреждения проект bnetd не был закрыт, руководство Blizzard приняло решение обратиться в суд.

В 2002 году адвокаты Blizzard подали иск к хостеру bnetd.org, а также к Тиму Джангу (Tim Jung), президенту компании Internet Gateway и одному из разработчиков проекта bnetd. Иски получили и системные администраторы домена bnetd.org, а позднее список ответчиков еще вырос. В иске Blizzard говорилось, что bnetd — серверная программа, которая эмулирует сервис Battle.net, но при этом не проверяет подлинность ключа, чтобы определять, легальное ли используется клиентское ПО. Помимо этого, разработчиков bnetd обвинили в незаконном копировании фрагментов кода компьютерных программ Blizzard.

В общем, в Blizzard заявили о нарушении ее авторских прав, прав на товарный знак (в отношении Battle.net), а также о недобросовестной конкуренции со стороны ответчиков. В ходе рассмотрения судебных претензий в 2004 году суд вынес решение в пользу истца, признав, что ответчики нарушали авторское право, осуществив реверс-инжиниринг, а также обход систем защиты авторских прав (то есть не реализовав на своем сервере верификацию ключей клиентских программ).

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

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

Российские законы

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

Вот фрагмент текста самой статьи Кодекса.

Гражданский кодекс Российской Федерации (часть четвертая), статья 1280 «Право пользователя программы для ЭВМ и базы данных»

Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий:

1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников;

2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию;

3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ.

Как видишь, в законе упомянут только старомодный термин «программа для ЭВМ» — Гражданский кодекс не оперирует более узкими понятиями вроде мобильных и веб-приложений, протоколов, баз данных и тому подобных вещей.

Здесь можно выделить три важных момента:

Теперь рассмотрим наиболее важные вопросы, которые относятся к легальности реверс-инжиниринга.

Можно ли привлекать других лиц для выполнения реверс-инжиниринга?

Ответ на этот вопрос может дать следующее решение суда:

Решение Арбитражного суда города Москвы от 29 мая 2013 года по делу № А40-10750/2013

По смыслу ст. 1274 ГК РФ и п. 2 ст. 1280 ГК РФ исследование программы для ЭВМ, как и любого другого объекта исключительных прав, может быть проведено как пользователем самостоятельно, так и любым иным лицом, обладающим специальными знаниями, но в интересах пользователя, с его ведома и по его согласию. Это объясняется тем, что само по себе исследование в силу ст. 1270 ГК РФ не указано в качестве способа использования объекта исключительных прав и не предполагает его возмездное отчуждение или иное введение в оборот. Кроме того, прямого запрета на осуществление исследования в интересах пользователя, с его ведома и по его согласию любым лицом, обладающим необходимыми специальными познаниями, действующее законодательство не содержит.

То есть можно сделать следующий вывод: исследование программы для ЭВМ может быть проведено как пользователем самостоятельно, так и любым иным лицом, обладающим специальными знаниями, но в интересах пользователя, с его ведома и по его согласию.

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

Постановление Девятого арбитражного апелляционного суда от 12 августа 2013 года № 09АП-23848/2013-ГК

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

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

Ответ опять же можно найти в одном из постановлений:

Постановление Одиннадцатого арбитражного апелляционного суда от 25 октября 2012 года по делу № А55-13189/2012

Заключение лицензионного договора означает, что пользователь программы вправе совершать в отношении ее действия, предусмотренные ст. 1280 ГК РФ, а также иные действия, обусловленные договором и связанные с эксплуатацией программы. Договор действует до продажи или иного отчуждения экземпляра программы или базы. На этот договор в отличие от иных лицензионных соглашений не распространяются правила, установленные пунктами 2–6 статьи 1235 Кодекса.

Аналогичный ответ, кстати, содержится и в Постановлении Пленума ВС РФ и Пленума ВАС РФ от 26 марта 2009 года № 5, 29 «О некоторых вопросах, возникших в связи с введением в действие части четвертой Гражданского кодекса Российской Федерации».

Допустимо ли проводить реверс-инжиниринг, чтобы проверить, не является ли исследуемая программа объектом нарушения прав?

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

Постановление Девятого арбитражного апелляционного суда от 12 августа 2013 года № 09АП-23848/2013-ГК

Кроме того, как следует из материалов дела, исследование программы было произведено ответчиками в рамках добросовестной и обоснованной необходимости, исключительно в целях исполнения обязанности по доказыванию исковых требований в соответствии со статьей 65 АПК РФ, не имело цели создания для истца каких-либо негативных последствий и не привело к возникновению таких последствий.

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

Выводы

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

Источник

Что такое обратная разработка

актобарзар яантарбо еокат отЧ

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

Сначала вспомним про два вида языков. Это нам пригодится для дальнейшего разговора.

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

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

Реверс инжиниринг что это

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

Обратная разработка — это когда берут машинный код и превращают его обратно в команды на знакомом языке программирования. А потом анализируют и разбираются, как там всё работает.

Реверс инжиниринг что это

Зачем нужна обратная разработка

Главная цель обратной разработки — понять, как устроена программа, что она делает, какие в ней есть слабые места и что она делает в разных ситуациях. Так как чаще всего компании не открывают исходный код своего софта, то единственный способ заглянуть внутрь программы — провести обратную разработку.

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

На полях скажем, что «можно» означает «есть техническая возможность». Почти во всех лицензиях на ПО чёрным по белому написано, что делать такие вещи с программой нельзя — только использовать по назначению.

Другой популярный пример: производитель электронных игрушек выпустил робота, который умеет больше, чем все остальные роботы конкурентов. Часто в этом случае другие производители делают так: покупают робота, извлекают из него прошивку, а потом с помощью обратной разработки получают те же самые продвинутые алгоритмы. Им остаётся только адаптировать их под своё железо и получить аналогичных роботов.

Какие есть приёмы для этого

Декомпилировать машинный код в язык высокого уровня, например C++. Этот способ может сработать, если мы точно знаем, на каком языке написана программа. В этом случае дизассемблер ищет в машинном коде характерные фрагменты и переводит их в команды на понятном для нас языке программирования. Готовый код будет очень далёк от идеала, в нём будет много странных мест и повторов, но логика будет видна.

Перевести машинный код в язык ассемблера. Это самый простой приём, который работает всегда, но требует очень высокой квалификации от программиста, который будет читать код. Ему придётся на основе простейших команд ассемблера разобраться в том, как устроена чужая программа. Для этого нужно отлично знать архитектуру процессора, для которого была написана программа.

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

Чем отличается обратный код от исходного

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

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

Что дальше

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

Источник

Реверс-инжиниринг

Проводим обратное проектирование – разработку 3D моделей и чертежей по имеющимся деталям и готовым изделиям.

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

Реверс изделия и детали

Стоимость реверс-инжиниринга зависит от сложности изделия и наличия исходных данных.

Реверс-инжиниринг изделий без механизмов

Пример изделий без механизмов: уличная мебель, мангал, корпус прибора.

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

Реверс инжиниринг что это

Реверс-инжиниринг механизмов

Мы разрабатываем КД на устройства и механизмы различной сложности: от машины для мойки бутылок до испытательного стенда.

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

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

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

Этапы реверс-инжиниринга механизма:

Особенности механизмов, влияющие на сложность работ по обратному инжинирингу:

1. Наукоемкость

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

2. Наличие большого количества разных систем – электрической, гидравлической, пневматической, магнитной и пр.

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

3. Накопление погрешностей при копировании деталей.

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

4. Авторские права

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

Резюме

Качественное и быстрое воссоздание сложного изделия по образцу возможно при наличии хорошего ТЗ, полных исходных данных, самого изделие в наличии и специалиста, разбирающегося в технологии его работы.

Источник

С чего начать изучение реверс-инжиниринга

Что такое реверс-инжиниринг?

Почему реверс-инжиниринг одно из самых увлекательных направлений в ИБ?

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

Реверс инжиниринг что это

Реверс инжиниринг тесно связан с исследованием вредоносного ПО. Вирус — это тоже программа, которую можно исследовать.

Я задам вам вопрос – “Вы скачивали взломанные игры с торрента?” Наверняка ответ будет положительным. Программы также взламывают техниками реверс-инжиниринга, но этим лучше не заниматься.

С чего начать изучение?

Реверс инжиниринг что это

С самого начала необходимо изучить основы в IT и Информационной Безопасности.

Ресурсы про реверс-инжинирингу

Реверс инжиниринг что это

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

Обязательно всё повторяйте и конспектируйте в процессе обучения! Практика и ещё раз практика.

Моя история обучения в реверс-инжиниринге

Моё обучении ещё не окончилось и не закончится, но поделится информацией и мотивировать читателя хочется. Как и многие люди в ИБ я использовал на Kali Linux. Потом из-за обстоятельств я не мог работать на ПК. Но я отыскал у себя старенький ноутбук. На него я поставил antiX Linux. Затем я наткнулся на курс по реверсу. Впоследствии всё и закрутилось. Изучал IDA PRO, radare2, ассемблер, базовые техники реверса. Хотел продолжить на изучении бинарных уязвимостей, но потом понял, что в этой теме недостаточно силён. Решено было повысить навыки работы реверс-инженера. Оказалось, что ничего секретного разыскивать не нужно в интернете. Многое валяется на поверхности. Я говорю про книгу “Вскрытие покажет! Практический анализ вредоносного ПО”. Прочитав пару страниц из этой книги, стало понятно, что предстоит трудиться и трудиться над своими познаниями. Позже ПК починили и изучать реверс стало намного удобнее. Kali linux я поменял на обыкновенный дистрибутив linux, так как анализ ПО необходимо проводить в VirtualBox. Параллельно с изучением реверс-инжиниринга появилась необходимость изучить язык СИ (Книга по языку C).

Спасибо за прочтение. Желаю читателям не лениться и не сдаваться. Рекомендую всё, что вы изучаете конспектировать и практиковаться больше. Не болейте.

Источник

Реверс-инжиниринг на производстве при помощи 3D-сканирования

Интервью с экспертом по 3D-сканированию Георгием Казакевичем

– Если мы хотим понимать, что такое реверс-инжиниринг (reverse engineering), что нам нужно знать в первую очередь?

– Прежде всего надо разобраться, в чем состоит задача 3D-сканирования. Термин этот на самом деле расплывчатый, поскольку 3D-сканирование как таковое подразумевает просто сбор информации, которую надо обработать. «Сырые» данные не дают нам никакого практического результата.

Вспомните, какими были компьютерные игры лет пятнадцать-двадцать назад: на плоском экране прыгает несколько пикселей. Компьютеры того времени не могли обсчитать информацию больше, чем на эти несколько пикселей. За прошедшие годы вычислительные мощности неимоверно возросли. У любого из нас в кармане мобильный телефон, который мощнее, чем компьютер, который рассчитывал полет американцев на Луну. Поэтому сейчас, сидя за своим рабочим столом, вы можете обрабатывать колоссальные массивы информации. А 3D-сканирование, как я уже сказал, – ничто иное, как сбор информации.

– С какой целью мы собираем эту информацию?

– Для решения задач по двум направлениям – контроля геометрии и обратного проектирования (реверс-инжиниринга). Это два совершенно независимых процесса, и ими обычно занимаются разные отделы.

Обратное проектирование – миссия конструкторского отдела. Его применяют, если необходимо отмасштабировать или изменить геометрию изделия, а конструкторская документация отсутствует. Объект сканируется, и на основе данных сканирования мы получаем CAD-модель, которую можно редактировать. То есть обратное проектирование – это, условно говоря, перевод материального объекта в цифровую форму. Но это не только заимствование, но также и возможность перенести сделанный вручную объект в чертежи.

Реверс инжиниринг что это

– Значит, обратное проектирование – не всегда копирование?

– Да, не всегда. И здесь мы имеем дело с промышленным дизайном. Возьмем автомобильную промышленность. Во-первых, корпуса автомобилей создаются дизайнерами. Во-вторых, очень важно, чтобы поток воздуха правильно распределялся вокруг машины – это влияет на экономию топлива. Естественно, есть цифровые модели, которые позволяют производить продув в виртуальной аэродинамической трубе и проверять корпус на обтекаемость. Но любая цифровая модель – это всегда допущение. Удешевление технологии сканирования позволяет крупным производителям, таким как BMW или Mercedes, использовать ее для разработки новых корпусов. Они воссоздают полноразмерный макет машины и продувают его в реальной трубе. После этого они могут провести какую-то мелкую дополнительную обработку, чтобы добиться оптимальной схемы потока воздуха. Потом корпус просто сканируется и переносится в CAD/CAM-систему. То есть из реального объекта мы получаем виртуальный, который потом тиражируется. Это как раз наглядный пример того, что реверс-инжиниринг – не только копирование.

Возьмем тот же самый BMW. Чертежей у вас нет, но вы можете их получить с помощью 3D-сканера. Да, безусловно, методика производства вам не будет известна, ее придется разрабатывать. И это еще один ответ тем, кто говорит, что обратное проектирование – это просто копирование. На самом деле, это лишь подсказка, в каком направлении надо двигаться. Нормальному предприятию очень важно разработать технологию производства, а это стоит гораздо больших денег, чем создать чертеж.

– Давайте поговорим о том, что в себя включает процесс обратного проектирования.

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

В качестве примера мы взяли крыльчатку, которая является компонентом узла, используемого на нефтегазовых предприятиях. Допустим, этот узел иностранного производства (что встречается сплошь и рядом). Поскольку нефтегазовый сектор сейчас находится под санкциями, многие предприятия пытаются самостоятельно изготавливать запчасти для устройств, которые раньше поставлялись из-за рубежа. Итак, у нас есть узел, он исправно работает, но у него сломалась крыльчатка. А новую закупить мы не можем. Если приобрести отечественную, значит, придется менять всю периферию вокруг. Соответственно, если есть такой же узел с исправной крыльчаткой, мы можем ее отсканировать и создать 3D-модель в CAD. Затем, в зависимости от желаемого метода производства, либо экспортируем модель в САМ-систему, чтобы обработать стандартным образом на станке с ЧПУ, либо передаем на аддитивную установку. Во втором случае, как видим, производственный цикл сокращается. К тому же, надо понимать, что экспорт в САМ-систему и создание CAM-модели происходят не в автоматическом режиме (хотя для этого существует специальное ПО). Это всё трудозатраты человека.

Реверс инжиниринг что это

– Расскажите, пожалуйста, о Вашем практическом опыте реверс-инжиниринга.

– Упомяну несколько интересных проектов, выполненных экспертами компании iQB Technologies.

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

Реверс инжиниринг что это

Еще один пример. Заказчик предоставил нам картер трансмиссии. Была поставлена задача получить CAD-модель и чертежи с реально существующей трансмиссии, что нами и было сделано.

Реверс инжиниринг что это

А здесь вы видите цоколь фонарного столба, знакомый всем москвичам. Существует проект по замене всех таких цоколей в Москве. Требовалось получить модель современного цоколя и внести в нее определенные изменения. Мы создали 3D-модель и полностью ее оцифровывали. Зачем это делалось? Необходимо было соблюсти точные размеры, поскольку под цоколями находится электрика и разнообразное дополнительное оборудование. Кроме того, крепежи, которые смыкаются на столбе, заменены не будут. Таким образом, проект нового цоколя с применением обратного проектирования позволил минимизировать изменения и, соответственно, сократить расходы на них.

Реверс инжиниринг что это

И наконец, такой проект. Нашими клиентами были коллекционеры редких мотоциклов. Если происходит поломка, детали надо заказывать из-за рубежа – в России их купить практически невозможно. Мы получали запчасти, аналогичные поврежденным (снятые с другого мотоцикла такой же модели), или детали, которые часто ломаются. Мы сканировали эти детали, строили по ним CAD-модель, и теперь они изготавливаются в России.

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

Во второй части интервью Георгий Казакевич рассказывает о контроле геометрии при помощи 3D-сканирования. Следите за обновлениями в нашем блоге!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *