in name of zero INOZ, issue #1, 20 nov. 2001 Универсальный дизассемблер Alma by Gr.Protagor // SBVC Gu // SBVC Мы создали примитивный, но очень полезный :) dizasm, который позволяет разбирать команды и получать такую информацию, как: длину команды, её тип (например, арифметическая/пересылки/портовая и т.п.), что позволяет уже абсолютно спокойно заменять команды их смысловыми (по типу) аналогами. Для примера предлагается программка, которая заменяет в другой программке асмусовую команду MOV EAX, 1 на аналогичную по смыслу последовательность команд: XOR EAX, EAX; NOP; INC EAX; NOP. Причём, если посмотреть в код изменяемой проги, то не все так тупо, как могло бы быть: вхождения последовательности байтов, совпадающих с кодом MOV'а не заменяется, если не является MOV'ом. Для простоты примера мы не вписывали в него разборщик заголовка EXE-шника, а прописали нужние цифры ручками :). В файле ALMA.INC вы сможете найти всё полезное по use'анию OBJ-ектника: заполняемую процедуркой структуру и список команд по типам. Дальнейшие планы таковы: приписать к каждой команде, в её описательную структуру флаги используемых входных и выходных элементов, то как: изменяемые флаги, регистры. Используя их мы сможем не только заменять команды поодиночке на их эквиваленты, но и менять команды между собой. Тем самым мы сможем добиться нехилого видимого изменения кода, последовательности кода без изменения создаваемого программой эффекта. Не смотрите на пример слишком строго:) - он для понимания использования OBJ-ектника, а не как что-то реальное. Поставляемые файлы [/vx/files/vx03.rar]: ALMA.OBJ - собственно сам дизассемблер :) ALMA.INC - необходимые данные для дизасма. ALMATEST.ASM - тест для дизасма ALMATEST.BAT - как это всё компиляется HELLO.EXE - используется для теста HELLO.ASM - его исходник 09.11.2001