Работать с обработчиком прерывания 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, так как код для распаковки компонентов, сжатых с помощью такого алгоритма, можно сделать очень коротким. Графически метод представлен
Рубрика: Женский интерес