Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Обратная разработка. Reverse engineering (реверсинжиниринг)

Лекция



Привет, Вы узнаете о том , что такое обратная разработка, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое обратная разработка, reverse engineering, реверсинжиниринг , настоятельно рекомендую прочитать все из категории Криптоанализ, Виды уязвимости и защита Информации .

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

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

Alen nobi, nostra ales

фраза из одного совкового фильма

если один человек построил, другой завсегда разобрать может!

Юридические аспекты

Россия

  • Граждaнский кодекс РФ (часть четвертая) ;
  • Федеральный закон РФ «О коммерчеcкой тайне» ;
  • Федеральный закон РФ «Об информации, информационных теxнологиях и о защите информации» .

США

  • Закон об авторском праве и положения о добросовестном использовании (раздел 17 Свода зaконов США (U. S. C.) и статья 107 указанного раздела);
  • Закон о секрете производcтва;
  • Положения о запрете обхода технических мер защиты Закона об автоpском праве в цифровую эпоху (он же тот самый DMCA) (статья 1201 раздела 17 Свода законов США);
  • Закон о конфидeнциальности электронной связи (статья 2510 раздела 18 Свода законов США).

Евросоюз

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

  • Директива 91/250/EEC от 14 мая 1991 года «О правовой охране программ для ЭВ» — положения директивы предписывают государствам-членам ЕС осуществлять посредством авторского права охрану компьютерных программ как литературных произведений в том виде, как этот термин понимается в Бернской конвенции .
  • Директива 92/100/EEC от 19 ноября 1992 года «О праве на прокат и праве на предоставление в безвозмездное временное пользование и некоторых правах, относящихся к авторскому праву в области интеллектуальной собственности» — соответствует положениям внутреннего рынка Римского договора. Директива описывает право аренды и кредитования как часть защиты авторских прав, а также устанавливает минимальные стандарты для защиты смежных прав исполнителей, фонограмм, кинопродюсеров и вещательных организаций.
  • Директива 93/83/EEC от 27 сентября 1993 года «О согласовании некоторых норм авторского права и прав, относящихся к авторскому праву, применимых к эфирному вещанию через спутник и к ретрансляции по кабелю» — регулирует применение авторского права и смежных прав в спутниковом и кабельном телевидение в Европейском Союзе. Эта директива, как и предыдущая была принята с целью соответствия с положениями внутреннего рынка Римского договора.
  • Директива 93/98/EEC от 29 октября 1993 года «О гармонизации срока действия охраны авторского права и некоторых смежных прав» — целью директивы стало приведение к единству срока охраны авторских прав в государствах-участниках ЕС (50 лет).
  • Директива 96/9/EC от 11 марта 1996 года «О правовой охране баз данных» — охрана авторского права для баз данных, признанных оригинальными, и новое sui generis право по неоригинальным базам данных.
  • Директива 2001/29/EC от 22 мая 2001 года «О гармонизации некоторых аспектов авторского права и смежных прав в информационном обществе» — реализация Договора ВОИС по авторскому праву и гармонизация различных аспектов авторского права по всей Европе, в том числе ограничений и исключений в авторском праве.
  • Директива 2001/84/EC от 27 сентября 2001 года «О праве перепродажи для получения выгоды автором оригинального произведения искусства» — принята для унификации законов в сфере перепродажи прав на произведения, так как не во всех странах ЕС автор получал роялти от перепродажи.
  • Директива 2004/48/EC от 29 апреля 2004 года «О реализации прав на интеллектуальную собственность» — направлена на борьбу с контрафактом и пиратством на внутреннем рынке путем унификации законов в этой сфере.

Обратная разработка на службе государств

В 2016 году на заседании Правительственной комиссии по импортозамещению министр промышленности торговли РФ Д.В.Мантуров заявил о планах создать на базе Фонда развития промышленности центр обратного инжиниринга .

Сферы применения обратной разработки

Машиностроение, автомобилестроение, авиация

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

Примеры:

  • Советский грузовик АМО-3 был практически полной копией американского грузовика «AutoCar-SA».
  • Советский лодочный мотор «Москва» был практически полной копией очень удачного американского мотора ScottAtWater.
  • Пример неудачного выбора прототипа для обратной разработки — советский лодочный мотор «Вихрь», копия немецкого мотора Koening.
  • Советский самолет Ту-4, за исключением двигателей, является почти точной копией американского Boeing B-29 Superfortress.
  • Практически все бензиновые двигатели, установленные на мотоблоках, генераторах и других малогабаритных машинах китайского производства — копии японских моторов Honda GX.
  • Знаменитые японские АКПП Aisin A130 и A140 — несколько доработанные нелицензионные копии АКПП Chrysler 1940—1950-х годов, которые производились американской компанией на заводах в Японии после Второй мировой войны.
  • Первые китайские внедорожники Amiral, GreatWall и другие — нелицензионные практически точные копии внедорожника Toyota Hilux Surf.

Электроника

Обратная разработка электронных устройств появилась еще на заре радиотехники. В 1920-1930 годах различные фирмы копировали друг у друга радиолампы и схемотехнические решения их применения. Именно с обратной разработкой, а не с лицензионным производством, связано то, что радиолампы одного назначения почти всех производителей оказались унифицированными и взаимозаменяемыми. Например европейская лампа EL95 клон более ранней американской лампы 6KA5. Есть и обратные примеры: американские 6CA5 и KT88 - клоны европейской лампы EL34. То же самое относится и к советским радиолампам, многие из которых являются клонами американских ламп, получаемых по ленд-лизу (например 6Ж4, 6П9) или немецких из трофейной аппаратуры (6Г2, ГУ50).

  • Копирование различных электронных блоков без фактической разработки. Известно , что многие элементы, в частности, ТТЛ различных компаний и национальных стандартов, взаимозаменяемы. Например, американская серия интегральных схем 7400 и ее советский аналог К(Р)155.
  • Процессор Am386 компании AMD создан ради совместимости с чипом 80386 фирмы Intel и в пользу экономической целесообразности
  • Процессоры Super386 38600SX и 38600DX компании Chips and Technologies созданы методом ОР.

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

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

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

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

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

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

В настоящее время под словами «reverse engineering» чаще всего понимается т. н. clean room reverse engineering, то есть процесс, при котором одна группа разработчиков анализирует машинный код программы, составляет алгоритм данной программы на псевдокоде либо, если программа является драйвером какого-либо устройства, составляет исчерпывающие спецификации интересующего устройства. После получения спецификаций другая группа разработчиков пишет собственный драйвер на основе полученных спецификаций или алгоритмов. Такой подход позволяет избежать обвинений в нарушении авторских прав на исходную программу, так как по законам, к примеру в США, подпадает под понятие «fair use», то есть добросовестного использования оригинальной программы. Об этом говорит сайт https://intellect.icu . Результат обратной разработки редко идентичен оригиналу, что и позволяет избежать ответственности перед законом, особенно при условии контроля отсутствия этой идентичности первой группой разработчиков и отсутствия нарушений торговых марок и патентов.

Базы данных

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

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

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

Так например, ряд производителей фототехники, таких как Sigma, Tamron, Tokina и Carl Zeiss, выпускают объективы с байонетом типа Canon EF. Они созданы методом обратной разработки, а их производители не имеют доступа к спецификациям Canon

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

Обратная разработка. Reverse engineering (реверсинжиниринг)

Jerry cans

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

  • Немецкие канистры для бензина — в британских и американских войсках заметили, что немцы имели очень удобные канистры. Они скопировали эти канистры, и те получили название Jerry cans (от слова «gerrys» — от «Germans»)[16].
  • Туполев Ту-4 — несколько американских бомбардировщиков B-29 при осуществлении вылетов в Японию совершили вынужденную посадку в СССР. Советские военные, не имевшие подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически его полную копию[17]. В то же время двигатели, вооружение и радиоэлектронное оборудование Ту-4 не было копиями соответствующих систем В-29.
  • Тепловоз ТЭ1 — в 1945 году тепловоз RSD-1 (Да) (поставлялся в СССР по ленд-лизу) привел литерный поезд Сталина на Потсдамскую конференцию. Сталин высоко оценил данный локомотив, поэтому в 1947 году начался выпуск советской копии американского тепловоза — ТЭ1. Несмотря на некоторые отличия в размерах и отдельном оборудовании, ТЭ1 оказался практически идентичен Да[18]. Все нынешние российские маневровые тепловозы — потомки американского тепловоза.
  • Минометы — немцы в военные годы успешно скопировали советские трофейные 120 мм минометы, которые взяли себе на вооружение под именем Granatwerfer 42.
  • Автомат Калашникова — недавно руководство ОАО «Ижмаш» заявило, что около половины всех АК в мире — «контрафактные» (то есть, производимые без лицензии и передачи технологий), из-за чего Россия недополучает около миллиарда долларов в год. В то же время, патентные ограничения (если таковые имелись) на технологии и технические решения утратили свою силу[19].

Software Реверсинг

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

  • Анализа вирусов/троянов/червей и прочего дерьма с целью создания средств защиты.
  • Поиска дырок в закрытом софте с целью создания вирусов/троянов/червей/сплойтов и прочего дерьма.
  • Создания описаний для форматов данных/протоколов, используемых в программах и прочем дерьме. Пример с преподской тестирующей программой относится сюда.
  • Анализа работы закрытых драйверов и прочего дерьма для создания открытых линупсовых.
  • Изготовление пиратских серверов серверных игр вроде WoW и допилка их рубанком до сходства с официальным, ясное дело, дерьмом.

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

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

Hardware Реверсинг

Обратная разработка. Reverse engineering (реверсинжиниринг)

Реверс инжиниринг дивайса

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

  • Скручивания одометров на прульном дерьме, патчей блоков управления подушками безопасности (чтобы быдло думало, что его 15-летнее БМВ еще не побывало в аварии).
  • Патчей для тепло-, водо-, электросчетчиков, контрольно-кассовых машин и прочего дерьма.
  • Патчей блоков управления моторами с целью добытия большего количества дерьма лошадиных сил из двигателя и на порядок раннего экстерминатуса мотора. Алсо для снятия ограничителя скорости.
  • Снятие каких-либо ограничений, заложенных производителем в девайс (как в модемах US robotics и тому подобном дерьме).
  • Восстановление документации, если оная утеряна либо уничтожена из-за древности, но очень надо получить еще сотню таких же устройств.
  • Поддержка жизненного цикла дорогих проприетарных девайсов, купленных планктоном, сразу же распилившим средства на их техподдержку на что-нибудь более уютненькое. Тру «форд фокус», например.

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

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

Инструменты

Дизассемблеры

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

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

Sourcer от компании V Communications. Стародавний мощный дизассемблер времен DOS и ранних версий Windows. Позволял из .COM или .EXE файлов получать непосредственно .ASM файл, причем для различных компиляторов ассемблера, таких как TASM или MASM. Если было задано достаточное количество проходов при дизасемблировании, то с высокой степенью вероятности можно было при компилировании только что созданного .ASM файла получить исходную исполнимую программу байт-в-байт. Доставлял хорошими комментариями в листинге, скоростью работы, поддержкой разных типов процессора и, конечно, олдскульным сценовским интерфейсом. Сейчас не актуален, хотя некоторые анонимусы продолжают держать его в своем инструментарии, например, для дизассемблирования MBR жесткого диска, Boot-сектора, специальных утилит, загружаемых с дискеты без какой-либо ОС (например утилиты перепрошивки BIOS или утилиты от производителей HDD), и прочего. То есть для низкосистемных нужд. Последней явилась на свет версия v8.01 от 2001 года. Sourcer — помним, любим, скорбим!

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

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

Отладчики

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

Обратная разработка. Reverse engineering (реверсинжиниринг)

Матрица поимела тебя. Анализ кода в IDA.

Обратная разработка. Reverse engineering (реверсинжиниринг)

IDA в линуксе или линукс в IDA?

IDA

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

Пишет его татарский расовый мудак по имени Ильфак Гуильфанов. Детали истории создания дизассемблера покрыты мраком, но известно, что Ильфаку, как и Биллу Гейтсу с DOS, добрые люди помогли написать первые версии. И задумывался он как инструмент для восстановления прошивок HDD. Дальше, непонятно как и почему, люди разошлись, и остался он один. Потом Ильфак всплывает с версией 3.x уже от лица фирмы Datarescue, которая купила проект. Начиная с версии 4.0, у него появляется GUI, написанный на BCB! С этого времени продукт начинает приобретать массовую известность в узких кругах по двум причинам:

  • MUST HAVE
  • «Ильфак — пидорас»

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

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

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

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

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

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

SoftIce

Обратная разработка. Reverse engineering (реверсинжиниринг)

Прошлый desktop-тред в бамплимите, начинаем новый…

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

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

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

Radare2

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

Остальные

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

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

OllyDbg — отладчик третьего уровня, гуишный, симпатяффный, функционала выше крыши, применим для 95 % программ, а пропатчен ручками и для всех 98%. Но из-за того, что r3 среди профессионалов считатся не труъ-тулзой, подходящей скорее для скрипткидисов, чем для разбора чего-то реально сложного, автор положил на него член, и теперь отладчик разрабатывают новые умельцы, пафосно назвав OllyDbg 2.0. [Отечественная разработка http://www.ollydbg.de ], хоть и менее известна, чем SoftIce, вполне кошерна и к тому же бесплатна. Релизы выглядят хреново, но парни явно набираются опыта и идут в правильном русле.

Декомпиляторы

Современные быдлоязыки программирования типа Java, C# и прочего .NET'a вовсе и не требуют для своего взлома применения дизассемблеров и отладчиков. Весь исходный код легко можно получить в считанные секунды, а если кодер — лох и не применил даже обфускацию, то полученные исходники от авторских будут отличаться разве что отсутствием комментариев в первых. Впрочем, и для обычных сишных бинарников есть декомпиляторы, правда, полудохлые и малоюзабельные. Кому интересно, смотреть здесь и вот тут.

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

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

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

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

DeDe Full: Декомпилятор для Delphi программ любых версий.

dex2jar Для приложений APK, при помощи dex2jar конвертируем в jdk и чтение в JD. Java Decompiler

Обратная разработка. Reverse engineering (реверсинжиниринг)Обратная разработка. Reverse engineering (реверсинжиниринг)

«Проект Java Decompiler» направлен на разработку инструментов для декомпиляции и анализа «байтового кода» Java 5 и более поздних версий.

JD-GUI - это автономная графическая утилита, которая отображает исходные коды Java файлов «.class». Вы можете просматривать восстановленный исходный код с помощью JD-GUI для мгновенного доступа к методам и полям.

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

JD-Core - это библиотека, которая восстанавливает исходный код Java из одного или нескольких файлов «.class». JD-Core можно использовать для восстановления утерянного исходного кода и изучения источника библиотек времени выполнения Java. Поддерживаются новые функции Java 5, такие как аннотации, обобщения или тип «enum». JD-GUI и JD-Eclipse включают библиотеку JD-Core.

Деобфускаторы

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

Для JavaScript — JSBeautifier.

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

Прочая дребедень

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

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

Анализаторы трафика (снифферы)

Wireshark — программа-анализатор трафика для компьютерных сетей Ethernet и некоторых других. Имеет графический пользовательский интерфейс. Изначально проект назывался Ethereal, но, из-за проблем с торговой маркой, в июне 2006 года проект был переименован в Wireshark.

Вещи, затрудняющие анализ

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

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

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

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

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

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

Антиотладка — приемы для борьбы с отладкой. Для мелкософтовского виндувса достаточно IsDebuggerPresent(). Например, уныло посмотреть поле BeingDebugged в пебе, или посмотреть значение NtGlobalFlag. Это 2 самых говнометода, илита же предпочитает еблю с rdtsc (многопроцессорные системы сосут члены), ядерные сплойты и парсинг физической памяти. На каждый такой прием существует антиприем, ну и так далее. И обычно это люто, бешено глючит, бсодит, и вообще, нормальные люди не отлаживают всякую фигню на своих компах, а заставляют давиться этим калом эмуляторы: Virtual Box, VMWare, VirtualPC и т. д.

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

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

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

Обращения к взломщикам внутри исполняемого файла в виде ASCII-строк - и такое встречается часто! Начиная от «злобные дяди хакиры, ни ламайте пожалуйста маю программку, нет денег на пиво»® до всяких «yates stilL Here kinda Ooooh» и целых анекдотов про улитку в серьезных защитах. Действуют на хакеров-ломакеров сильнее, чем все вышеперечисленные приемы, заставляя последних давиться от хохота, тем самым оттягивая дату неминуемого взлома.

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

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

Вау!! 😲 Ты еще не читал? Это зря!

  • GNU Ferret
  • Язык ассемблера
  • Взлом программного обеспечения
  • Контрактная разработка электроники
  • Radare2
  • Debuging, debug, дебаг
  • Гражданский кодекс РФ / Часть 4 / Раздел VII. Права на результаты интеллектуальной деятельности и средства индивидуализации / Глава 70. Авторское право / Статья 1280. Свободное воспроизведение программ для ЭВМ и баз данных . Декомпилирование программ для ЭВМ.

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

создано: 2017-08-06
обновлено: 2023-08-15
132395



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


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

Криптоанализ, Виды уязвимости и защита Информации

Термины: Криптоанализ, Виды уязвимости и защита Информации