Разобрать механизм с целью понять, как это работает
Опубликовано: 2022-03-10Последнее обновление: 21 марта 2022 г.
Я расскажу о том, что такое реверс-инжиниринг и почему это важно. Многие люди, не являющиеся разработчиками, думают, что знают, что такое реверс-инжиниринг, потому что видели его в фильмах, но это заблуждение. Реверс-инжиниринг имеет много значений для разных людей, и то, что я собираюсь вам рассказать, будет сильно отличаться от чьего-то другого определения.
Для программного обеспечения White Label реверс-инжиниринг, по сути, берет программу и выясняет, как она работает и что она может делать. Однако, если быть более точным, реверс-инжиниринг берет существующую программу и изучает ее внутреннюю работу, чтобы вы могли модифицировать программу, чтобы она делала что-то другое, чем задумал автор. Вы можете узнать больше о том, что означает white label, просматривая наш сайт!
В разработке программного обеспечения мы говорим, что вы занимаетесь реинжинирингом чего-то, когда разбираете его на части и выясняете, как оно работает. Обратное проектирование полезно для изучения того, как использовать программное обеспечение и как оно работает. Его также можно использовать во многих других областях, таких как цифровой маркетинг, защита вашей компании, взлом и многое другое.
Обратный инжиниринг в маркетинге
Если вы намерены создать новую маркетинговую кампанию, вы можете провести реинжиниринг программного обеспечения, чтобы узнать, что оно делает или как оно должно работать. Затем вы можете изменить код, чтобы адаптировать его к вашим потребностям. Вы можете сделать то же самое с рекламой или другими видами маркетинга. Также можно узнать информацию о конкурентах, характеристиках и характеристиках продукта и многое другое.
Когда вы хотите что-то создать, вам сначала нужно начать с дизайна. Вы можете использовать инструменты, которые помогут вам создать дизайн, но вы также должны протестировать его на своих материалах, потому что важно знать, будут ли вещи взаимодействовать адекватно. Иногда вам нужно пошалить в программах и выяснить, как они работают, создавая ложные результаты. Вы даже можете управлять автомобилем с изображением реального автомобиля, особенно если хотите посмотреть, как он себя ведет. Мы называем это вождение виртуальным или виртуальным вождением.
Что такое обратный инжиниринг?
Это процесс анализа компьютерной программы для определения ее внутренней структуры, исходного кода, алгоритмов и потока данных. Цель обратного проектирования — понять, как работает компьютерная программа и что находится внутри программы. Там, где вы читаете эту информацию, она может называться анализом сбоев, дизассемблированием, обратной разработкой или отладкой. Мне нравится «отладка», потому что это больше похоже на действие, выполняемое программистом, когда на самом деле это не так. В настоящее время большинство программистов даже не осознают, что они реверс-инженеры.
Реверс-инжиниринг — это процесс использования части программного обеспечения, программы (или взломщика) для выполнения действия, для которого разработчик никогда не планировал его использовать (но иногда это происходит). В этом сценарии хакер нашел уязвимость в коде программы и выяснил, как ее использовать для получения желаемого эффекта. Например, хакеры перепроектировали игры и знают, как они работают или какую информацию они могут получить.
Почему это важно?
Почти каждое программное обеспечение на рынке подвергается реверс-инжинирингу. Есть несколько программ, которые не реверсируются. Даже приложения Microsoft были реконструированы. Даже целые компании только и делают, что реконструируют программное обеспечение за деньги.
Реверс-инжиниринг становится все более важным с тех пор, как правительство США приняло законы о защите программного обеспечения или управлении цифровыми правами (DRM). Не было бы программного обеспечения с DRM, если бы оно не подвергалось реинжинирингу, а реконструированные программы не были бы защищены DRM. Есть и другие причины, по которым реверс-инжиниринг важен, но это тема для целой книги (или серии книг).
Реверс-инжиниринг изменил мир. Это полностью изменило образ жизни людей. Плюсов в нем много:
- Вы можете заставить программу делать то, что вы хотите.
- Вы можете узнать, как удалить из программы то, чего там быть не должно.
- Становится легче что-то разбить на составляющие и анализировать дальше.
Каковы преимущества обратного инжиниринга?
Вы можете увидеть, что он делает, и узнать о его внутренних механизмах, обратив программу. Вы можете вносить изменения в программу, не затрагивая другие программы или операционную систему. Это значительное преимущество, поскольку большинство программ должны быть совместимы с библиотеками и операционными системами, предоставляемыми их издателями. Внесение изменений в программу может серьезно повредить не только вашу систему, но и других пользователей. Реверс-инжиниринг дает вам доступ ко всем внутренним механизмам, библиотекам и информации о том, как это работает. Вы можете создавать программы, которые могут использовать библиотеки и операционные системы, не платя за них.
Что такое процесс реверс-инжиниринга?
Это сложный вопрос, потому что ответ зависит от вашей программы обратного инжиниринга. Лучший ответ, который я могу вам дать: «Это зависит от…». Современные программы имеют защиту от отладки, обратного проектирования и перезаписи кода. Это означает, что реверс-инжиниринг включает интенсивное использование запутывания, что приводит к пустой трате времени и иногда может привести к сбоям программы.
Обфускация — это метод, препятствующий обратному проектированию, который затрудняет обратный инжиниринг программы. Подпрограммы, функции и другие части программы обычно перемещаются в разные места в памяти, а структуры данных изменяются с помощью магических чисел. Иногда код шифруется или сканируется на наличие определенных слов, которые могут дать информацию о его структуре. Этого не всегда достаточно для победы над реверс-инженерами, поэтому иногда программа дает сбой при попытке дизассемблировать ее с помощью определенных инструментов. Во многих странах это является незаконным, даже если вы владеете копией программного обеспечения и не вносили в него никаких изменений.
Как реконструировать программное обеспечение/программы?
Если вы не привыкли к реверсивному инженерному программному обеспечению, целесообразно сначала начать с доступных программ. Было бы лучше, если бы вы попытались изучить инструменты, специфичные для обратного инжиниринга, прежде чем прыгать в глубокий конец пула. Хорошим инструментом для начинающих является IDA Pro. (IDA расшифровывается как анализ обнаружения вторжений). Он бесплатный, легкодоступный и может отменить почти любую программу, если она 32-разрядная. IDA Pro работает, анализируя скомпилированный или дизассемблированный код, а затем отображает его таким образом, чтобы вам было легче читать, понимать и даже редактировать. IDA Pro — хороший инструмент для реверс-инжиниринга, но он подходит не для всех ситуаций.
Другим инструментом является GDB, который представляет собой инструмент отладки, такой как Visual Studio. Однако GDB будет отлаживать код во время выполнения точно так же, как Visual Studio. Разница в том, что вы можете внести изменения в код во время выполнения, а затем вызвать сбой программы. Это позволит вам увидеть ошибку в логике (при условии, что механизм защиты от отладки/обратного проектирования не маскирует ее). После этого вы можете исправить ошибку или продолжить выполнение до тех пор, пока какая-то другая часть программы не вызовет проблему.
Каковы риски реверс-инжиниринга?
В большинстве стран запрещена реверс-инжиниринг программного обеспечения. Тем не менее, в некоторых ситуациях в США это не является незаконным, если вы владеете копией программы и можете доказать, что она была приобретена на законных основаниях (используя серийный номер или CD-ключ). Существуют также исключения для механизмов защиты от копирования и пиратства, которые разрешены только в образовательных целях. Чтобы реконструировать программу, у вас должно быть достаточно информации, чтобы сделать это. Обычно это означает понимание исходного кода программы, которую вы реконструируете. Это не всегда легко, даже если вы можете читать исходный код, в основном, если использовался механизм защиты от отладки/обратного проектирования.
Надеюсь, вы лучше поймете, что такое реверс-инжиниринг и как его применять в разных случаях. Я также надеюсь, что вы станете более осведомлены в этой области и поможете своему бизнесу и клиентам расти, используя свои инструменты знаний более современным способом.