Реверс программы что это

Содержание

Реверс-инжиниринг NET-приложений. Часть первая: Введение

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

Раскрыв ветку с кодом, мы увидим следующее дерево:

Reflector нашел только одну форму внутри нашего Crack-ME с именем Form1 (со всеми переменными, процедурами, функциями и графическими элементами). Как говорилось ранее, все имена элементов соответствуют оригинальным именам, которые используются в исходном тексте приложения, что позволяет легко определить назначение каждого элемента. К примеру, функция btn_Chk_Click(Object, EventArgs), скорее всего, выполняется при нажатии на кнопку «bnt_Chk», а функция btn_About_Click(Object, EventArgs) вероятно выполняется при нажатии на кнопку «btn_About».

Поскольку приложение учебное, в нем только одна форма и несколько функции, и это упрощает нашу задачу; в данный момент нас интересует, что происходит по нажатию кнопки «Check» (кнопка btn_Chk) и алгоритм работы функции btn_Chk_Click (), логика работы которой будет отображена на языке, выбранном при запуске Reflector (см. рисунок 2).

Общие принципы работы программы РЕВЕРС

Для просмотра исходного текста функции дважды щелкните на имя функции. Reflector покажет декомпилированный исходный код:

Все оказалось очень просто! В одной из следующих статей мы рассмотрим более продвинутые техники (например, изменение Crack-ME так, чтобы был доступен ввод любых паролей).

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

  • http://en.wikipedia.org/wiki/.NET_Framework
  • Ссылка для загрузки Crack-ME #1 http://www.mediafire.com/?yjoh2f6bv4d6n4i
  • Домашняя страница Reflector http://www.reflector.net/

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

Источник: www.securitylab.ru

Реверсинг и обфускация, как это работает

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

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

как ВЗЛАМЫВАЮТ игры? Что такое РЕВЕРС ИНЖИНИРИНГ (обратная разработка)?!

Кому нужен реверс-инжиниринг программного обеспечения?

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

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

Как бороться с реверсингом?

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

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

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

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

Читайте также:
L h tts3000 deutsch что это за программа

Как бороться с защитой от реверсинга?

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

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

А тем, кто хочет стать программистом, рекомендуем профессию «Веб-разработчик».

Источник: gb.ru

Реверс: что такое реверсивный инжиниринг, этапы обратного инжиниринга

Lorem ipsum dolor

Реверсивный инжиниринг, реинжиниринг, обратная инженерия, реверс-инжиниринг, обратная разработка, обратное проектирование, обратный инжиниринг или просто реверс — это все описани я одного процесса.

Реверс — это изучение готового устройства или программного обеспечения, чтобы понять суть его работы и принцип его строения.

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

Чаще всего реверс-инженерия связана с программированием и изучением закрытого программного обеспечения.

Например , кто-то создал программу и выпустил ее в свет, но исходный код не обнародовал. Появляются разные «энтузиасты», которые хотят от реда ктировать или доработать код программы. Для того чтобы это сделать , необходимо иметь в наличии исходный код программы, но его нет в открытом доступе. Таким образом, «энтузиасты» проводят реверсивные мероприятия или просто реверс, для того чтобы выяснить исходные код программы. Это что касается программирования, однако реверс-мероприятия применяются не только там .

Реверс — это не только программистское мероприятие

  1. Машиностроение и автомобилестроение. В этих отраслях всегда одни производители «копировали» что-то от других. Причем «копировали» как отдельные части, так и целые устройства.
  2. Электроника. Реплики дорогих флагманских телефонов — это реверс , и это не единичные случаи. В этой сфере «копирование» каких-то частей тоже не редкость: процессоры, части компьютеров, телефоны, фотоаппараты и др.
  3. Военная промышленность. Советский бомбардировщик Ту-4 был копией американского бомбардировщика В-29. Самое подделываемое оружие в мире — это автомат Калашникова. То ест ь б лагодаря реверс-инженерии легко подделывают даже оружие.

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

  1. С открытым исходным кодом. Это те, которые не прячут собственный исходный код, поэтому каждый может его посмотреть, модифицировать и использовать , согласно определенной ему лицензии. Такие программы могут быть платными и бесплатными.
  2. С закрытым исходным кодом. Это программы, у которых исходный код закрыт и недоступен общественности. Обычно исходный код закрывают, чтобы защитить программу от копирования и модификаций. Такие программы бывают бесплатными, но чаще всего это платные программы, принадлежащие какой-то компании.
  1. Анализ обмена информации. При таком подходе проводят «прослушку» работы программы, просматривают , как она обменивается информацией с другими программами или серверами. Эта методика позволяет выяснить структуру работы программы.
  2. Дизассемблирование программы. Код любой программы, которая работает на устройстве, разными способами «превращается» в машинный код. Машинный код — это код , который исполняется внутри устройства. Его заполучить можно. Суть этой методики сводится к тому, чтобы из машинного кода, который непонятен человеку , получить код на языке ассемблера, который уже можно понять. Таким образом, п осле подобной обработки не получается исходный код программы, но получается код, на который можно воздействовать.
  3. Декомпиляция кода. Эта методика похожа на предыдущую. Тут также берут машинный код, байт код или скомпилированный код программы и пытаются получить из него код на языке более высокого уровня , т о ест ь п ытаются восстановить исходный код программы. Декомпиляция — это обратный процесс компиляции. Компиляция — это преобразование кода программы, написанного на языках высокого уровня, в низкоуровневый код, который понятен устройству. Пример скомпилированного файла — это любой исполняемый файл «.exe» в операционной системе Windows.

Заключение

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

Мы будем очень благодарны

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

Источник: codernet.ru

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

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

Введение

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

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

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

Читайте также:
Com Android thememanager что это за программа на Андроид

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

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

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

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

США

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

Россия

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

Евросоюз

  • Директива 2009/24/ЕС о правовой охране компьютерных программ

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

Производители софта обычно включают пользовательское соглашение (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.

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

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

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

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

Читайте также:
Cetusplay что это за программа

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

Если говорить о российском законодательстве, то в целом оно допускает проведение реверс-инжиниринга, о чем идет речь в статье 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 АПК РФ, не имело цели создания для истца каких-либо негативных последствий и не привело к возникновению таких последствий.

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

Выводы

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

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru