рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Крипт-система

Крипт-система - раздел Компьютеры, NAG SCREEN "не Считай Человека Мертвым, Пока Не Увидишь Его Тело. И Даже Тогда Т...

"Не считай человека мертвым, пока не увидишь его тело. И даже тогда ты можешь ошибиться."

Ф. Херберт. "Дюна".

Уникальность HIEW-a прежде всего в том, что SEN впервые в мире реализо­вал в нем удобную интерпретируемую крипт-систему. Раньше этого попросту не было. Если требовалось расшифровать файл или его фрагмент, то необходимо было писать собственную программу на ассемблере или любом другом языке высокого уровня.

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

Внешне экран встроенного редактора скриптов показан ниже. Конечно, это не привычный нам полноэкранный редактор, а подстрочечник (наподобие того,который был в ZX-SPECTRUM-48), но пользоваться им достаточно удобно. К тому же типичный скрипт занимает всего несколько строк, ради которых интегрировать в HIEW полноэкранный редактор было бы расточительством.

Хотя в заголовке строки ввода гордо красуется 'Pentium Pro Assembler', HIEW понимает только ограниченный набор команд, который даже не покрывает 8086. Было бы неплохо, если бы автор изменил заголовок и не вводил пользователей в заблуждение.

Очень большим ограничением является отсутствие операндов в памяти. Из этого следует, что сколь-нибудь серьезный скрипт написать не удастся. Все, что доступно хакеру — это 32 байта памяти в виде регистров ЕАХ, ЕВХ, ЕСХ, EDX, ЕВР, ESI, EDI, ESP. Да, в последнем случае я не оговорился — в криптосистеме HIEW регистр esp — "общего" назначения, и ничто не помешает использовать его для своих нужд.

При этом скорее забавно, чем грустно, выглядит отсутствие условных перехо­дов. Pentium Pro Assembler? Ну-ну... С другой стороны, программирование в таких "жестких" рамках само по себе представляет увлекательнейшую головоломку и действительно иногда напоминает "высший пилотаж". 32 байта памяти — при­мерно столько было в первых программируемых микрокалькуляторах. Но даже там были условные переходы и прямая адресация памяти. Впрочем, черт с ними, с условными переходами, их бы можно было реализовать исходя из принципа эквивалентности с помощью всего двух команд NOR и OR. Но в HIEW-e вообще нет переходов! Нет регистра-указателя команд!

Печально все это... А ведь в QVIEW-e таких ограничений попросту нет. Там управление передается полноценной ассемблерной программе, которая может делать все что ей заблагорассудится. Однако, QVIEW проигрывает в интерактив­ности.Набор регистров:

AL, АН, АХ, ЕАХ, BL, ВН, ВХ, ЕВХ, CL, СН, СХ, ЕСХ, DL, DH, DX, EDX, SI, ESI, Dl, EDI, ВР, ЕВР, SP, ESP.

Итак, поддерживаются следующие команды. Команды пересылки.:

MOV регистр, регистр MOV регистр, непосредственный операнд

Арифметические команды:

AND, NOT, NEG, OR, XOR, SUB, ADD, ROL, ROR, MUL, DIV. SHL и SHR не поддерживаются. Передача параметров: на входе АХ на выходе АХ

Как видим, набор инструкций воистину "спартанский". Однако для большин­ства задач его все же хватает. Заметим, что чаще всего большинство разработчи­ков использует операцию XOR, поэтому в HIEW-e она выделена в отдельный обработчик.

Самое интересное, что последний работает не только с байтами/слова­ми/двойными словами, но и со строками любой длины (точнее до 20 символов). Для задания хог-маски нужно нажать Ctrl-F8, но это окно вызывается и при нажатии F8, если маска еще пуста.

Очень часто в программировании используется шифр Вернама, сводящийся к ксорению кода некой строкой, допустим 'KPNC++'. (Подробнее о нем читайте в главе, посвященной криптографии.) Предыдущие версии HIEW не имели такой возможности и не поддерживали строки. Разве что из четырех байт (двойного слова).

К сожалению, остальные команды до сих пор не могут работать со строками, и это сильно удручает. Но вернемся, собственно, к интерпретатору скриптов. Рассмотрим простейший пример. Для вызова редактора нажмем Ctrl-F7 и введем следующую последовательность команд:

Xor ax,1234

Loop 1

Ожидается, что она должна расшифровывать текст по xor word.Ox 1234. Однако этого не произойдет. HIEW автоматически не может определить размер операндов и поэтому по умолчанию работает только с байтами (см. строку статуса в заголовке). При этом старший байт регистра АХ действительно будет корректен, но инкремент все же будет равен единице, а не двойке, как следовало бы ожидать по логике вещей.

Чтобы изменить шаг, необходимо нажать F2; при этом в строке статуса 'Byte' сменится на 'Word'. Также можно изменить и направление (т.е. поменять инкремент на декремент, для чего служит клавиша F3), но в нашем примере мы этого делать не будем.

Команда loop' на самом деле никакой не loop', а настоящий 'jmp', причем направленный только назад. Если вы попытаетесь сделать прыжок "вниз", то произойдет приблизительно следующее:


Ну никак не хочет HIEW понимать таких конструкций. Впрочем, так и должно быть. Команда loop' последняя в скрипте, и все ее назначение — зациклить программу. При нажатии на F7 (Crypt) HIEW шифрует слово/байт и, встретив loop', останавливается, ожидая следующего нажатия F7, после чего переходит на указанную метку.

При этом loop Г можно опустить. Обычно так и поступают. Но иногда необходимо выполнить только один раз некий инициализационный код, как например, показано ниже. При этом строка 1' выполняется только один раз, а все остальное время HIEW крутится в цикле 2—4.


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

Пользователю приходится действовать вручную, нажимая Ctrl-F7 (Crypt-Set), F5 (ClearReg). При этом всплывает еще один баг автора — "теневой" регистр указателя команды будет также сброшен, но "визуальный" указатель '>' останет­ся неизменным, вводя пользователя в некоторое заблуждение и заставляя искать еще одну клавишу сброса этого регистра. Но ее нет: достаточно однократного нажатия F5, а на знак '>' попытайтесь просто не обращать внимания.

Использование Crypt в качестве калькулятора — довольно любопытный прием, облегчающий хакерам жизнь и страхующий от многих ошибок. Большая часть вычислений так или иначе связана с анализируемым файлом. При этом утомительно переносить необходимые значения в калькулятор (еще и не ошибив­шись в порядке следования старших и младших байт), — можно просто указать HIEW-y последние курсором. Ведь крипт принимает входные данные, и, если сохранить то же самое значение регистра АХ на выходе скрипта, шифровка окажется "прозрачной", т.е. не изменяющей значение под курсором.

Допустим, нам необходимо прочесть значения двух переменных, хранящихся в одном байте в упакованном виде. Пусть три старших бита отводятся под одну из них и пять под другую. В калькуляторе это вычислять будет утомительно и неудобно. А поскольку он не может обрабатывать двоичных чисел в строке ввода, то и вовсе невозможно. Поэтому прибегаем к довольно бесхитростному скрипту. Но как мы узнаем полученный результат? Очень просто: поскольку значения регистров сохраняются, достаточно вызвать CryptSet и взглянуть на них. Впро­чем, это ненамного хлопотнее, чем ввести то же значение в калькулятор. Поэтому рассмотрим действительно полезный пример. Допустим, нам необходимо узнать хеш-сумму некоторого фрагмента (например, для того чтобы исправить CRC после правки пары байт в коде). Возьмем, к примеру, простейший алгоритм суммирова­ния байт (который очень распространен).

Add bx,ax ax=0000

"Прогоняем" расшифровщик по выбранному фрагменту, теперь вызываем редактор и смотрим на значение регистра ВХ:

add bx,ax ax=0121

bx=7534

Это и будет искомая хеш-сумма нашего фрагмента. Удобно, не правда ли? К сожалению, не всегда. Большие фрагменты так обрабатывать крайне утомительно. Необходимо будет "вручную" интерактивно прогнать курсор по всему блоку, каждый раз прокручивая страницу и возвращаясь на предыдущее место. Любая ошибка будет фатальной, и сделать откат (т.е. вычесть значение из ВХ) не представляется в текущих версиях возможным. Как это будет ни печально, придется все начинать сначала.

Для таких целей лучше все же подходит QVIEW. hiew-om же удобно вскрывать несложные криптосистемы и пары сотен байт, зашифрованных по сравнительно простому алгоритму.

Однако несмотря на вышесказанное, встроенный интерпретатор HIEW-a мно­гими горячо любим и интенсивно используется. Быть может, потому что он был первым, или потому что сделан с любовью. Так или иначе он нужен. И очень большое недовольство вызвало отсутствие крипта в 6.0 версии. К счастью, автор быстро одумался и тут же вернул его на место.

Жаль, конечно, что за всю историю существования HIEW-a крипт претерпел наименьшие изменения. Появилась разве что возможность записи скриптов во внешний файл (FIO). Это конечно, удобно, но практически этим редко пользуют­ся. А зачем? Обычно скрипты состоят из нескольких строк и не так уж трудно вновь "набить" их вручную.

При этом автор не советует редактировать записанный файл. Цитирую выдержку из файла read_me: "Но так как трансляция во внутреннюю форму происходит в момент ввода строки команды с клавиатуры, не стоит пытаться править сохраненный файл, ни к чему это..."

На самом деле файл состоит по крайней мере из двух частей. Из оттрансли­рованных команд и их строкового представления. При этом никто не запрещает разобраться в логике работы транслятора и изменить сохраненные во "внутрен­нем представлении" команды. Разумеется, если отредактировать их ''текстовый" образ, то ожидаемого эффекта это никогда не даст. Впрочем, я действительно никак не могу понять зачем редактировать записанный файл нештатными средст­вами.

– Конец работы –

Эта тема принадлежит разделу:

NAG SCREEN

На сайте allrefs.net читайте: "NAG SCREEN"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Крипт-система

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

SetTimer
18C Is Iconic 195 KillTimer B7 EnableWindow 146 GetSystemMetrics 19E LoadIconA Попробуем найти код, который вызывает SetTimer, для чего установим на пос

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

Text;004015CFp
jmp ds: ?EnableWindow@cwnd@@QREHH@z j_?EnableWindow@cwnd@@QAEHH@z endp Их всего два. Как раз по числу элементов управления. Пока защита не предвещает ничего необычного и ее код вы

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

Способы затруднения анализа программ
Все методы взлома защитных механизмов (за исключением, возможно, крип­тографических) сводятся практически к двум моментам — локализации кода защиты в сотнях килобайт (мегабайт) кода приложения и ан

Приемы против отладчиков
Самым первым отладчиком под MS-DOS был Debug.com фирмы MicroSoft. Совершенно очевидно, что этот инструмент годился разве что для забавы и изучения ассемблера. Но рынок не терпит пустого ме

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

Приемы против отладчиков защищенного режима
Позже появился 80286 (с точки зрения хакера мало чем отличавшийся от своего предшественника), а вслед за ним и 80386, принесший принципиально новые возможности отладки. Точнее, "принципиально

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

Дизассемблирование в уме
"— Мне известны политические аргументы. — Но меня интересуют человеческие доводы." Ф. Херберт. "Мессия Дюны". Очень часто под рукой не оказывается ни отладчика,

Структура команд INTEL 80х86
"— Потому ты и опасен, что ояладел своими страстями." Ф. Херберт. "Мессия Дюны". Дизассемблирование (тем более в уме) невозможно без понимания того, как процессо

Маленькие хитрости
"Главная часть дисциплинирующей выучки — это ее сокрытая часть, предназначенная не освобож­дать, но ограничивать." Ф. Херберт. "Еретики Дюны". Хорошо, если в ваш

Ассемблирование в уме
"Ничто не превосходит по сложности человече­ский ум." Ф. Херберт. "Еретики Дины". Мы уже проделали титаническую работу, дизассемблировав в уме крохотный файл в п

Text 00000452 |D:KPNCHIEWDEXEM.EXE
При этом кроме собственно имен сохранятся текущий режим и позиция курсора (что особенно приятно). Последнее позволяет использовать HIEW для чтения больших текстовых файлов (электронных книг, докуме

Ассемблер
"Убийство острием лишено артистизма. Но пусть тебя это не останавливает, если плоть, раскрываясь, сама себя предлагает." Ф. Херберт. "Дюна". Пере

Дизассемблер
Дизассемблер в HIEW великая вещь. фактически это основной режим работы хакера. Не то чтобы некоторые ленились дизассемблировать в уме hex-коды, (что, скажем, частенько приходится делать при работе

Манипуляции с блоками
"Соединение невежества и знания, соединение ди­кости и культуры — не начинается ли оно с того чувства достоинства, с которым мы относимся к своей смерти?" Ф. Хербер

Поддержка LE/PE/NE/LX/NLM-ФОРМАТОB
"Понятие прогресса, служит защитным механиз­мом, отгораживающим нас от ужасов будущего." Ф. Херберт. "Дюна". Вообще-то шестнадцатиричный редактор идеологически д

Калькулятор
"Врагу, которым восхищаешься, легче вселить в тебя ужас" Ф. Херберт. "Дюна". Необходимость встроенного калькулятора сегодня сомнений ни у кого не вызывает. Хакер

Калькулятор
"Врагу, которым восхищаешься, легче вселить в тебя ужас" Ф. Херберт. "Дюна". Необходимость встроенного калькулятора сегодня сомнений ни у кого не вызывает. Хакер

Калькулятор
"Врагу, которым восхищаешься, легче вселить в тебя ужас" Ф. Херберт. "Дюна". Необходимость встроенного калькулятора сегодня сомнений ни у кого не вызывает. Хакер

Описание файла HIEW.INI
"— Осторожность — важное качество для чело­века, который будет вождем." Ф. Херберт. "Дюна". HIEW хранит часть настроек в ini-файле, который немного напоминает од

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги