Ассемблирование без секретов


Двухпроходный Ассемблер — 1-й проход

Читайте также:

  1. Ассемблер
  2. Ассемблеры
  3. Ассемблеры и макропроцессоры
  4. Величина тока, проходящего через человека, как и в предыдущих случаях, зависит от величины тока замыкания на землю.
  5. Вопрос 55. Оценка профильной проходимости.
  6. Густина струму дорівнює величині заряду, який проходить за одиницю часу через одиничну поверхню, перпендикулярну до ліній струму.
  7. Две плоскости взаимно перпендикулярны, если одна из них проходит через прямую, перпендикулярную другой плоскости.
  8. Двухпросмотровый ассемблер
  9. Двухпроходный Ассемблер — 2-й проход
  10. Денситометры проходящего света
  11. Заболевания наружного слухового прохода

Алгоритмы работы Ассемблеров

Структуры (базы) данных Ассемблера

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

Алгоритм работы 1-го прохода двухпроходного Ассемблера показан на рисунке.

  1. Начало 1-го прохода ассемблирования.
  2. Начальные установки:
    • установка в 0 счетчика адреса PC;
    • создание пустой таблицы символов;
    • создание пустой таблицы литералов;
    • открытие файла исходного модуля;
    • установка в FASLE признака окончания.
  3. Признак окончания TRUE?
  4. Считывание следующей строки исходного модуля. Добавка к счетчику адреса устанавливается равной 0.
  5. При считывании был обнаружен конец файла?
  6. Если конец файла обнаружен до того, как обработана директива END, — ошибка (преждевременный конец файла), при этом также устанавливается признак окончания обработки..
  7. Лексический разбор оператора программы. При этом:
    • выделяется метка/имя, если она есть;
    • выделяется мнемоника операции;
    • выделяется поле операндов;
    • удаляются комментарии в операторе;
    • распознается строка, содержащая только комментарий.
  8. Строка содержит только комментарий? В этом случае обработка оператора не производится.
  9. Мнемоника операции ищется в таблице директив.
  10. Завершился ли поиск в таблице директив успешно?
  11. Если мнемоника была найдена в таблице директив, происходит ветвление, в зависимости от того, какая директива была опознана.
  12. Обработка директив типа DD (определения данных) включает в себя:
    • выделение элементов списка операндов (одной директивой DD может определяться несколько объектов данных);
    • определение типа и, следовательно, размера объекта данных, заданного операндом;
    • обработка для каждого операнда возможного коэффициента повторения.
  13. Добавка к счетчику адреса устанавливается равной суммарному размеру объектов данных, определяемых директивой.
  14. Обработка директив типа BSS подобна обработке директив типа DD.
  15. Добавка к счетчику адреса устанавливается равной суммарному объему памяти, резервируемому директивой.
  16. Обработка директивы END состоит в установке в TRUE признака окончания обработки.
  17. Обработка директивы включает в себя вычисление значения имени и занесение его в таблицу символов.
  18. Обработка прочих директив ведется по индивидуальным для каждой директивы алгоритмам. Существенно, что никакие директивы, кроме DD и BSS, не изменяют нулевого значения добавки к счетчику адреса.
  19. Если мнемоника операции не найдена в таблице директив, она ищется в таблице команд.
  20. Завершился ли поиск в таблице команд успешно?
  21. Если мнемоника не была найдена в таблице команд, — ошибка (неправильная мнемоника).
  22. Если мнемоника найдена в таблице команд — определение длины команды, она же будет добавкой к счетчику адреса.
  23. Есть ли в операторе литерал?
  24. Занесение литерала в таблицу литералов (если его еще нет в таблице).
  25. Была ли в операторе метка?
  26. Поиск имени в таблице символов.
  27. Имя в таблице символов найдено?
  28. Если имя найдено в таблице символов — ошибка (повторяющееся имя).Если имя не найдено в таблице символов — занесение имени в таблицу символов.
  29. Формирование и печать строки листинга.
  30. Модификация счетчика адреса вычисленной добавкой к счетчику
  31. Печать строки листинга и переход к чтению следующего оператора.
  32. При окончании обработки — закрытие файла исходного модуля.
  33. Были ли ошибки на 1-ом проходе ассемблирования?
  34. Формирование литерального пула
  35. Выполнение 2-го прохода ассемблирования.
  36. Конец работы Ассемблера.
| следующая лекция ==>
Директивы | Некоторые структуры данных 1-го прохода

Дата добавления: 2014-01-15 ; Просмотров: 855 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Ассемблирование без секретов

Группа: VIP
Сообщений: 492
Регистрация: 14.01.2004
Из: Интернет

Крис Касперски — один из самых известных в России специалистов в области компьютерной безопасности. Из-под его пера вышли такие книги, как «Техника и философия хакерских атак», «Образ мышления дизассемблера IDA», «Техника сетевых атак» и многие другие. Также его статьи, посвященные низкоуровневому системному программированию, можно найти во многих российских журналах.

Все Книги Криса Касперски

Скачать Все Книги Криса Касперски:
File-Size: 66,30 Mb

Все статьи Криса Касперски

Скачать Все статьи Криса Касперски:
File-Size: 50,86 Mb

Сообщение было отредактировано Poiuyt: 13.04.2007 — 12:36

как Ассемблировать.

01.10.2011, 18:03

Не получается ассемблировать примеры из книги
Здравствуйте! В книге Питера Абеля есть ряд кодов которые не ассемблируются! Вот например он пишет.

Ассемблировать программу
Перед Вами слова умного человека «Теперь давайте начнем ассемблировать программу Writestr: C:\>.

Или воспользуйтесь поиском по форуму:

01.10.2011, 18:35 2
01.10.2011, 18:46 3
01.10.2011, 20:01 [ТС] 4

я нажимаю но ничего не выходит у меня винда7 64бит если это имеет значение

и еще в конце книги есть преложения 1 но не показано как Ассемблировать.

01.10.2011, 20:01
01.10.2011, 20:32 5
01.10.2011, 21:04 [ТС] 6
01.10.2011, 21:24 7
01.10.2011, 22:15 [ТС] 8
01.10.2011, 22:18 9
02.10.2011, 17:37 [ТС] 10

я кое что нашел только вот не знаю как выглядит сам язык программирования там есть файлы FASMW & FASM только вот второй не запускается на доли секунды выходит командная строка и исчезает и все а первый запускается появляется окно где есть File Ebit Search Run Option Help это он и есть язык программирования?

Добавлено через 4 часа 40 минут
все я решил проблему теперь другая исходники которые описаны в книге не подходят под мой fasmw или под мою Ось или еще что-то но в папке с фасмом есть исходники с точно такими же функциями но код там совсем другой и короткий. Что могло бы это значить?

Добавлено через 10 минут
мне искать другую книгу под FASMW?

Ассемблирование

Финансовый словарь Финам .

Смотреть что такое «Ассемблирование» в других словарях:

ассемблирование — сборка, монтаж, компоновка Словарь русских синонимов … Словарь синонимов

ассемблирование — Компиляция программ с языка ассемблера. [ГОСТ 19781 90] Тематики обеспеч. систем обраб. информ. программное EN assembly … Справочник технического переводчика

Ассемблирование — 52. Ассемблирование Assembly Компиляция программ с языка ассемблера Источник: ГОСТ 19781 90: Обеспечение систем обработки информации программное. Термины и определения … Словарь-справочник терминов нормативно-технической документации

Ассемблирование — … Википедия

ассемблирование — разборка распаковка … Словарь антонимов

ассемблирование — Syn: сборка, монтаж, компоновка … Тезаурус русской деловой лексики

Ассемблер — Эта статья о компьютерных программах. О языке программирования см. Язык ассемблера. Ассемблер (от англ. assembler сборщик) компьютерная программа, компилятор исходного текста программы, написанной на языке… … Википедия

Макроассемблер — Эта статья о компьютерных программах, о языке программирования см.: Язык ассемблера Ассемблер (от англ. assembler рабочий сборщик) компьютерная программа, компилятор исходного текста программы написанной на языке ассемблера, в программу на… … Википедия

Fasm — flat assembler Тип компилятор Разработчик Томаш Грыштар ОС … Википедия

fasm — flat assembler Тип компилятор Разработчик Томаш Грыштар Операционная система … Википедия

Ассемблирование и компилирование

Ассемблер

Ассе́мблер (от англ. assembler — сборщик) — компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу намашинном языке

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

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

Архитектура x86

Ассемблеры для DOS

Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.

Windows

При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы для выполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностью остановлено.

Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM32».

GNU и GNU/Linux

В состав операционной системы GNU входит пакет binutils, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис (поддерживается с версии 2.10).

Переносимые ассемблеры

Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).

Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).

flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (в том числе под GNU GPL) BSD-лицензией. Есть версии дляKolibriOS, Linux, DOS и Windows; использует Intel-синтаксис и поддерживает инструкции x86-64.

Архитектуры RISC

MCS-51

MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.

Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.

AVR

На данный момент существуют 3 компилятора производства Atmel (AVRStudio 3, AVRStudio 4 и AVRStudio 5).

В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).

Также существует свободный минималистический компилятор avra [1] .

§ 8-разрядные Flash-контроллеры семейства MCS-51

§ 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR). На данный момент семейство classic AVR трансформировано в ATtiny и ATmega

§ 8-разрядные RISC-контроллеры семейства PIC (PIC10,PIC12,PIC16,PIC18)

§ 16-разрядные RISC-контроллеры семейства PIC (PIC24HJ/FJ,dsPIC30/33)

§ 32-разрядные RISC-контроллеры семейства PIC (PIC32) с архитектурой MIPS32 M4K

§ 32-разрядные RISC-контроллеры семейства AVR32 (AVR32)

§ 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)

Макроассемблер

Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера. [2]

Ассемблирование и компилирование

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

Как минимум один раз снялся в кино, но зато в каком! В первой части Терминатора можно видеть как Киборг предпочитает MOS Technology 6510/8500 ассемблер.

Необходимое пояснение. На скриншоте видна программка из чередующихся инструкций LDA-STA-LDA-STA…(load-store-load-store). В семействе 6502 программы состоят чуть менее, чем полностью из LDA/LDY/LDX/STA/STX/STY вследствие наличия всего 3х 8-битных регистров. Наличие почти полного отсутствия регистров компенсируется нулевой страницей памяти, откуда-куда постоянно приходится перекладывать байтики, так как хранить их более негде. В данном ЦПУ 13 режимов адресации на всего 53 команды.

Условное ассемблирование

Под условным ассемблированием понимается возможность изменять порядок работы ассемблера в зависимости от выполнения или невыполнения некоторых условий в процессе ассемблирования программы. Мы знаем, что ассемблер различает два типа символических переменных: символические параметры, значения которым присваиваются с помощью предложения-прототипа или самой макрокоманды, и SET-переменные, для присваивания значений которым используются предложения SETx. Мы также знаем, что ассемблер может определять значения различных атрибутов, зависящие от значений символических параметров. Фактически мы можем рассматривать ассемблер как обычную программу. В качестве данных выступает исходная программа, присвоение значений переменным которой выполняется с помощью механизма символических параметров. Возможность «вычисления» различных значений обеспечивается механизмом конкатенации и SET-предложений. Однако пока еще мы не имеем в распоряжении средств, позволяющих осуществлять управление работой ассемблера в зависимости от начальных данных и результатов предыдущих вычислений.

Существуют две команды перехода ассемблера: команда безусловного перехода, AGO (Assembler GO), и условного перехода, AIF (Assembler IF). Необходимо различать команды перехода ассемблера и машинные команды передачи управления, ВС и BCR. Последние вызывают изменение содержимого счетчика команд в процессе выполнения некоторой программы и, таким образом, изменение порядка выполнения процессором команд этой программы. Наличие таких команд позволяет пропускать некоторые команды программы или организовывать циклическую работу. С другой стороны, команды перехода ассемблера вызывают изменение порядка обработки ассемблером символических предложений и исходной программы. Таким образом, некоторые команды исходной программы могут быть нескомпилированы вообще, а некоторые — скомпилированы по многу раз.

Разница между командами перехода ассемблера и аналогичными машинными командами станет совсем очевидной, если заметить, что переходы ассемблера осуществляются на предложения с определенными метками следования, а не с именами, как было в случае машинных переходов. Первым символом метки следования должна быть точка (.). За точкой может следовать последовательность из не более чем семи элементарных символов, первый из которых должен быть буквой. Допустимыми метками следования являются, например, .N, .N135 и .ABDDQ. Метки следования используются ассемблером для определения места, на которое следует совершить переход по команде перехода, т. е. для определения предложения, которое нужно обрабатывать следующим. В отличие от обычных меток, являющихся не чем иным как символическими именами адресов памяти, метки следования соответствующих им физических объектов не имеют. На самом деле все метки следования удаляются ассемблером из программы еще до начала ее трансляции на машинный язык.

Команда AGO имеет вид

пробел или метка следования AGO метка следования

Результатом выполнения команды AGO является переход ассемблера к обработке предложения, имеющего метку следования, указанную в поле операндов. Например, еслимыимеем

то ассемблер обработает команду загрузки, а затем команду ST пропустит. Если &САТ имеет значение СТ(5), a &MOUSE — МТ, то после выполнения начальной обработки указанного фрагмента программы получим

Заметим, что ассемблер удалил метку следования команды сложения. Команда условного перехода ассемблера AIF имеет вид

пробел или метка следования AIF (логическое выражение)

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

Логическое выражение может иметь одно из двух значений: истина или ложь (Гили 0). Если выражение имеет значение истина (1), то в качестве следующего обрабатываемого предложения ассемблером выбирается предложение с меткой следования, указанной в поле операндов команды AIF. Если выражение имеет значение ложь (0), ассемблер переходит к обработке предложения, следующего за предложением AIF. Логическое выражение в простейшем виде выглядит как

операнд1 отношение операнд2

В данном случае в качестве операндов выступают символические переменные, атрибуты или константы. Отношение может быть одним из следующих:

GE: больше или равно

LE: меньше или равно

(Знакомые с языком ФОРТРАН сразу узнают здесь операторы отношений IF-предложений.Однако заметим, что в данном случае никаких дополнительных точек не пишется.) Логическое выражение истинно, если отношение

операнд1 отношение операнд2

выполняется. Таким образом, выражение

ложно, если параметру &ОР макрокоманды было присвоено некоторое значение.

В качестве примера AIF-предложения рассмотрим предложение .GO AIF (&CHAR EQ ‘PUNT’).QUIT

В данном случае предполагается, что &CHAR — либо SETC-переменная, либо символический параметр. В последнем случае в сравнении участвует строка символов, присвоенная в качестве значения параметру &CHAR. Если исследуемые строки оказались одинаковыми, то ассемблер переходит к обработке предложения с меткой следования .QUIT. Если результат сравнения отрицательный, т. е. строки разные, то обработка программы продолжается так, как будто бы AIF- предложения не было.

AIF-предложение используется для условного управления ассемблером. Одним из часто встречающихся случаев является проверка типа операндов для выяснения типа необходимой машинной команды. В определении макро RWD (рис. 18.1 и 18.2) считалось, что в качестве операндов могут выступать только номера регистров.

Если же мы хотим иметь возможность задавать в качестве фактического параметра RWD как номер регистра, так и адрес ячейки памяти, то мы должны организовать проверку типа заданных параметров в макрокоманде и внесение в зависимости от результата проверки в программу команды LR (регистры) или команды ST (ячейки памяти). Макроопределение, изображенное на рис. 18.7, иллюстрирует сказанное.

При выполнении AIF-предложения происходит проверка атрибута типа параметра &LOC. Если &LOC не является самоопределенной величиной (т. е. номером регистра), мы считаем, что это адрес некоторой ячейки памяти, и заставляем ассемблер включать в макрорасширение предложения, начиная c.SYMADD. Если &LOC—номер регистра, то в макрорасширение включается предложение LTR, следующее сразу за AIF.

Рис. 18.7. Макро RWD, использующее условное ассемблирование для работы с операндами как в регистрах, так и в памяти.

Затем выполнение AGO приводит к пропуску оставшихся предложений и переходу к предложению MEND.

Если в качестве RWD принять определение, приведенное на рис. 18.7, то макрорасширением для макрокоманды

BNECH L ABL(6) 15, — V($$IO)

HCENB L 15, = V($$IO)

Существуют также некоторые другие средства языка, позволяющие более просто и гибко организовывать условное ассемблирование. Одним из таких средств является оператор ANOP (Assembler NO OPeration), предназначенный исключительно для удобства расположения меток следования. Никакой фактической операции по команде ANOP не выполняется. Достаточно часто встречаются ситуации, когда желательно пометить меткой следования машинную команду, уже имеющую метку. На рис. 18.8 приведено модифицированное определение уже встречавшегося макро COMPARE. Теперь с его помощью можно производить сравнение как чисел, так и строк символов. Если сравниваются строки, то для обеспечения возможности выполнения команды CLC необходимо-определить их длину. Таким образом, если параметр &TYPE имеет значение LC, то длина определяется с помощью ключевого параметра &LEN. Вся проблема состоит в том, что с помощью AIF-предложения можно организовать переходы лишь на предложения, помеченные меткой следования.

Рис. 18.8. Пример применения ANOP.

Нам бы хотелось поместить метку следования в поле метки команды CLC, но там уже стоит метка &LABEL. Таким образом, сначала ассемблер осуществляет переход на предложение ANOP, помеченное меткой следования .CHARS, а затем переходит к обработке предложения CLC.

В качестве примера рассмотрим макрокоманду

HERE COMPARE 5,BAT,EQULS,NEQULS,TYPE = Н

Ее макрорасширение выглядит так:

Макрорасширением же макрокоманды

THERE COMPARE WDS, MWDS,E,N,TYPE=LC,

THERE CLC WDS(55),MWDS

Все написанные нами до сих пор макроопределения не очень хороши, так как ни в одном из них не предусмотрена проверка на наличие возможных ошибок. Например, при выполнении RWD должна производиться проверка на присутствие операнда, а если операндом является регистр, то нужно также проверить, не является ли этот регистр одним из «специальных» регистров, какими являются регистрыО, 1, 13, 14 и 15.

Сначала отметим, что логические выражения, рассматривавшиеся выше, могут также строиться с участием связок AND и OR. Например, логическое выражение в поле операндов предложения

AIF (T’&LEN EQ ‘O’ AND ‘&TYPE’ EQ ‘LC’).GHRN

принимает значение «истина», если в одно и то же время значение параметра &LEN не задано, а значением параметра &TYPE является строка LC.

Рис. 18.9. Определение RWD с контролем корректности операндов.

Если это так, то происходит переход на предложение с меткой следования GHRN. С помощью предложения MNOTE (Macro NOTE) можно запрашивать распечатку различных сообщений в выдаче ассемблера. Включив в программу предложение

MNOTE код серьезности,’сообщение’

мы получим в выдаче ассемблера на том месте, где данное предложение должно входить в макрорасширение, распечатку соответствующей строки. Кодом серьезности является число, характеризующее степень серьезности ошибки, повлекшей распечатку сообщения по команде MNOTE. Самой низкой степенью серьезности является 0, при этом процесс обработки программы продолжается в обычном порядке. Максимальной степенью серьезности является 255. По окончании процесса ассемблирования число, характеризующее степень серьезности, передается системе. Операционная система производит проверку величины этого числа для определения возможности перехода к выполнению следующего шага. Степень серьезности 0 означает отсутствие существенных ошибок; 4 свидетельствует о том, что отмеченные ошибки, по всей вероятности, не повлияют на результаты работы; 8 и более вызывает прекращение выполнения задания. Таким образом, в макрорасширении печатается строка

MNOTE 12′,***ERROR***MISSING OPERAND’

Код 12 говорит о том, что продолжение выполнения обработки программы является бессмысленной тратой времени. С помощью MNOTEнадо стараться выдавать четкие и бросающиеся в глаза сообщения.

Рис. 18.10. Другое определение макро BEGIN, обеспечивающее область сохранения если пользователь ее не задал.

В противном случае эти сообщения могут быть не замечены в достаточно большой распечатке ассемблера. Хорошо для различимости включить в сообщения большие количества звездочек.

На рис. 18.9 приведен еще один вариант макроопределения RWD. Теперь уже в нем предусмотрены проверки на отсутствие операнда и на недопустимый номер регистра. Отметим использование SETA-пepeменной &REG для выполнения арифметических сравнений в предложениях условного ассемблирования. Кроме того, в данном случае мы впервые ввели в употребление предложение MEXIT (Macro EXIT). С его помощью мы требуем от ассемблера прекращения обработки рассматриваемого в настоящий момент макроопределения. MEXIT отличается от MEND тем, что оно может встречаться в произвольном месте макроопределения, в то время как MEND всегда последнее предложение макроопределения, свидетельствующее о его окончании.

На рис. 18.10 приведено новое определение макро BEGIN. Теперь, если пользователь сам не сообщит адрес области сохранения, это будет сделано за него.

В качестве последнего примера условного ассемблирования мы рассмотрим организацию циклической работы ассемблера для составления таблицы степеней числа 2.Таблица состоит из последовательности полных слов, количество которых определяется операндом макрокоманды. Первое слово расширения будет содержать 2, второе 4, третье 8 и т.д. В макроопределении TWOTAB, приведенном на рис. 18.11, использованы SETA-переменные &CTR H&POWER в качестве счетчика цикла и текущей степени 2 соответственно. Кроме того, для того чтобы избежать многократного определения метки, использована SETC-переменная &DLAB. При первом прохождении цикла, значением &DLAB является значение параметра-метки &LAB. Затем &DLAB принимает значение пустой строки. Таким образом, значение &LAB появляется в качестве метки в макрорасширении всего один раз. Расширением макрокоманды

Рис. 18.11. Макро для создания таблицы степеней числа 2.

Определенные трудности возникают, если мы хотим пометить модельное предложение. Пусть, например, макрокоманда использует регистр 5 для хранения промежуточных результатов, но исходное содержимое его мы хотим сохранить. Схема соответствующего определения может выглядеть, например, так:

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

Для решения возникшей проблемы используется системная переменная &SYSNDX. Переменная &SYSNDX, так же как и SETA-переменные, может иметь лишь числовые значения. Сначала ее значение равно 0001, а затем оно увеличивается на 1 всякий раз, когда макрокоманда встречается в программе. При конкатенации с некоторым именем &SYSNDX прибавляет к нему четыре десятичные цифры. Если мы хотим помечать предложения, то к меткам следует приписывать &SYSNDX. Приведенное выше макроопределение, таким образом, превращается в

При первом обращении к этому макро SAV5&SYSNDX будет иметь значение SAV50001, при втором — SAV50002 и т. д.

Библиотека

Восстановление паролей к PWL-файлам (45 Кб, HTML)

Основы безопасности Windows 2000/XP (342 Кб, HTML)

Циклический инкремент паролей (28 Кб, HTML)

Создание программ с многоязыковым интерфейсом (44 Кб, HTML)

PasswordsPro — Таинственный мир хэшей (30 Кб, HTML)

Создание ускоренного криптоаналитического метода «Time-Memory Trade-Off» (530 Кб, PDF)

Статьи от www.passcape.com

Пароли Outlook (37 Кб, HTML)

Теория и практика восстановления паролей Internet Explorer (129 Кб, HTML)

Статьи и книги Криса Касперски

Внимание!
Информация, приведенная в некоторых статьях этого автора, предназначена лишь для ознакомления и не должна использоваться для действий, нарушающих законодательство Российской Федерации (УК РФ, Закон РФ «Об автоpском праве и смежных правах» и др.), а также законодательства других стран!

Техника оптимизации программ (971 Кб, HTML, )

Философия и архитектура NT против UNIX с точки зрения безопасности (41 Кб, HTML, )

Безопасное программирование на языке Perl (40 Кб, HTML, )

Секретное оружие социальной инженерии (29 Кб, HTML, )

Неявный самоконтроль как средство создания неломаемых защит (99 Кб, HTML, )


Самоучитель игры на WINSOCK (103 Кб, HTML, )

Примеры реальных взломов (346 Кб, HTML, )

Подсистема кэш-памяти, как она есть (361 Кб, HTML, )

О дизассемблировании программ (520 Кб, HTML, )

Тонкости дизассемблирования (дизассемблирование в уме) (301 Кб, HTML, )

Технология срыва стека (469 Кб, HTML, )

Техника и философия хакерских атак (1278 Кб, HTML, )

Обход брандмауэров снаружи и изнутри (254 Кб, HTML, )

SEH(Structured Exception Handling) на службе контрреволюции (166 Кб, HTML, )

Ошибки переполн. буфера извне и изнутри как обобщ. опыт реальных атак (1) (49 Кб, HTML, )

Побег через брандмаузер плюс терминализация всей NT (220 Кб, HTML, )

Ошибки переполн. буфера извне и изнутри как обобщ. опыт реальных атак (2) (144 Кб, HTML, )

Техника внедрения и удаления кода из PE-файлов (462 Кб, HTML, )

Путь воина — внедрение в pe/coff файлы (126 Кб, HTML, )

Способы взаимодействия с диском на секторном уровне (501 Кб, HTML, )

Восстановление данных на NTFS-разделах (925 Кб, HTML, )

Лазерный диск с нулевым треком как средство защиты от копирования (74 Кб, HTML, )

Особенности буферизации записи (169 Кб, HTML, )

Оптимизация штатных Си-функций для работы с памятью (429 Кб, HTML, )

Практические советы по восстановлению системы в боевых условиях (227 Кб, HTML, )

Программистская копилка (7 Кб, HTML, )

Могущество кодов Рида-Соломона или информация, воскресшая из пепла (208 Кб, HTML, )

Глубоководное погружение в чипсет Intel 875P (119 Кб, HTML, )

Техника оптимизации под Linux (Часть 1) (42 Кб, HTML, )

Разгон и торможение Windows NT (252 Кб, HTML, )

Техника оптимизации под Linux (Часть 2 — ветвления) (57 Кб, HTML, )

Восстановление NTFS — undelete своими руками (280 Кб, HTML, )

Unformat для NTFS (602 Кб, HTML, )

База данных под прицелом (189 Кб, HTML, )

Как защищают программное обеспечение (23 Кб, HTML, )

Техника оптимизации под Linux (Часть 3 — оптимизация циклов) (47 Кб, HTML, )

Прятки в Linux (334 Кб, HTML, )

Профессии эмуляторов (293 Кб, HTML, )

Особенности национальной отладки в UNIX (234 Кб, HTML, )

Методология защиты в мире UNIX (273 Кб, HTML, )

Экстремальный разгон DDR-памяти (269 Кб, HTML, )

Техника выживания в мутной воде или «как обуть антивирус» (489 Кб, HTML, )

Перехват библиотечных функций в Linux и BSD (513 Кб, HTML, )

Файловая система NTFS извне и изнутри (183 Кб, HTML, )

Беспроводные сети и их взлом (352 Кб, HTML, )

BIOS-моддинг (212 Кб, HTML, )

Восстановление данных с лазерных дисков (89 Кб, HTML, )

Искажение TOC’а как средство борьбы с несанкционированным копированием диска (179 Кб, HTML, )

Рыбная ловля в локальной сети — sniffering (218 Кб, HTML, )

Методы низкоуровневого управления приводами (343 Кб, HTML, )

BIOS Setup — удаленный контроль (302 Кб, HTML, )

Стандартный нестандартный приплюснутый Cи (288 Кб, HTML, )

Алхимия прошивки видео-BIOS (325 Кб, HTML, )

Метафизика WMF-файлов (691 Кб, HTML, )

Разгон мышей или скоростной Web-серфинг для экстремалов (543 Кб, HTML, )

Ассемблирование без секретов (335 Кб, HTML, )

Crackme, прячущий код на API-функциях (122 Кб, HTML, )

Распределенные хранилища информации (217 Кб, HTML, )

Война миров: ext2fs и ext3fs — взгляд под необычным углом (201 Кб, HTML, )

Турбо-перенос драйверов из Windows в LINUX/BSD (255 Кб, HTML, )

Особенности дизассемблирования под LINUX на примере tiny-crackme (695 Кб, HTML, )

Windows на одной дискете (235 Кб, HTML, )

Переполнение буфера на системах с неисполняемым стеком (374 Кб, HTML, )

Как восстановить нечитающийся CD? (32 Кб, HTML, )

MBR своими руками (209 Кб, HTML, )

Программирование в машинных кодах или Soft-Ice как logger (121 Кб, HTML, )

Малоизвестные способы взлома клиентских программ (352 Кб, HTML, )

Техника отладки приложений без исходных кодов (393 Кб, HTML, )

Защита игр от взлома (241 Кб, HTML, )

Ассемблерные головоломки или «Может ли машина понимать естественный язык»? (251 Кб, HTML, )

Восстановление удаленных файлов под BSD (72 Кб, HTML, )

Архитектура x86-64 под скальпелем ассемблерщика (363 Кб, HTML, )

Старые антиотладочные приемы на новый лад (77 Кб, HTML, )

Ручная троянизация приложений под Windows (1027 Кб, HTML, )

Захват чужих ботнетов (302 Кб, HTML, )

Секреты kernel-хакинга (93 Кб, HTML, )

Так ли открыты открытые исходники? (29 Кб, HTML, )

TOP10 ошибок защитников программ (453 Кб, HTML, )

Жизнь после BSOD (639 Кб, HTML, )

Обфускация и ее преодоление (419 Кб, HTML, )

Ремонт и восстановление жестких дисков (503 Кб, HTML, )

Звездная сила обращается в пыль (236 Кб, HTML, )

Переполняющиеся буфера — активные средства защиты (38 Кб, HTML, )

Полиморфный генератор — своими руками (103 Кб, HTML, )

Мануальная терапия нетрадиционного самоконтроля (313 Кб, HTML, )

Противодействие дизассемблеру «во сне и наяву» (458 Кб, HTML, )

Скоростной лохотрон (700 Кб, HTML, )

Исследование ядра LINUX’а (254 Кб, HTML, )

Разгон с паяльником в руках (1214 Кб, HTML, )

Охота за Голубым Зубом (385 Кб, HTML, )

Секреты покорения эльфов (544 Кб, HTML, )

Разгон NTFS (362 Кб, HTML, )

Восстановление данных своими руками (235 Кб, HTML, )

Сетевые игры — идеи и решения (66 Кб, HTML, )

Проблемы переносимости мобильных игр (371 Кб, HTML, )

Копирование без границ (447 Кб, HTML, )

Скрытый потенциал ручных сборок (489 Кб, HTML, )

Завоевание Интернета или кто сказал «мяу» (324 Кб, HTML, )

Взлом Пентагона (483 Кб, HTML, )

Атака на VPN (421 Кб, HTML, )

Побег из-под VM Ware (995 Кб, HTML, )

Захватываем ring 0 в Linux (19 Кб, HTML, )

Восстановление удаленных файлов под Linux (497 Кб, HTML, )

LINUX/BSD как бастион на пути вирусов (67 Кб, HTML, )

«Помоги себе сам» или обзор Anti-Spy (506 Кб, HTML, )

Ассемблер — экстремальная оптимизация (320 Кб, HTML, )

Сравнение ассемблерных трансляторов (190 Кб, HTML, )

Cкрытые возможности DSL-модемов (349 Кб, HTML, )

Защищенная ось без антивирусов и тормозов (279 Кб, HTML, )

Взлом через покрытие (381 Кб, HTML, )

Хачим ядро xBSD (278 Кб, HTML, )

Техника снятия дампа с защищенных приложений (308 Кб, HTML, )

Хак ядра NT (346 Кб, HTML, )

Подъем упавшей NT (297 Кб, HTML, )

On-line patching в секретах и советах (89 Кб, HTML, )

Сверхбыстрый импорт API-функций (14 Кб, HTML, )

xBSD в ракурсе исторического прицела (369 Кб, HTML, )

Как подделывают CRC16/32 (179 Кб, HTML, )

Мощь и беспомощность автоматической оптимизации (26 Кб, HTML, )

Выживание в системах с жестоким квотированием (245 Кб, HTML, )

Безопасный взлом через GPRS (767 Кб, HTML, )

Дешевый GPRS или «честный обман оператора» (234 Кб, HTML, )

Генетический распаковщик PE-файлов (284 Кб, HTML, )

Хакерские трюки или как поставить бряк на «jmp eax» (299 Кб, HTML, )

Взлом телевизоров вблизи и на расстоянии (517 Кб, HTML, )

Настройка файловой системы на максимальную производительность (400 Кб, HTML, )

Шесть грехов malware-писателей (256 Кб, HTML, )

Оптимизация xBSD под десктоп (674 Кб, HTML, )

Техника промышленного шпионажа (159 Кб, HTML, )

Обзор упаковщиков исполняемых файлов под UNIX (348 Кб, HTML, )

Упаковщики исполняемых файлов в LINUX/BSD и борьба с ними (497 Кб, HTML, )

Контрразведка с Soft-ice в руках (578 Кб, HTML, )

По следам MS IE OBJECT tag exploit’а (674 Кб, HTML, )

Знакомство с багами или ошибки клиентских приложений (387 Кб, HTML, )

Как заточить exploit под себя (240 Кб, HTML, )

Аудит и дизассемблирование exploit’ов (189 Кб, HTML, )

Эльфы большие и маленькие (459 Кб, HTML, )

Сидя на голом железе (119 Кб, HTML, )

Добывание информации из PDF-файлов (460 Кб, HTML, )

Взлом архиватора WinRAR (397 Кб, HTML, )

Отладка двоичных файлов под gdb (начало) (167 Кб, HTML, )

Трюки от мыщъх’а (131 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 1) (17 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 2) (14 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 4) (10 Кб, HTML, )

Ассемблер — это просто (19 Кб, HTML, )

Война миров: Ассемблер против Cи (250 Кб, HTML, )

Захват и освобождение заложников в исполняемых файлах (42 Кб, HTML, )

Заметки о восстановлении данных на жестких дисках (336 Кб, HTML, )

Универсальный метод обнаружения малвари (303 Кб, HTML, )

Многоядерные процессоры и проблемы, ими порождаемые (198 Кб, HTML, )

Секреты ассемблирования дизассемблерных листингов (553 Кб, HTML, )

Линковка дизассемблерных файлов (314 Кб, HTML, )

Гонки на вымирание, девяносто пятые выживают (251 Кб, HTML, )

Призраки ядра или модули-невидимки (572 Кб, HTML, )

Шприц для *BSD (923 Кб, HTML, )

Борьба с утечками ресурсов и переполн. буферами на языковом и внеязык. уровне (24 Кб, HTML, )

Вечная жизнь в играх своими руками (791 Кб, HTML, )

Неудачный выбор приоритетов на PDP-11 и его наследие на С/С++ (107 Кб, HTML, )

Экстремальный разгон процессора (80 Кб, HTML, )

Аппаратная виртуализация или эмуляция «без тормозов» (387 Кб, HTML, )

Основы термоядерной отладки с linice (507 Кб, HTML, )

Археологические раскопки ядра Vista/Longhorn (149 Кб, HTML, )

Ассемблерные извращения — натягиваем стек (179 Кб, HTML, )

Взлом Patch-Guard (235 Кб, HTML, )

Погружение в технику и философию gdb (окончание) (460 Кб, HTML, )

Blue pill/red pill — the matrix has windows longhorn (246 Кб, HTML, )

Portable shell-coding under NT and Linux — Введение (2428 Кб, DOC, )

Portable shell-coding under NT and Linux — Ошибки переполнения (1413 Кб, DOC, )

Portable shell-coding under NT and Linux — Секреты проектирования shell-кода (2415 Кб, DOC, )

Portable shell-coding under NT and Linux — Сетевые черви и локальные вирусы (3431 Кб, DOC, )


Portable shell-coding under NT and Linux — Брандмауэры и прочие системы защиты (3295 Кб, DOC, )

Portable shell-coding under NT and Linux — Экзотические объекты для внедрения (2847 Кб, DOC, )

У Google под колпаком (494 Кб, HTML, )

Проблемы DVD на широкоформатных экранах (279 Кб, HTML, )

Изучение английского с турбо-наддувом (246 Кб, HTML, )

Отладка без исходных текстов (книга) (3828 Кб, DOC, )

Электронные деньги — доверять или нет? (416 Кб, HTML, )

Взлом и защита WebMoney (406 Кб, HTML, )

Преодоление firewall’ов снаружи и изнутри (551 Кб, HTML, )

Книга «Техника восстановления данных» (Глава 1) (6600 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 2) (619 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 3) (2747 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 4) (2629 Кб, DOC, )

Как затормозить компьютер с помощью SSE (222 Кб, HTML, )

Skype — скрытая угроза (319 Кб, HTML, )

Скрытые ключи автозапуска в системном реестре (150 Кб, HTML, )

Эффективный грабеж видео с YouTube (330 Кб, HTML, )

Записки варезника (530 Кб, HTML, )

Глубины и вершины сетевого стека Висты (494 Кб, HTML, )

Тонкая настройка параметров TCP/IP под толстые каналы (160 Кб, HTML, )

Грабеж защищенного медиа-контента в Висте (61 Кб, HTML, )

Грабим данные с flash-модулей и CD/DVD (213 Кб, HTML, )

Активация Висты лапами и хвостом (216 Кб, HTML, )

Чтение и запись NTFS-разделов под Linux/BSD (320 Кб, HTML, )

NDR-атаки: проблемы и решения (67 Кб, HTML, )

Борьба с удаленными потоками (369 Кб, HTML, )

Параллельные миры: война на выживание (361 Кб, HTML, )

Антивирусы в корпоративной среде (160 Кб, HTML, )

Колем дрова без помощи топора (331 Кб, HTML, )

Правильный DVD-Rip своими руками (часть 1) (437 Кб, HTML, )

Правильный DVD-Rip своими руками (часть 2) (367 Кб, HTML, )

Как сломать DVD-диск без помощи топора (608 Кб, HTML, )

Прячем файлы и папки (350 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 6) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 7) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 8) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 10) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 11) (104 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 12) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 13) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 14) (11 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 15) (11 Кб, HTML, )

Разбор коры в Linux и xBSD (193 Кб, HTML, )

Microsoft как армагеддон XXI века (236 Кб, HTML, )

IPv6 — демократия или диктатура? (153 Кб, HTML, )

Аппаратные средства удаленного администрирования (220 Кб, HTML, )

Трепанация двоичных файлов под Linux (258 Кб, HTML, )

Ассемблер в UNIX (мини-FAQ) (11 Кб, HTML, )

Троянизация приложений — технологии XXI века (414 Кб, HTML, )

Java под атакой (219 Кб, HTML, )

Основы взлома мобильных игр (426 Кб, HTML, )

Java на мобильных телефонах — атаки и угрозы (114 Кб, HTML, )

Java на smart-картах (10 Кб, HTML, )

Небезопасная безопасная Java (190 Кб, HTML, )

Чемоданчик хакера (1650 Кб, HTML, )

Какие следы ты оставил после себя? (393 Кб, HTML, )

Hot-patch ядер Linux/BSD/NT (206 Кб, HTML, )

Прячем трафик от админа (141 Кб, HTML, )

Поиск малвари своими лапами и хвостом (448 Кб, HTML, )

Охота и рыбалка в динамической памяти (261 Кб, HTML, )

Отладчик WinDbg как API- и RPC-шпион (370 Кб, HTML, )

Exploit review (выпуск 5) (159 Кб, HTML, )

Exploit review (выпуск 7) (224 Кб, HTML, )

Exploit review (выпуск 9) (284 Кб, HTML, )

Exploit review (выпуск 12) (440 Кб, HTML, )

Exploit review (выпуск 13) (235 Кб, HTML, )

Exploit review (выпуск 14) (371 Кб, HTML, )

Ремонт, обслуживание и эксплуатация APC UPS (39 Кб, HTML, )

Сырые сокеты на Висте, XP, W2K. (205 Кб, HTML, )

gcc: компиляция на форсаже с турбо-наддувом (127 Кб, HTML, )

Code Optimization: Effective Memory Usage (10 Mб, CHM, на англ.)

Hacker Disassembling Uncovered (4,8 Mб, CHM, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 1) (453 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 2) (50 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 3) (503 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 4) (119 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 5) (65 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 6) (138 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 7) (142 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 8) (221 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 9) (77 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 10) (168 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 11) (76 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 12) (154 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 13) (1279 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 14) (71 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 15) (352 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 16) (271 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 17) (51 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 18) (79 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 19) (224 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 20) (37 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 21) (193 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 22) (89 Kб, DOC, на англ.)

Дополнительные cтатьи

Алгоритм построения цифрового дайджеста MD4 (269 Кб, PDF, )

Алгоритм построения цифрового дайджеста MD5 (917 Кб, PDF, )

Использование Crypto API, Автор — Юрий Николаев (92 Кб, HTML, )

Математическое обоснование коллизий MD5 (483 Кб, PDF, на англ., )

Коллизии MD5 — практическое применение (55 Кб, PDF, на англ., )

Коллизии MD4, MD5, HAVAL-128 и RIPEMD (57 Кб, PDF, на англ., )

Making a Faster Cryptanalytic Time-Memory Trade-Off (242 Кб, PDF, на англ., )

Time-Memory Trade-Offs: False Alarm Detection Using Checkpoints (239 Кб, PDF, на англ., )

A Cryptanalytic Time — Memory Trade-Off (860 Кб, PDF, на англ., )

Умножение на константу (примеры кода на Assembler’е) (382 Кб, TXT, )

RFC-документы по криптографии и шифрованию

RFC-1319 (25 Кб, TXT) — The MD2 Message-Digest Algorithm

RFC-1320 (32 Кб, TXT) — The MD4 Message-Digest Algorithm

RFC-1321 (35 Кб, TXT) — The MD5 Message-Digest Algorithm

RFC-1810 (17 Кб, TXT) — Report on MD5 Performance

RFC-2085 (14 Кб, TXT) — HMAC-MD5 IP Authentication with Replay Prevention

RFC-2104 (22 Кб, TXT) — HMAC: Keyed-Hashing for Message Authentication

RFC-2202 (11 Кб, TXT) — Test Cases for HMAC-MD5 and HMAC-SHA-1

RFC-2268 (20 Кб, TXT) — A Description of the RC2(r) Encryption Algorithm

RFC-2286 (11 Кб, TXT) — Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128

RFC-2313 (39 Кб, TXT) — PKCS #1: RSA Encryption Version 1.5

RFC-2403 (14 Кб, TXT) — The Use of HMAC-MD5-96 within ESP and AH

RFC-2404 (13 Кб, TXT) — The Use of HMAC-SHA-1-96 within ESP and AH

RFC-2405 (21 Кб, TXT) — The ESP DES-CBC Cipher Algorithm With Explicit IV

RFC-2419 (24 Кб, TXT) — The PPP DES Encryption Protocol, Version 2 (DESE-bis)

RFC-2437 (76 Кб, TXT) — PKCS #1: RSA Cryptography Specifications Version 2.0

RFC-2857 (13 Кб, TXT) — The Use of HMAC-RIPEMD-160-96 within ESP and AH

RFC-3174 (35 Кб, TXT) — US Secure Hash Algorithm 1 (SHA1)

RFC-3217 (20 Кб, TXT) — Triple-DES and RC2 Key Wrapping

RFC-3385 (55 Кб, TXT) — iSCSI Cyclic Redundancy Check (CRC)/Checksum Considerations

RFC-3394 (73 Кб, TXT) — Advanced Encryption Standard (AES) Key Wrap Algorithm

RFC-3537 (17 Кб, TXT) — Wrapping a HMAC Key with a Triple-DES Key or an AES Key

RFC-3602 (30 Кб, TXT) — The AES-CBC Cipher Algorithm and Its Use with IPsec

RFC-3447 (147 Кб, TXT) — Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1

RFC-3537 (17 Кб, TXT) — Wrapping a HMAC key with a Triple-DES Key or an AES Key

RFC-3713 (26 Кб, TXT) — A Description of the Camellia Encryption Algorithm

RFC-3962 (33 Кб, TXT) — Advanced Encryption Standard (AES) Encryption for Kerberos 5

RFC-4634 (203 Кб, TXT) — US Secure Hash Algorithms (SHA and HMAC-SHA)

RFC-4648 (37 Кб, TXT) — The Base16, Base32, and Base64 Data Encodings

RFC-4757 (38 Кб, TXT) — The RC4-HMAC Kerberos Encryption Types Used by Microsoft Windows

Библиотека

Восстановление паролей к PWL-файлам (45 Кб, HTML)

Основы безопасности Windows 2000/XP (342 Кб, HTML)

Циклический инкремент паролей (28 Кб, HTML)

Создание программ с многоязыковым интерфейсом (44 Кб, HTML)

PasswordsPro — Таинственный мир хэшей (30 Кб, HTML)

Создание ускоренного криптоаналитического метода «Time-Memory Trade-Off» (530 Кб, PDF)

Статьи от www.passcape.com

Пароли Outlook (37 Кб, HTML)

Теория и практика восстановления паролей Internet Explorer (129 Кб, HTML)

Статьи и книги Криса Касперски

Внимание!
Информация, приведенная в некоторых статьях этого автора, предназначена лишь для ознакомления и не должна использоваться для действий, нарушающих законодательство Российской Федерации (УК РФ, Закон РФ «Об автоpском праве и смежных правах» и др.), а также законодательства других стран!

Техника оптимизации программ (971 Кб, HTML, )

Философия и архитектура NT против UNIX с точки зрения безопасности (41 Кб, HTML, )

Безопасное программирование на языке Perl (40 Кб, HTML, )

Секретное оружие социальной инженерии (29 Кб, HTML, )

Неявный самоконтроль как средство создания неломаемых защит (99 Кб, HTML, )

Самоучитель игры на WINSOCK (103 Кб, HTML, )

Примеры реальных взломов (346 Кб, HTML, )

Подсистема кэш-памяти, как она есть (361 Кб, HTML, )

О дизассемблировании программ (520 Кб, HTML, )

Тонкости дизассемблирования (дизассемблирование в уме) (301 Кб, HTML, )

Технология срыва стека (469 Кб, HTML, )

Техника и философия хакерских атак (1278 Кб, HTML, )

Обход брандмауэров снаружи и изнутри (254 Кб, HTML, )

SEH(Structured Exception Handling) на службе контрреволюции (166 Кб, HTML, )

Ошибки переполн. буфера извне и изнутри как обобщ. опыт реальных атак (1) (49 Кб, HTML, )

Побег через брандмаузер плюс терминализация всей NT (220 Кб, HTML, )

Ошибки переполн. буфера извне и изнутри как обобщ. опыт реальных атак (2) (144 Кб, HTML, )

Техника внедрения и удаления кода из PE-файлов (462 Кб, HTML, )

Путь воина — внедрение в pe/coff файлы (126 Кб, HTML, )

Способы взаимодействия с диском на секторном уровне (501 Кб, HTML, )


Восстановление данных на NTFS-разделах (925 Кб, HTML, )

Лазерный диск с нулевым треком как средство защиты от копирования (74 Кб, HTML, )

Особенности буферизации записи (169 Кб, HTML, )

Оптимизация штатных Си-функций для работы с памятью (429 Кб, HTML, )

Практические советы по восстановлению системы в боевых условиях (227 Кб, HTML, )

Программистская копилка (7 Кб, HTML, )

Могущество кодов Рида-Соломона или информация, воскресшая из пепла (208 Кб, HTML, )

Глубоководное погружение в чипсет Intel 875P (119 Кб, HTML, )

Техника оптимизации под Linux (Часть 1) (42 Кб, HTML, )

Разгон и торможение Windows NT (252 Кб, HTML, )

Техника оптимизации под Linux (Часть 2 — ветвления) (57 Кб, HTML, )

Восстановление NTFS — undelete своими руками (280 Кб, HTML, )

Unformat для NTFS (602 Кб, HTML, )

База данных под прицелом (189 Кб, HTML, )

Как защищают программное обеспечение (23 Кб, HTML, )

Техника оптимизации под Linux (Часть 3 — оптимизация циклов) (47 Кб, HTML, )

Прятки в Linux (334 Кб, HTML, )

Профессии эмуляторов (293 Кб, HTML, )

Особенности национальной отладки в UNIX (234 Кб, HTML, )

Методология защиты в мире UNIX (273 Кб, HTML, )

Экстремальный разгон DDR-памяти (269 Кб, HTML, )

Техника выживания в мутной воде или «как обуть антивирус» (489 Кб, HTML, )

Перехват библиотечных функций в Linux и BSD (513 Кб, HTML, )

Файловая система NTFS извне и изнутри (183 Кб, HTML, )

Беспроводные сети и их взлом (352 Кб, HTML, )

BIOS-моддинг (212 Кб, HTML, )

Восстановление данных с лазерных дисков (89 Кб, HTML, )

Искажение TOC’а как средство борьбы с несанкционированным копированием диска (179 Кб, HTML, )

Рыбная ловля в локальной сети — sniffering (218 Кб, HTML, )

Методы низкоуровневого управления приводами (343 Кб, HTML, )

BIOS Setup — удаленный контроль (302 Кб, HTML, )

Стандартный нестандартный приплюснутый Cи (288 Кб, HTML, )

Алхимия прошивки видео-BIOS (325 Кб, HTML, )

Метафизика WMF-файлов (691 Кб, HTML, )

Разгон мышей или скоростной Web-серфинг для экстремалов (543 Кб, HTML, )

Ассемблирование без секретов (335 Кб, HTML, )

Crackme, прячущий код на API-функциях (122 Кб, HTML, )

Распределенные хранилища информации (217 Кб, HTML, )

Война миров: ext2fs и ext3fs — взгляд под необычным углом (201 Кб, HTML, )

Турбо-перенос драйверов из Windows в LINUX/BSD (255 Кб, HTML, )

Особенности дизассемблирования под LINUX на примере tiny-crackme (695 Кб, HTML, )

Windows на одной дискете (235 Кб, HTML, )

Переполнение буфера на системах с неисполняемым стеком (374 Кб, HTML, )

Как восстановить нечитающийся CD? (32 Кб, HTML, )

MBR своими руками (209 Кб, HTML, )

Программирование в машинных кодах или Soft-Ice как logger (121 Кб, HTML, )

Малоизвестные способы взлома клиентских программ (352 Кб, HTML, )

Техника отладки приложений без исходных кодов (393 Кб, HTML, )

Защита игр от взлома (241 Кб, HTML, )

Ассемблерные головоломки или «Может ли машина понимать естественный язык»? (251 Кб, HTML, )

Восстановление удаленных файлов под BSD (72 Кб, HTML, )

Архитектура x86-64 под скальпелем ассемблерщика (363 Кб, HTML, )

Старые антиотладочные приемы на новый лад (77 Кб, HTML, )

Ручная троянизация приложений под Windows (1027 Кб, HTML, )

Захват чужих ботнетов (302 Кб, HTML, )

Секреты kernel-хакинга (93 Кб, HTML, )

Так ли открыты открытые исходники? (29 Кб, HTML, )

TOP10 ошибок защитников программ (453 Кб, HTML, )

Жизнь после BSOD (639 Кб, HTML, )

Обфускация и ее преодоление (419 Кб, HTML, )

Ремонт и восстановление жестких дисков (503 Кб, HTML, )

Звездная сила обращается в пыль (236 Кб, HTML, )

Переполняющиеся буфера — активные средства защиты (38 Кб, HTML, )

Полиморфный генератор — своими руками (103 Кб, HTML, )

Мануальная терапия нетрадиционного самоконтроля (313 Кб, HTML, )

Противодействие дизассемблеру «во сне и наяву» (458 Кб, HTML, )

Скоростной лохотрон (700 Кб, HTML, )

Исследование ядра LINUX’а (254 Кб, HTML, )

Разгон с паяльником в руках (1214 Кб, HTML, )

Охота за Голубым Зубом (385 Кб, HTML, )

Секреты покорения эльфов (544 Кб, HTML, )

Разгон NTFS (362 Кб, HTML, )

Восстановление данных своими руками (235 Кб, HTML, )

Сетевые игры — идеи и решения (66 Кб, HTML, )

Проблемы переносимости мобильных игр (371 Кб, HTML, )

Копирование без границ (447 Кб, HTML, )

Скрытый потенциал ручных сборок (489 Кб, HTML, )

Завоевание Интернета или кто сказал «мяу» (324 Кб, HTML, )

Взлом Пентагона (483 Кб, HTML, )

Атака на VPN (421 Кб, HTML, )

Побег из-под VM Ware (995 Кб, HTML, )

Захватываем ring 0 в Linux (19 Кб, HTML, )

Восстановление удаленных файлов под Linux (497 Кб, HTML, )

LINUX/BSD как бастион на пути вирусов (67 Кб, HTML, )

«Помоги себе сам» или обзор Anti-Spy (506 Кб, HTML, )

Ассемблер — экстремальная оптимизация (320 Кб, HTML, )

Сравнение ассемблерных трансляторов (190 Кб, HTML, )

Cкрытые возможности DSL-модемов (349 Кб, HTML, )

Защищенная ось без антивирусов и тормозов (279 Кб, HTML, )

Взлом через покрытие (381 Кб, HTML, )

Хачим ядро xBSD (278 Кб, HTML, )

Техника снятия дампа с защищенных приложений (308 Кб, HTML, )

Хак ядра NT (346 Кб, HTML, )

Подъем упавшей NT (297 Кб, HTML, )

On-line patching в секретах и советах (89 Кб, HTML, )

Сверхбыстрый импорт API-функций (14 Кб, HTML, )

xBSD в ракурсе исторического прицела (369 Кб, HTML, )

Как подделывают CRC16/32 (179 Кб, HTML, )

Мощь и беспомощность автоматической оптимизации (26 Кб, HTML, )

Выживание в системах с жестоким квотированием (245 Кб, HTML, )

Безопасный взлом через GPRS (767 Кб, HTML, )

Дешевый GPRS или «честный обман оператора» (234 Кб, HTML, )

Генетический распаковщик PE-файлов (284 Кб, HTML, )

Хакерские трюки или как поставить бряк на «jmp eax» (299 Кб, HTML, )

Взлом телевизоров вблизи и на расстоянии (517 Кб, HTML, )

Настройка файловой системы на максимальную производительность (400 Кб, HTML, )

Шесть грехов malware-писателей (256 Кб, HTML, )

Оптимизация xBSD под десктоп (674 Кб, HTML, )

Техника промышленного шпионажа (159 Кб, HTML, )

Обзор упаковщиков исполняемых файлов под UNIX (348 Кб, HTML, )

Упаковщики исполняемых файлов в LINUX/BSD и борьба с ними (497 Кб, HTML, )

Контрразведка с Soft-ice в руках (578 Кб, HTML, )

По следам MS IE OBJECT tag exploit’а (674 Кб, HTML, )

Знакомство с багами или ошибки клиентских приложений (387 Кб, HTML, )

Как заточить exploit под себя (240 Кб, HTML, )

Аудит и дизассемблирование exploit’ов (189 Кб, HTML, )

Эльфы большие и маленькие (459 Кб, HTML, )

Сидя на голом железе (119 Кб, HTML, )

Добывание информации из PDF-файлов (460 Кб, HTML, )

Взлом архиватора WinRAR (397 Кб, HTML, )

Отладка двоичных файлов под gdb (начало) (167 Кб, HTML, )

Трюки от мыщъх’а (131 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 1) (17 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 2) (14 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 4) (10 Кб, HTML, )

Ассемблер — это просто (19 Кб, HTML, )

Война миров: Ассемблер против Cи (250 Кб, HTML, )

Захват и освобождение заложников в исполняемых файлах (42 Кб, HTML, )

Заметки о восстановлении данных на жестких дисках (336 Кб, HTML, )

Универсальный метод обнаружения малвари (303 Кб, HTML, )

Многоядерные процессоры и проблемы, ими порождаемые (198 Кб, HTML, )

Секреты ассемблирования дизассемблерных листингов (553 Кб, HTML, )

Линковка дизассемблерных файлов (314 Кб, HTML, )

Гонки на вымирание, девяносто пятые выживают (251 Кб, HTML, )

Призраки ядра или модули-невидимки (572 Кб, HTML, )

Шприц для *BSD (923 Кб, HTML, )

Борьба с утечками ресурсов и переполн. буферами на языковом и внеязык. уровне (24 Кб, HTML, )

Вечная жизнь в играх своими руками (791 Кб, HTML, )

Неудачный выбор приоритетов на PDP-11 и его наследие на С/С++ (107 Кб, HTML, )

Экстремальный разгон процессора (80 Кб, HTML, )

Аппаратная виртуализация или эмуляция «без тормозов» (387 Кб, HTML, )

Основы термоядерной отладки с linice (507 Кб, HTML, )

Археологические раскопки ядра Vista/Longhorn (149 Кб, HTML, )

Ассемблерные извращения — натягиваем стек (179 Кб, HTML, )

Взлом Patch-Guard (235 Кб, HTML, )

Погружение в технику и философию gdb (окончание) (460 Кб, HTML, )

Blue pill/red pill — the matrix has windows longhorn (246 Кб, HTML, )

Portable shell-coding under NT and Linux — Введение (2428 Кб, DOC, )

Portable shell-coding under NT and Linux — Ошибки переполнения (1413 Кб, DOC, )

Portable shell-coding under NT and Linux — Секреты проектирования shell-кода (2415 Кб, DOC, )

Portable shell-coding under NT and Linux — Сетевые черви и локальные вирусы (3431 Кб, DOC, )

Portable shell-coding under NT and Linux — Брандмауэры и прочие системы защиты (3295 Кб, DOC, )

Portable shell-coding under NT and Linux — Экзотические объекты для внедрения (2847 Кб, DOC, )

У Google под колпаком (494 Кб, HTML, )

Проблемы DVD на широкоформатных экранах (279 Кб, HTML, )

Изучение английского с турбо-наддувом (246 Кб, HTML, )

Отладка без исходных текстов (книга) (3828 Кб, DOC, )

Электронные деньги — доверять или нет? (416 Кб, HTML, )

Взлом и защита WebMoney (406 Кб, HTML, )

Преодоление firewall’ов снаружи и изнутри (551 Кб, HTML, )

Книга «Техника восстановления данных» (Глава 1) (6600 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 2) (619 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 3) (2747 Кб, DOC, )

Книга «Техника восстановления данных» (Глава 4) (2629 Кб, DOC, )

Как затормозить компьютер с помощью SSE (222 Кб, HTML, )

Skype — скрытая угроза (319 Кб, HTML, )


Скрытые ключи автозапуска в системном реестре (150 Кб, HTML, )

Эффективный грабеж видео с YouTube (330 Кб, HTML, )

Записки варезника (530 Кб, HTML, )

Глубины и вершины сетевого стека Висты (494 Кб, HTML, )

Тонкая настройка параметров TCP/IP под толстые каналы (160 Кб, HTML, )

Грабеж защищенного медиа-контента в Висте (61 Кб, HTML, )

Грабим данные с flash-модулей и CD/DVD (213 Кб, HTML, )

Активация Висты лапами и хвостом (216 Кб, HTML, )

Чтение и запись NTFS-разделов под Linux/BSD (320 Кб, HTML, )

NDR-атаки: проблемы и решения (67 Кб, HTML, )

Борьба с удаленными потоками (369 Кб, HTML, )

Параллельные миры: война на выживание (361 Кб, HTML, )

Антивирусы в корпоративной среде (160 Кб, HTML, )

Колем дрова без помощи топора (331 Кб, HTML, )

Правильный DVD-Rip своими руками (часть 1) (437 Кб, HTML, )

Правильный DVD-Rip своими руками (часть 2) (367 Кб, HTML, )

Как сломать DVD-диск без помощи топора (608 Кб, HTML, )

Прячем файлы и папки (350 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 6) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 7) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 8) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 10) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 11) (104 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 12) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 13) (10 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 14) (11 Кб, HTML, )

С-шные трюки от мыщъх’а (выпуск 15) (11 Кб, HTML, )

Разбор коры в Linux и xBSD (193 Кб, HTML, )

Microsoft как армагеддон XXI века (236 Кб, HTML, )

IPv6 — демократия или диктатура? (153 Кб, HTML, )

Аппаратные средства удаленного администрирования (220 Кб, HTML, )

Трепанация двоичных файлов под Linux (258 Кб, HTML, )

Ассемблер в UNIX (мини-FAQ) (11 Кб, HTML, )

Троянизация приложений — технологии XXI века (414 Кб, HTML, )

Java под атакой (219 Кб, HTML, )

Основы взлома мобильных игр (426 Кб, HTML, )

Java на мобильных телефонах — атаки и угрозы (114 Кб, HTML, )

Java на smart-картах (10 Кб, HTML, )

Небезопасная безопасная Java (190 Кб, HTML, )

Чемоданчик хакера (1650 Кб, HTML, )

Какие следы ты оставил после себя? (393 Кб, HTML, )

Hot-patch ядер Linux/BSD/NT (206 Кб, HTML, )

Прячем трафик от админа (141 Кб, HTML, )

Поиск малвари своими лапами и хвостом (448 Кб, HTML, )

Охота и рыбалка в динамической памяти (261 Кб, HTML, )

Отладчик WinDbg как API- и RPC-шпион (370 Кб, HTML, )

Exploit review (выпуск 5) (159 Кб, HTML, )

Exploit review (выпуск 7) (224 Кб, HTML, )

Exploit review (выпуск 9) (284 Кб, HTML, )

Exploit review (выпуск 12) (440 Кб, HTML, )

Exploit review (выпуск 13) (235 Кб, HTML, )

Exploit review (выпуск 14) (371 Кб, HTML, )

Ремонт, обслуживание и эксплуатация APC UPS (39 Кб, HTML, )

Сырые сокеты на Висте, XP, W2K. (205 Кб, HTML, )

gcc: компиляция на форсаже с турбо-наддувом (127 Кб, HTML, )

Code Optimization: Effective Memory Usage (10 Mб, CHM, на англ.)

Hacker Disassembling Uncovered (4,8 Mб, CHM, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 1) (453 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 2) (50 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 3) (503 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 4) (119 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 5) (65 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 6) (138 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 7) (142 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 8) (221 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 9) (77 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 10) (168 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 11) (76 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 12) (154 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 13) (1279 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 14) (71 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 15) (352 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 16) (271 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 17) (51 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 18) (79 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 19) (224 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 20) (37 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 21) (193 Kб, DOC, на англ.)

Portable Shell Coding Under NT and Linux (Chapter 22) (89 Kб, DOC, на англ.)

Дополнительные cтатьи

Алгоритм построения цифрового дайджеста MD4 (269 Кб, PDF, )

Алгоритм построения цифрового дайджеста MD5 (917 Кб, PDF, )

Использование Crypto API, Автор — Юрий Николаев (92 Кб, HTML, )

Математическое обоснование коллизий MD5 (483 Кб, PDF, на англ., )

Коллизии MD5 — практическое применение (55 Кб, PDF, на англ., )

Коллизии MD4, MD5, HAVAL-128 и RIPEMD (57 Кб, PDF, на англ., )

Making a Faster Cryptanalytic Time-Memory Trade-Off (242 Кб, PDF, на англ., )

Time-Memory Trade-Offs: False Alarm Detection Using Checkpoints (239 Кб, PDF, на англ., )

A Cryptanalytic Time — Memory Trade-Off (860 Кб, PDF, на англ., )

Умножение на константу (примеры кода на Assembler’е) (382 Кб, TXT, )

RFC-документы по криптографии и шифрованию

RFC-1319 (25 Кб, TXT) — The MD2 Message-Digest Algorithm

RFC-1320 (32 Кб, TXT) — The MD4 Message-Digest Algorithm

RFC-1321 (35 Кб, TXT) — The MD5 Message-Digest Algorithm

RFC-1810 (17 Кб, TXT) — Report on MD5 Performance

RFC-2085 (14 Кб, TXT) — HMAC-MD5 IP Authentication with Replay Prevention

RFC-2104 (22 Кб, TXT) — HMAC: Keyed-Hashing for Message Authentication

RFC-2202 (11 Кб, TXT) — Test Cases for HMAC-MD5 and HMAC-SHA-1

RFC-2268 (20 Кб, TXT) — A Description of the RC2(r) Encryption Algorithm

RFC-2286 (11 Кб, TXT) — Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128

RFC-2313 (39 Кб, TXT) — PKCS #1: RSA Encryption Version 1.5

RFC-2403 (14 Кб, TXT) — The Use of HMAC-MD5-96 within ESP and AH

RFC-2404 (13 Кб, TXT) — The Use of HMAC-SHA-1-96 within ESP and AH

RFC-2405 (21 Кб, TXT) — The ESP DES-CBC Cipher Algorithm With Explicit IV

RFC-2419 (24 Кб, TXT) — The PPP DES Encryption Protocol, Version 2 (DESE-bis)

RFC-2437 (76 Кб, TXT) — PKCS #1: RSA Cryptography Specifications Version 2.0

RFC-2857 (13 Кб, TXT) — The Use of HMAC-RIPEMD-160-96 within ESP and AH

RFC-3174 (35 Кб, TXT) — US Secure Hash Algorithm 1 (SHA1)

RFC-3217 (20 Кб, TXT) — Triple-DES and RC2 Key Wrapping

RFC-3385 (55 Кб, TXT) — iSCSI Cyclic Redundancy Check (CRC)/Checksum Considerations

RFC-3394 (73 Кб, TXT) — Advanced Encryption Standard (AES) Key Wrap Algorithm

RFC-3537 (17 Кб, TXT) — Wrapping a HMAC Key with a Triple-DES Key or an AES Key

RFC-3602 (30 Кб, TXT) — The AES-CBC Cipher Algorithm and Its Use with IPsec

RFC-3447 (147 Кб, TXT) — Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1

RFC-3537 (17 Кб, TXT) — Wrapping a HMAC key with a Triple-DES Key or an AES Key

RFC-3713 (26 Кб, TXT) — A Description of the Camellia Encryption Algorithm

RFC-3962 (33 Кб, TXT) — Advanced Encryption Standard (AES) Encryption for Kerberos 5

RFC-4634 (203 Кб, TXT) — US Secure Hash Algorithms (SHA and HMAC-SHA)

RFC-4648 (37 Кб, TXT) — The Base16, Base32, and Base64 Data Encodings

RFC-4757 (38 Кб, TXT) — The RC4-HMAC Kerberos Encryption Types Used by Microsoft Windows

Ассемблирование без секретов

В следующих подразделах показано, как работает ассемблер. И хотя ассемблеры разных машин разные, процесс ассемблирования, по сути, один и тот же.

Ассемблирование за два прохода

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

Рассмотрим ситуацию, где первый оператор — переход к адресу L. Ассемблер не может ассемблировать оператор, пока не знает адрес L. Но адрес L может находиться где-нибудь в конце программы, и тогда ассемблер не сможет найти этот адрес, не прочитав всю программу. Эта проблема называется проблемой ссылки вперед (forward reference problem) и заключается она в том, что символ L используется еще до своего определения (то есть выполняется обращение к символу, определение которого появится позднее).

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

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

Еще одна цель первого прохода — сохранять все макроопределения и расширять вызовы по мере их появления. Следовательно, в одном проходе происходит и определение символов, и расширение макросов.

Вам не нужно будет использовать Макроассемблер фирмы «IBM» для использования представленных в книге процедур доступа, написанных на ассемблере. Все эти программы включены в пакет программ в виде готовых к использованию обьектных модулей.
Экспертные системы и экспертный анализ Архитектура компьютера Уровень ассемблера

Ассемблирование и компилирование

Ассемблер

Ассе́мблер (от англ. assembler — сборщик) — компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу намашинном языке

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

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

Архитектура x86

Ассемблеры для DOS

Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.

Windows

При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы для выполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностью остановлено.

Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM32».

GNU и GNU/Linux

В состав операционной системы GNU входит пакет binutils, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис (поддерживается с версии 2.10).

Переносимые ассемблеры

Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).

Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).

flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (в том числе под GNU GPL) BSD-лицензией. Есть версии дляKolibriOS, Linux, DOS и Windows; использует Intel-синтаксис и поддерживает инструкции x86-64.

Архитектуры RISC

MCS-51

MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.

Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.

AVR

На данный момент существуют 3 компилятора производства Atmel (AVRStudio 3, AVRStudio 4 и AVRStudio 5).

В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).

Также существует свободный минималистический компилятор avra [1] .

§ 8-разрядные Flash-контроллеры семейства MCS-51

§ 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR). На данный момент семейство classic AVR трансформировано в ATtiny и ATmega

§ 8-разрядные RISC-контроллеры семейства PIC (PIC10,PIC12,PIC16,PIC18)

§ 16-разрядные RISC-контроллеры семейства PIC (PIC24HJ/FJ,dsPIC30/33)

§ 32-разрядные RISC-контроллеры семейства PIC (PIC32) с архитектурой MIPS32 M4K

§ 32-разрядные RISC-контроллеры семейства AVR32 (AVR32)

§ 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)

Макроассемблер

Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера. [2]

Ассемблирование и компилирование

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

Как минимум один раз снялся в кино, но зато в каком! В первой части Терминатора можно видеть как Киборг предпочитает MOS Technology 6510/8500 ассемблер.

Необходимое пояснение. На скриншоте видна программка из чередующихся инструкций LDA-STA-LDA-STA…(load-store-load-store). В семействе 6502 программы состоят чуть менее, чем полностью из LDA/LDY/LDX/STA/STX/STY вследствие наличия всего 3х 8-битных регистров. Наличие почти полного отсутствия регистров компенсируется нулевой страницей памяти, откуда-куда постоянно приходится перекладывать байтики, так как хранить их более негде. В данном ЦПУ 13 режимов адресации на всего 53 команды.

Илон Маск рекомендует:  Разработка собственных листов рассылки
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL