На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Средства для восстановления исходного кода

Идея восстановления исходного кода стала толчком для развития целой индуст­рии технических решений. Инженеры по восстановлению исходного кода решают многие актуальные и сложные проблемы, например, те, что связаны с определением нужного протокола и восстановлением кода для исполняемых программ. Например, в 1980-х годах удалось восстановить исходный код BIOS для персональных компью­теров IBM PC, что привело к возникновению на рынке множества аналогичных ре­шений. Те же методы используются и в игровой индустрии телевизионных приста­вок (например, для создания аналогов Sony PlayStation). Для обеспечения совмес­тимости чипов компании Cyrix и AMD осуществили восстановление исходного кода для программного обеспечения и принципов работы микропроцессоров компании Intel. Но с точки зрения закона восстановление исходного кода граничит с преступ­лением. Новые законы наподобие DMCA и UCITA (которые критикуют многие специалисты по безопасности) накладывают жесткие ограничения на восстановле­ние исходного кода. Если вы собираетесь легально заниматься восстановлением исходного кода, следует ознакомиться с этими законами. Мы не собираемся делать заключительных оценок по поводу легальности восстановления исходного кода, поскольку не является юристами, но советуем всегда консультироваться со специа­листами по вопросам интеллектуальной собственности.
Отладчик
Отладчиком называется программа, которая выполняет внутри себя другую про­грамму и позволяет осуществлять контроль за этой исполняемой программой. С по­мощью отладчика можно проверять программу пошагово, отслеживать маршрут ис­полнения кода, устанавливать точки останова и контролировать значения перемен­ных и памяти проверяемой (или атакуемой) программы. Отладчик просто незаменим для определения логической структуры программы. Существует две ка­тегории отладчиков: отладчики пользовательских программ и отладчики ядра. От­ладчики пользовательских программ запускаются как обычная программа под управлением операционной системы и подчиняются тем же правилам, что и обыч­ные программы. Таким образом, отладчики этой категории способны выполнять от­ладку только других процессов, выполняющихся на уровне пользователя. Отладчик ядра является частью операционной системы, и с его помощью можно выполнять отладку драйверов устройств и даже самой операционной системы. Одним из са­мых популярных отладчиков ядра является отладчик Softlce. (http://www. compuware.com/products/driverstudio/ds/softice.htm).
Средства для внесения ошибок
Средства, которые способны предоставлять некорректные входные данные для атакуемого процесса, чтобы привести к появлению сбоя в ходе исполнения этого процесса, называются средствами для внесения ошибок. Выявить ошибки в прове­ряемой программе можно путем анализа сбоев в работе этой программы. Некоторые сбои приводят к тяжелым последствиям для системы безопасности. С их помощью хакер может получить непосредственный доступ к хосту или сети. Средства для вне­сения ошибок бывают двух типов: для применения на хостах и сетевые. Средства для внесения ошибок на хостах действуют наподобие отладчиков и способны подключаться к процессам и изменять состояние программы. Сетевые средства для вне­сения ошибок основаны на манипуляции сетевым трафиком в целях оценки эффекта воздействия на получателя.
Хотя классические методы внесения ошибок действуют на основе изменения ис­ходного кода, но появились и современные средства, в которых больше внимания уделяется манипуляциям с входными данными для программы. Особый интерес у специалистов по безопасности вызвали программы Hailstorm (от компании Cenzic), Failure Simulation Tool или FST (от компании Cigital) и Holodeck (от компании Florida Tech).
Дизассемблер
Дизассемблер позволяет конвертировать машинный код в код на языке ассемб­лера. Код на языке ассемблера является читабельной формой машинного кода (по крайней мере, более читабельной, чем строка битов). С помощью дизассемблера можно узнать, какие машинные инструкции используются в машинном коде. Ма­шинный код является специфическим для конкретной аппаратной архитектуры (например, для чипа PowerPC или Intel Pentium). Поэтому и дизассемблеры пишут­ся специально для конкретной аппаратной архитектуры.
Декомпилятор
Декомпилятор — это средство, которое позволяет преобразовать код на языке ас­семблера или машинный код в исходный код на высокоуровневом языке, например на С. Также существуют декомпиляторы для преобразования кода на промежуточ­ных языках наподобие байт-кода Java и кода на языке MSIL (Microsoft Intermediate Language) в исходный код наподобие Java. Эти средства оказывают огромную по­мощь в определений структуры кода на высоком уровне, например циклов, операто­ров switch и конструкций if-then. Хорошая пара дизассемблер/декомпилятор может использоваться для компиляции своего собственного результата восстанов­ления кода обратно в двоичный код.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика