Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. В КЛАССЕ.
  2.  
  3. 2Fh - прерывание
  4. iret - для обработчика прерываний
  5. ЗАДАЧА:
  6. пишем резидента и обнаружителя
  7. 1 программа
  8. повеститься на прерывание 2Fh
  9. перехватить прерывание 2Fh
  10. кладём в регистр инициалы
  11. 2программа
  12. дёргает int 2Fh
  13. достаём инициалы
  14.  
  15. ПРОБЛЕМЫ
  16. регистр может быть перезаписан, поэтому подумать над стеком и вместо jamp - call
  17.  
  18.  
  19. ________________________________________
  20.  
  21. ДОМАШКА
  22.  
  23. резидент - перехватывает 2Fh
  24. наша прога - обрабатывает аргументы командной строки
  25. -i - установка резидента
  26. -u - удаление резидента
  27. /s - о резиденте (где сидит)
  28. /k -убить
  29. без всего
  30. -— usage (мин помощь)
  31. делаем с помощью xlat
  32. /h или -h - справка
  33. ОБЪЯСНЕНИЕ
  34. /u - если сидим на вершине, то можно стать невидимым
  35. /k - если над нами кто-то есть, то удаляем всю цепочку (того, кто над нами и нас)
  36. как узнать, кто наверху: с помощью адреса куда идёт прерывание и адреса обработчика
  37. (совпадают? мы наверху: нет)
  38. mov ax, auth_code
  39. int 2Fh; ax <- 'инициалы'
  40. cs <- seg; bx <- offset
  41. cmp ax, ''инициалы'
  42. мега задание:
  43. 1)без 25 и 35 ф-ии (сами обрабатываем)
  44. 2)не больше 100б
  45. мега заданин3:
  46. 1)либо считывание кол-во нажатий, как pepores
  47. 2)либо часы
  48. MCB - почитать
  49.  
  50.  
  51. ДОМАШКА (ТА ЖЕ)
  52.  
  53. ; написать резидента, кот перехватывает прерывание 2f и облад функционалом: -h - справка, -i - установка резидента -u - деинстал резидента
  54. ;-s по какому адресу резидент -k - убить. запуск без аргов- просто usage. обработка аргов - только с xlat.
  55. ; -u uninstall проверяем, что сидим сверху на вершине каскада, тогда просто удаляемся - снимаемся с обработки и вместо обработчика 2f ставим старый обраб
  56. ; если сидим не сверху - то сняться нельзя, говорим, что не можем. в этом случае используется kill, адрес тот, что знает наш резидент.
  57. ; если всерху сидим, то kill и uninstall сверху
  58. ; треб к резиденту: проверка, лежит ли мой резидент. если никто не сидит - нельзя -i/-u. если сидит - нельзя -i
  59. ; каскадность
  60. ; mov ax, auth_code
  61. ; int 2fh
  62. ; резидент сравнивает свой код с этим
  63. ; ax <— 'PM'
  64. ; es <— seg
  65. ; bx <— offset
  66. ; cmp ax, 'PM'
  67. ; совпадают - можем делать uninstall, не совпадают - олько kill
  68. ;
  69. ; хранить хелп - внутри проги db, db, db, ...
  70. ;
  71. ; *переопределять вектора прерываний вручную
  72. ;
  73. ; **резидент <= 100 байт, если вкурить mcb
  74. ;
  75. ; ***резидент считает прерывания - сядет на обработчик клавы и считает, сколько нажали на клаву / либо развернуть часы на экран и секундомер
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement