"С.П.Расторгуев, А.Е.Долгин "Как защитить информацию" (пособие по борьбе с хакерами)" - читать интересную книгу автора

построении 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 - текст второго │
│ ; сообщения │