Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- В КЛАССЕ.
- 2Fh - прерывание
- iret - для обработчика прерываний
- ЗАДАЧА:
- пишем резидента и обнаружителя
- 1 программа
- повеститься на прерывание 2Fh
- перехватить прерывание 2Fh
- кладём в регистр инициалы
- 2программа
- дёргает int 2Fh
- достаём инициалы
- ПРОБЛЕМЫ
- регистр может быть перезаписан, поэтому подумать над стеком и вместо jamp - call
- ________________________________________
- ДОМАШКА
- резидент - перехватывает 2Fh
- наша прога - обрабатывает аргументы командной строки
- -i - установка резидента
- -u - удаление резидента
- /s - о резиденте (где сидит)
- /k -убить
- без всего
- -— usage (мин помощь)
- делаем с помощью xlat
- /h или -h - справка
- ОБЪЯСНЕНИЕ
- /u - если сидим на вершине, то можно стать невидимым
- /k - если над нами кто-то есть, то удаляем всю цепочку (того, кто над нами и нас)
- как узнать, кто наверху: с помощью адреса куда идёт прерывание и адреса обработчика
- (совпадают? мы наверху: нет)
- mov ax, auth_code
- int 2Fh; ax <- 'инициалы'
- cs <- seg; bx <- offset
- cmp ax, ''инициалы'
- мега задание:
- 1)без 25 и 35 ф-ии (сами обрабатываем)
- 2)не больше 100б
- мега заданин3:
- 1)либо считывание кол-во нажатий, как pepores
- 2)либо часы
- MCB - почитать
- ДОМАШКА (ТА ЖЕ)
- ; написать резидента, кот перехватывает прерывание 2f и облад функционалом: -h - справка, -i - установка резидента -u - деинстал резидента
- ;-s по какому адресу резидент -k - убить. запуск без аргов- просто usage. обработка аргов - только с xlat.
- ; -u uninstall проверяем, что сидим сверху на вершине каскада, тогда просто удаляемся - снимаемся с обработки и вместо обработчика 2f ставим старый обраб
- ; если сидим не сверху - то сняться нельзя, говорим, что не можем. в этом случае используется kill, адрес тот, что знает наш резидент.
- ; если всерху сидим, то kill и uninstall сверху
- ; треб к резиденту: проверка, лежит ли мой резидент. если никто не сидит - нельзя -i/-u. если сидит - нельзя -i
- ; каскадность
- ; mov ax, auth_code
- ; int 2fh
- ; резидент сравнивает свой код с этим
- ; ax <— 'PM'
- ; es <— seg
- ; bx <— offset
- ; cmp ax, 'PM'
- ; совпадают - можем делать uninstall, не совпадают - олько kill
- ;
- ; хранить хелп - внутри проги db, db, db, ...
- ;
- ; *переопределять вектора прерываний вручную
- ;
- ; **резидент <= 100 байт, если вкурить mcb
- ;
- ; ***резидент считает прерывания - сядет на обработчик клавы и считает, сколько нажали на клаву / либо развернуть часы на экран и секундомер
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement