Фундаментальные основы хакерства




Шаг пятый. На сцене появляется IDA - часть 17


seg000:011C                inc          di

seg000:011D                movsw

seg000:011E                add          cx, cs:[bp+si]

seg000:0121                or           cl, [bx+di]

seg000:0123                dec          dx

seg000:0124                xor          ax, 0F07h

seg000:0127                or           cl, [bx+di]

seg000:0129                adc          al, 47h

seg000:0129;------------------------------------------------------

seg000:012B                db           6Bh ; k

seg000:012C                db           6Ch ; l

seg000:012D                db           42h ; B

seg000:012E;------------------------------------------------------

Непосредственное дизассемблирование зашифрованного кода невозможно – предварительно его необходимо расшифровать. Подавляющее большинство дизассемблеров не могут модифицировать анализируемый текст налету и до загрузки в дизассемблер исследуемый файл должен быть полностью расшифрован. На практике, однако, это выглядит несколько иначе – прежде чем расшифровывать необходимо выяснить алгоритм расшифровки, проанализировав доступную часть файла. Затем выйти из дизассемблера, тем или иным способом расшифровать «секретный» фрагмент, вновь загрузить файл в дизассемблер (причем предыдущие результаты дизассемблирования окажутся утеряны) и продолжить его анализ до тех пор, пока не встретится еще один зашифрованный фрагмент, после чего описанный цикл «выход из дизассемблера –расшифровка – загрузка - анализ» повторяется вновь.

Достоинство IDA заключается в том, что она позволяет выполнить ту же задачу значительно меньшими усилиями, никуда не выходя из дизассемблера. Это достигается за счет наличия механизма виртуальной памяти, – если не вдаваться в технические тонкости, упрощенно можно изобразить IDA в виде «прозрачной» виртуальной машины, оперирующей с физической памятью компьютера. Для модификации ячеек памяти необходимо знать их адрес, состоящий из пары чисел – сегмента и смещения.

Слева каждой строки указывается ее смещение и имя сегмента, например “seg000:0116”.


Содержание  Назад  Вперед