Работать с обработчиком прерывания I9h

Работать с обработчиком прерывания I9h предпочтительней, потому что к тому времени, когда он вызывается, производится инициализация всех ап­паратных средств, и на данном этапе компьютер более подготовлен к загруз­ке операционной системы. За счет этого вы можете свободно копаться и в остальных модулях BIOS. Тем не менее, следует соблюдать осторож­ность, чтобы не повредить в памяти какую-либо структуру данных BIOS, которая будет использоваться операционной системой. К таким структу­рам относятся область BDA и код BIOS со статусом «только для чтения» в сегментах Eoooh и FOOOh. Реализация обработчика прерывания I9h для дан­ной BIOS показана. Изучая код, приведенный можно обнаружить большое ко­личество точек, в которые можно вставить переход к вашей внедренной про­цедуре. В частности, можно перенаправить вектор начальной загрузки, кото­рый выполняет переход по адресу Oooo:7cooh, На адрес вашей внедренной процедуры, предназначенной для загрузки ядра операционной системы и по­следующей его модификации. Помните, что ваша процедура может быть вставлена в свободное место в системной BIOS точно таким же образом, как описано При внедрении вашего руткита в обработчик прерывания BIOS I9h Может возникнуть необходимость реализовать внедряемую процедуру в виде ком­понента расширения BIOS. Это может случиться, если ваша процедура ока­жется слишком велика, чтобы поместиться в свободное пространство в сис­темной BIOS. Эта ситуация отличается от случая с обработчиком прерывания I3h Тем, что когда вызывается прерывание I9h, Процедура для распаковки BIOS может быть уже удалена из сегмента 2000h. Чтобы решить эту пробле­му, обработайте внедряемую процедуру с помощью алгоритма LHA нулевого уровня при ее интегрировании в двоичный файл BIOS с помощью утилиты Cbrom. В этом случае код процедуры не будет сжат, а будет помещен в об­щий двоичный файл BIOS как чисто двоичный компонент. Но тогда каким же образом можно реализовать сжатие внедряемой процедуры? В этом нет ничего трудного — поместите подпрограмму распаковки в самое начало ва­шей специальной процедуры. При упаковке упакуйте только ту часть про­цедуры, которая следует за подпрограммой распаковки. При первом испол­нении вашей специальной процедуры, распакуйте ее сжатую часть с помо­щью этой несжатой подпрограммы распаковки. Хотя эта задача и сложна, но вполне реализуема. Я советую использовать алгоритм упаковки на основе алгоритма LZH, так как код для распаковки компонентов, сжатых с помощью такого алгоритма, можно сделать очень коротким. Графически метод пред­ставлен



Рубрика: Женский интерес

Комментарии закрыты.