·─T─┌O┐─T─┌A┐L···─Z┐┌0┐┌M┐┌B·i┌F─i┌C─┌A┐─T─i┌O┐┬N┬··························
   │ │ │ │ ├─┤│    / │ ││││├┴┐┬├─ ┬│  ├─┤ │ ┬│ ││└┤  Issue #1, January-2001
 ··│·└─┘·│·│·│└─··└──└─┘│·│└─┘││··│└──│·│·│·│└─┘│·│··························

 ············································································
                             ДИЗАССЕМБЛЕР ДЛИН                     [lde*.zip]
 ············································································

     Представляю вашему вниманию две новых версии дизассемблера длин LDE32.
 Этот   движок  позволяет  получить  длину  почти  любой  32-битной  x86/87
 инструкции,   с   учетом  префиксов  и  всего  прочего,  но  кроме  всяких
 MMX-оподобных и специфических изъебств.

     Основу  движка составляет таблица флагов, по дворду на байт, и так два
 раза: для обычных опкодов и для 0F- опкодов. Всего 2048 байт.

     В  версии  LDE  1.05  таблица  представлена  как  есть, что удобно для
 апгрейта  движка  дополнительными свойствами. В этом случае в движке всего
 одна процедура -- disasm(), с одним параметром -- поинтером на опкод.

     В  версии  LDE  1.06 таблица сжата Хаффманом, и процедур в движке две:
 одна  --  init(), с одим параметром -- поинтером на 2048 байт под таблицу,
 и  вторая -- disasm(), с двумя параметрами -- поитерами на опкод и таблицу
 соответственно.

     Оформлены  процедуры  в  стиле  cdecl  (надо  делать ADD ESP, nn), а в
 качестве  результата в EAX возвращается длина инструкции в байтах или -1 в
 случае неизвестной инструкции.

include         lde32bin.inc            ; LDE32, 1.06

tbl             db      2048 dup (?)    ; таблица флагов LDE32

                push    offset tbl      ; адрес таблицы
                call    disasm_init     ; распаковать в память таблицу
                add     esp, 4

                mov     ebx, 0BFF71000h ; адрес для дизасма
cycle:
                push    ebx             ; адрес дизассемблируемой инструкции
                push    offset tbl      ; адрес таблицы
                call    disasm_main     ; получить длину в EAX
                add     esp, 8

                cmp     eax, -1         ; ошибка?
                je      error

                add     ebx, eax        ; к следующей инструкции

                jmp     cycle

     Движок может быть (и был) использован в качестве базы для всевозможных
 алгоритмов вирусных мутаций и дизассемблирования кода под win32.

 ············································································