|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|||||||||||||||||||||
Резидентная программа: по комбинации Ctrl+alt+e показывает на экране фамилию с интервалом в 4 секунды30.04.2015, 22:31. Показов 2044. Ответов 16
Метки нет (Все метки)
Задание:
Написать резидентную программу, которая по комбинации Ctrl+alt+e показывает на экране фамилию с интервалом в 4 секунды. Все работает, но если сначала запустить (rez.com), потом открыть td.exe, в нем Dos SHell , оттуда удалить (rez.com off) после чего закрыть tdшник (alt+x) и снова попытаться выгрузить (rez.com off) то крошится ддос там проверки кое какие есть, но видимо не все компил:
0
|
|||||||||||||||||||||
| 30.04.2015, 22:31 | |
|
Ответы с готовыми решениями:
16
Резидентная программа, отлавливающая нажатие alt-ctrl-del и блокирующая рабочую станцию до ввода пароля. Резидентная программа: по нажатию сочетания ctrl+S - создать файл, по ctrl+X - выгрузиться из памяти
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||
| 01.05.2015, 13:50 | ||||
Сообщение было отмечено tezaurismosis как решение
РешениеТы запускаешь свою программу. При этом некий вектор равен X0. Ты его перехватываешь и заменяешь на X1, который цепочится с X0. Запускается TD и перехватывает и заменяет тот-же вектор, делая его X2, который цепочится с X1. Из под TD ты запускаешь свою программу на выгрузку и она восстанавливает X0. Ты завершаешь TD, который восстанавливает X1, который теперь указывает туда где твоей программы уже нет. Добавлено через 2 минуты Мораль - нельзя восстанавливать прерывание из под программы, которая сама его восстанавливает. Добавлено через 2 минуты DEBUG.EXE вроде бы ничего кроме 3-го и 1-го векторов не перехватывает. Добавлено через 7 минут Проверил только-что. TD вектор прерывание 1Ch не трогает, а вот вектора 9 и 2Fh перехватывает. Из-за последних у тебя и крашится. Добавлено через 10 минут Ах, да, предыдущие рассуждения не годятся. У тебя там проверка на дальнейшую неперехваченность векторов есть. Добавлено через 11 минут Как бы даже теоретически после этого память программы может использоваться уже как угодно, а тебе еще хвостик обработчика прерывания надо довыполнить в памяти, которая уже объявлена свободной. Добавлено через 3 минуты И еще вопрос, ответа на который я пока не знаю. Можно из обработчика прерывания 2Fh вызывать ДОС по Int 21h ? Из обработчиков аппаратных прерываний ясен пень нельзя. А вот из обработчика 2Fh ? Добавлено через 3 минуты
1
|
||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 01.05.2015, 14:07 | |
|
Fakeoke
Вам все озвучил Ethereal, Debug'ер ставит обработчики, и он не занимается контролем повторной входимости прерываний, т.к. считает, что он один в системе, поэтому , вешайте свои обработчики на другие прерывания, или сами занимайтесь контролем. Но это уже тема борьбы вредоноса с антивредом. Удачи!
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 01.05.2015, 14:10 | ||
|
Когда я выхожу из TD и запускаю rez off, то программа удаляется и внешних проявлений краша не видно.
0
|
||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 01.05.2015, 14:20 | |
|
Ethereal
Это могло быть до Win95, там "среда" была 16-ти разрядная, сейчас Вам облочка эммулятора, просто не позволит 32-х битное приложение в 16-ти битной "среде" и Вы поймаете что-то вроде "Это не те дроиды , которые Вы хотели, они в другом месте танцуют"(пардон, шутка, по мотивам "Ученика чародея").
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 01.05.2015, 14:31 | |
|
У меня дома есть отдельный компьютер (у меня дома вообще 4 компьютера рабочих) с Win98 на котором можно выбрать и загрузку MS-DOS. А проверял я в Win-XP-32 из под FAR потому как переползать за упомянутый комп ради этого лень.
@FakeOff Я бы выгружал резидент из памяти так. Окружение освободил бы еще до постанова в резидент. При постанове оставлял бы код в памяти только по метку init. При выгрузке вектора прерываний читал бы и восстанавливал напрямую обращаясь к памяти (без Int 21h) и не забывая перед их модификацией cli и после sti. Код из памяти выгрузил бы напрямую манипулируя цепочками блоков памяти (опять без Int 21h) и перед их модификацией не забыв сделать cli, чтобы снова разрешить прерывания уже навсегда выходя из своего кода по iret. По крайней мере это было бы точно не крашабельно.
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 01.05.2015, 14:51 | ||
1
|
||
|
Клюг
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||
| 02.05.2015, 14:15 | ||
|
0
|
||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 02.05.2015, 15:38 | |
|
Можно и не использовать Int 15h. Можно перехватить Int 16h, в обработчике вызвать старый обработчик pushf call far и после возврата из него проверить в AL код симовола E, если да, то еще проверить состояние нажатых Ctrl-Alt в 0:417h и выставить флажок, если нажаты и в любом случае выйти по iret. А функция 4Fh прерывания Int 15h, ну в ранних BIOS-ах не было такой функции. Когда-то писали корректно и без нее.
0
|
|
|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|
| 02.05.2015, 19:56 [ТС] | |
|
ох е, столько всего написано...
давайте лучше мне строчками кода что и куда пихнуть, сам не допру, боюсь
0
|
|
|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|
| 12.05.2015, 15:44 [ТС] | |
|
ВВЕРХ
что куда вставить, подскажите
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 12.05.2015, 16:10 | |
|
Поручик Ржевский, молчать !
0
|
|
|
Клюг
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||
| 12.05.2015, 16:12 | ||
В ранних - это в каких же? Ковырнул архивы - первая попытка перехвата int 15h/4Fh относится к августу 1988.
0
|
||
|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|
| 12.05.2015, 20:34 [ТС] | |
|
Ребята, может по делу лучше?
0
|
|
|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|
| 12.05.2015, 20:53 [ТС] | |
|
вообщем я не знаю в чем там была беда, но я взял другую папку с tasm, td итд
там все заработало... теперь вопрос.. как так? и может все-таки как-то заставить работать это? п.с. с нерабочим тдшником архив прилагаю
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 13.05.2015, 00:51 | |||
Сообщение было отмечено Fakeoke как решение
РешениеДобавлено через 2 часа 4 минуты Ты запустил резиденту и она встала. Отлично. Вектор прерывания 2Fh указывает на твою программу. Запустил TD. При этом TD перехватил прерывание 2Fh и запомнил его старое значение. Отлично. Из под TD выгрузил свою резиденту. Завершил TD. При завершении TD восстановил вектор прерывания 2Fh таким, каким он был в момент его запуска. Т.е таким, который указывал на твою программу. Которой в памяти уже нет потому-что она выгружена. Т.е вектор прерывания 2Fh теперь указывает пальцем в небо. Теперь ты исполняешь rez off, при этом твоя программа исполняет int 2Fh, который указывает пальцем в небо и все крашится. Вся фишка в том, что ты говоришь, что из под TD свою резиденту выгрузил. А это ненормально. Твоя программа должна была обнаружить, что вектора прерываний перехвачены после нее и не дать себя выгрузить, а не обнаружила. Ну так найди почему. У меня твоя программа обнаружила, а у тебя нет. Когда я попробовал проделать то-же самое, то твоя программа выгрузить себя из под TD не дала. А у тебя дала. Весь вопрос почему ? Может все дело в .tr файле, который если он есть, не только загружает программу, но и восстанавливает для нее некий контекст. Ибо это Turbo debugger restart файл. Какой контекст ? А TD его знает. Факт, что у меня этого файла не было. А у тебя был. И неизвестно какую хрень содержал. Добавлено через 32 минуты ------------------------------------------------------------ Ни фига все не так. У тебя TD 2.51, а у меня TD 5.0 и твой прерывания 2Fh не перехватывает. В отличие от моего. Поэтому у тебя резидента из под TD выгружалась, а у меня нет. Добавлено через 7 минут Значения векторов прерывания, кстати можно смотреть по debug d0:0 d q Что я буду и делать. 1.) Запускаю COMMAND Смотрю по debug вектор 2Fh : 50 09 09 D7 2.) Запускаю rez1. Она встала в резидент Смотрю по debug вектор 2Fh : BB 01 DD 06 3.) Запускаю TD 2.51 Из TD смотрю вектор 2Fh : BB 01 DD 06 4.) Из TD запускаю DOS Shell Смотрю по debug вектор 2Fh : BB 01 DD 06 5.) Запускаю rez1 off Она говорит, что выгрузилась Смотрю по debug вектор 2Fh : 50 09 09 D7 6.) Выхожу из DOS Shell обратно в TD Из TD смотрю вектор 2Fh : BB 01 DD 06 Все ясно. Гризда не за горами. 7.) Выхожу из TD Запускаю debug, чтобы посмотре... Все стоит колом Все ясно ?
1
|
|||
|
524 / 400 / 213
Регистрация: 28.07.2011
Сообщений: 2,219
|
|
| 13.05.2015, 13:19 [ТС] | |
|
проблема была в дебаггере, тему можно закрывать
0
|
|
| 13.05.2015, 13:19 | |
|
Помогаю со студенческими работами здесь
17
Заблокировать/откл. клавы включая комбинации(ALT+.. , Shift+... , Win+..., Ctrl+ ... ) Нужно сделать программу для выполнения комбинации клавиш Ctrl + Shift + Alt + End Окно безопасного входа в систему Windows XP (требующего нажать Ctrl-Alt-Del) зависает при нажатии Ctrl-Alt-Del Как обработать нажатие комбинации клавиш: CTRL + ПКМ, ALT + ПКМ ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|