"С.П.Расторгуев, А.Е.Долгин "Как защитить информацию" (пособие по борьбе с хакерами)" - читать интересную книгу автора Чтобы модернизировать механическое изделие, электронное
устройство или интеллектуальный продукт - программу - надо понять принцип работы, определить основные и вспомогательные части. Для программ существуют специальные инструменты, позволяющие разбирать их "до винтика". Самые универсальные называются дизассемблеры и отладчики. Первые преобразуют непонятный машинный код в удобочитаемый текст на языке низкого уровня - ассемблере. Вторые - информируют обо всех процессах, протекающих в недрах компьютера, после выполнения отдельного участка или даже каждого шага программ, то есть помогают понять суть выполняемых операций. Поэтому следущая "линия обороны" любого блока защиты проходит именно здесь. Четкой грани между дизассемблированием и анализом полученного текста под отладчиком - нет (часто эти функции совмещены в единой программе), что и позволило объединить методы борьбы с обоими способами "взлома" в рамках одной статьи. Но приемы против каждого из них - свои. Ведь противодействовать декодировке записанного на дискете файла нельзя (допустима лишь пассивная защита - запутывание алгоритма или шифрация самих кодов), зато при работе защищенных модулей на компьютере ( пусть даже в пошаговом режиме отладки ) активное сопротивление вполне возможно. Еще одно замечание. Искусственное усложнение исполняемого модуля затрудняет исследование алгоритмов. Надежность защиты, в данном случае, зависит от того, насколько программист отождествит себя со "взломщиком", угадает логику его мышления и представит проблемы, с которыми тот сталкивается. А для этого ему самому нужно побывать в ОБЫЧНЫЕ ПРОБЛЕМЫ ХАКЕРА Проще всего разбирать чужую программу, если она уже распечатана на бумаге на любом языке высокого уровня (Паскаль, Си и т.д.), но в крайнем случае сгодится и ассемблер (машинные коды заменены их мнемоническим изображением). Кстати, в качестве универсального инструмента рекомендуем отладчик Turbo Debugger (TD), имеющий широкий сервис и удобный интерфейс. Естественно, автор программы, предусмотрев это, применил шифрование или ее разновидность - архивацию. А потому непосредственное дизассемблирование уже не даст верных результатов, если вообще что-то даст. Опытный хакер быстро поймет, что вместо текста идет "мусор" и сразу же начнет поиск средств для снятия шифра. Обычно он достигает цели, так как рано или поздно программа сама производит нужную операцию (она ведь не подозревает, что ее запустил хакер). Определив момент завершения дешифрации, можно "снять" в файл содержимое памяти, занимаемой уже "нормальной" программой, и, прогнав его дизассеблером, получить желаемый результат. Даже если используется поэтапная дешифровка (то есть она разнесена по времени), полной гарантии защиты нет - дизассемблирование лишь несколько затянется. Впрочем, когда дешифрацией занимается несколько подпрограмм и каждая является результатом работы предыдущей, хакеру предстоит очень нудная и кропотливая работа по их анализу. Отметим, что шифрование, хотя и не гарантирует полной |
|
|