Некоторые джокеры (BIOS/DOS/TSR ...) записывают случайные данные в векторную таблицу прерываний. Я знаю это, потому что разборка мне так сказала.Найдите бесплатный слот прерывания
Обычно, перед захватом вектора прерывания, я проверяю, что выбранный слот IVT пуст. Но со всем этим left-behind-data, как скромное приложение знает, что тем не менее безопасно привязать определенный вектор прерывания?
Хотя ссылка моего программиста описывает DOS функцию 25h SetInterruptVector
в
«Безопасно модифицирует вектор прерывания, чтобы указать на указанный обработчик прерываний»
Я не думаю, что это волнует слишком много об этом ранее существовавшем фиктивном контенте. До сих пор для безопасно!
Есть ли какой-нибудь гениальный способ быть абсолютно уверенным в том, что вектор прерывания является бесплатным?
«Безопасное», вероятно, означает убедиться, что никаких прерываний не происходит * в то время как * вектор обновляется. Ответ на остальную часть вопроса почти наверняка: № –
Вы можете использовать мультиплексное прерывание (2Fh) или альтернативное прерывание мультиплексирования (AMIS, 2Dh). Но вы также можете просто выбрать случайное прерывание, которое BIOS и MS-DOS не документируются как используемые. Если вы на самом деле запускаете какие-либо TSR, не сложно определить, используется ли прерывание, которое вы выбрали. Просто перепишите вектор и посмотрите, что-нибудь сломается. –