"С.П.Расторгуев, А.Е.Долгин "Как защитить информацию" (пособие по борьбе с хакерами)" - читать интересную книгу авторапостроении 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 модуль программы │ │ ; (Закодированный блок.) │ │ 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 - текст второго │ │ ; сообщения │ |
|
|