Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#6| Fool's Idol
Demon's Souls |#5| Leechmonger
Demon's Souls |#4| Adjudicator & Tower Knight
Demon's Souls |#3| Cave & Armor Spider

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Долгин А.Е. Весь текст 223.76 Kb

Как защитить информацию (пособие по борьбе с хакерами)

Предыдущая страница Следующая страница
1 ... 3 4 5 6 7 8 9  10 11 12 13 14 15 16 ... 20
процессоров, вызывает определенные трудности на 16-разрядных: и
характер операций у "буквенных" кодов другой, и однобайтовых команд
мало (с двух - трехбайтовыми разбираться еще сложнее). Тем не менее,
после некоторой тренировки можно и этот способ взять на вооружение.

                            ЗАМЕНА БЛОКОВ
     Традиционный подход при использовании ветвления заключается в
построении 2-х участков с разным набором команд. При выполнении
запрограммированного условия - выполняется первый, в противном случае
- управление передается на второй. В самомодифицирующихся модулях
лучше отойти от общепринятой схемы, и применить переброску того или
иного блока на один и тот же участок программы. Сработало условие - на
следующие за ним адреса записывается первый набор команд, не сработало
- другой, затирая предыдущие (тем более, что у МП 286 и выше - блочные
пересылки выполняются легко и быстро).
     Определить в распечатке такой "оверлейный" блок - очень сложно,
особенно, если его куски хранятся в других сегментах.

                            БЛОК ДЕКОДИРОВАНИЯ
                (присланный Ерко В.Д., автор неизвестен):
        ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
        ¦    ; 1 модуль программы                                    ¦
        ¦n:  mov HL, nn   ; адрес начала блока                       ¦
        ¦    mov BC, ll   ; длина блока                              ¦
        ¦    mov AX, kk   ; ввод ключа декодера                      ¦
        ¦    xor (HL)     ; декодирование                            ¦
        ¦    mov (HL), AX ; замена закодирован. значения на раскодир.¦
        ¦    inc HL       ; переход к очередному байту               ¦
        ¦    dec BC       ; уменьшение счетчика                      ¦
        ¦    jnz  n       ; повтор декодирования, если BC > 0        ¦
        ¦    ..........   ; продолжение модуля                       ¦
        ¦    ; 2 модуль программы                                    ¦
        ¦nn: db .......................                              ¦
        ¦                 ; (Закодированный блок.)                   ¦
        ¦    db ........  ; конец блока, адрес = nn + ll             ¦
        ¦мм: db ........  ; 3 модуль (и так далее)                   ¦
        ¦                                                            ¦
        ¦      После декодирования 1  блока  и  исполнения  остальных¦
        ¦команд управление передается на декодированный блок, который¦
        ¦начинается  с  такой  же  процедуры,  декодирующей следующий¦
        ¦участок. И таких вложений - 156.                            ¦
        АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                                рис. 5.1


                 ИСПОЛЬЗОВАНИЕ ТЕКСТА КАК КОДА ПРОГРАММЫ
                        (для микропроцессора Z80)
        ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
        ¦6E1E  C3 6C 71    jmp  716Ch      ; завершение предыдущего  ¦
        ¦                                  ; участка                 ¦
        ¦6E21  47          mov  B,A        ; начало подпрограммы     ¦
        ¦6E22  31 55 D0    mov  SP,0D055h  ;1UP - текст первого      ¦
        ¦                                  ; сообщения               ¦
        ¦6E25  47          mov  B,A        ;                         ¦
        ¦6E26  32 55 D0    mov  (0D055h),A ;2UP - текст второго      ¦
        ¦                                  ; сообщения               ¦
        ¦6E29  45          mov  B,L        ;                         ¦
        ¦6E2A  48          mov  C,B        ;H - третье сообщение     ¦
        ¦6E2B  C9          ret             ;I   (оно же завершает    ¦
        ¦6E2C  21 00 00    mov  HL,0000    ;     подпрограмму)       ¦
        АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

                            рис. 5.2

                                                      Таблица 5.1
                            ВЗАИМОЗАМЕНЯЕМЫЕ КОМАНДЫ
                 ЪДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДД¬
                 ¦ Первичный код       ¦ Альтернативный код     ¦
                 ГДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦               Команды пересылки:             ¦
                 ГДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  mov op1,op2        ¦    push op2            ¦
                 ¦                     ¦    pop op1             ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  xchg op1,op2       ¦    push op1            ¦
                 ¦                     ¦    push op2            ¦
                 ¦                     ¦    pop op1             ¦
                 ¦                     ¦    pop op2             ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  lds r,dword ptr op ¦    mov r,word ptr op   ¦
                 ¦                     ¦    mov ds,word ptr op+2¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  les r,dword ptr op ¦    mov r,word ptr op   ¦
                 ¦                     ¦    mov es,word ptr op+2¦
                 ГДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦               Арифметические команды:        ¦
                 ГДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  add op1,op2        ¦    xchg op2,ax         ¦
                 ¦                     ¦    add op1,ax          ¦
                 ¦                     ¦    xchg op2,ax         ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  adc,sub,sbb и др.  ¦    аналогично add      ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  inc op             ¦    add op,1            ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  dec op             ¦    sub op,1            ¦
                 ГДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦               Логические команды:            ¦
                 ГДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦ and,or,xor и др.    ¦    аналогично add      ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  not op             ¦    xor op,0ff(ff)h     ¦
                 ГДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦               Цепочечные команды:            ¦
                 ГДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  rep movsb          ¦     push ax            ¦
                 ¦                     ¦ m:  mov al,[si]        ¦
                 ¦                     ¦     mov es:[di],al     ¦
                 ¦                     ¦     inc si             ¦
                 ¦                     ¦     inc di             ¦
                 ¦                     ¦     loop m             ¦
                 ¦                     ¦     pop ax             ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  repe(repne) cmpsb  ¦     push ax            ¦
                 ¦                     ¦ m:  mov al,[si]        ¦
                 ¦                     ¦     cmp al,es:[di]     ¦
                 ¦                     ¦     jne(je) m1         ¦
                 ¦                     ¦     inc si             ¦
                 ¦                     ¦     inc di             ¦
                 ¦                     ¦     loop m             ¦
                 ¦                     ¦ m1: pop ax             ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  lodsb              ¦    mov al,[si]         ¦
                 ¦                     ¦    inc si              ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  stosb              ¦    mov es:[di],al      ¦
                 ¦                     ¦    inc di              ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  shift  op,cnt      ¦     push cx            ¦
                 ¦                     ¦     mov cx,cnt         ¦
                 ¦                     ¦ m:  shift op,1         ¦
                 ¦                     ¦     loop m             ¦
                 ¦                     ¦     pop cx             ¦
                 ГДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦         Команды передачи управления:         ¦
                 ГДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  j(условие) loc     ¦     jn(условие) loc1   ¦
                 ¦                     ¦     jmp loc            ¦
                 ¦                     ¦ loc1:  . . .           ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  loop loc           ¦    dec cx              ¦
                 ¦                     ¦    jne loc             ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  jmp addr           ¦    push addr           ¦
                 ¦                     ¦    ret                 ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  jmp dword ptr addr ¦    push addr+2         ¦
                 ¦                     ¦    push addr           ¦
                 ¦                     ¦    retf                ¦
                 ГДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДґ
                 ¦  call addr          ¦     push m             ¦
                 ¦                     ¦     jmp addr           ¦
                 ¦                     ¦ m:   . . .             ¦
                 АДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДЩ
     Cокращения: op, op1, op2 - операнды команд; r - операнд-регистр;
shift - код команды сдвига; cnt - счетчик в командах сдвига; loc -
метка в командах перехода и цикла; addr - адрес в командах перехода и
вызова подпрограмм.


              6. ИСПОЛНЯЕМЫЙ МОДУЛЬ - ЧТО МОЖНО СДЕЛАТЬ
                        БЕЗ ИСХОДНЫХ ТЕКСТОВ?
     Одной из самых сложных работ в программировании является
модификация исполняемых модулей при отсутствии исходных текстов. Надо
признать, что программисту не часто приходится заниматься подобными
работами, но, однако, никто не застрахован от потери собственных
исходных текстов программ. В частности, мы обратились к решению
названной задачи для того, чтобы исправить найденную в нашем пакете
ошибку. "Исходники" к тому времени были случайно уничтожены при борьбе
с вирусом. Бесполезно вспоминать и переписывать весь пакет - за тот
срок, в течении которого гарантировалось устранение любых замечаний,
мы в любом случае не успевали этого сделать. Поэтому стали искать
другие пути. В результате разработали соответствующий метод и даже
набор инструментальных средств, который с успехом применяем по сей
день.
     Разумеется, приемы корректировки исполняемых модулей
предназначены профессиональным разработчикам ПО для IBM PC в среде
DOS. Поэтому опустим некоторые детали, которые профессионал должен
знать, а в качестве примера возьмем лишь EXE-файлы - более сложные для
модификации, поскольку все сказанное может быть отнесено и к
COM-файлам.
     Напомним, что EXE-файл состоит из заголовка, таблицы перемещения
и собственно исполняемого кода. Информация заголовка используется
операционной системой для загрузки модуля в оперативную память.
Устанавливаются значения основных регистров, обрабатывается таблица
перемещения, а затем управление передается задаче. В ходе работы все
основные функции ввода/вывода, захвата или освобождения ОЗУ и т.п.
обрабатываются операционной системой через прерывание 21h, а значит,
всегда могут быть изменены с помощью специального драйвера, который
Предыдущая страница Следующая страница
1 ... 3 4 5 6 7 8 9  10 11 12 13 14 15 16 ... 20
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (4)

Реклама