![]() |
|
Модераторы: LSD |
![]()
|
|
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва |
OK, в целом понял -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Chingachguk |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва |
Ну я бы не назвал это "самым простым способом". Я бы просто подписал эмулятор такого чтения. Те резидент на int 13h (в принципе, его можно встроить в ломаемый экзешник) хватает это прерывание. Триггер такой: Если (Читаем_Дискету) и (Точка_Вызова(сегмент) in [Выше Дос, меньше 0A000h); Если записывается ОДИН сектор, то взводим флаг; Если читается ОДИН сектор, то эмулируем "дефект" - корректируем буфер по es:bx.
Есть много прикольных способов. Некоторые успешно работают против самых свежих отладчиков - таких, как Сайс. Например: ; Начало критичного кода mov ebx,esp mov esp,0 ; Критичный код, не использующий стек и ebx mov esp,ebx ; Конец критичного кода Зануляя стековый пойнтер, вводим в транс отладчик, который пытается работать на стеке приложения и не может ;) Эта фича срабатывает против очень многих ребят. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||
|
|||||
| Vit |
|
||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago |
А что с диском можно работать только через int13? А если используются другие пути? -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||
|
|||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва |
Ну так ты сам это написал. Я думаю, вопрос про то, что можно ли выяснить как ты работаешь с дискетой - это не вопрос ;) Далее. Какие пути есть еще (кроме int 13h, который, кстати, перестанет работать под nt) ? 1. int 25h/int 26h - досовые аналогичные функции, но они позволяют читать сектора активного раздела дос. Если сектор на дискете не из этого множества, то... Если да, то аналогично int 13h. 2. Вручную через порты контроллера. Я слышал много про такие проги, они все стали "не работать" под 98'ми, одну даже помогал править. Но не суть - речь о дос. Начиная с процов 386 в их есть так называемые аппаратные точки останова - DRx. Никто не помешает установить обработчик по доступу к порту ввода-вывода контроллера дискеты. Ничего не будет тормозить, ибо он будет активирован только на время со старта и до того момента, когда он сделает свое "черное дело". Есть и другой вариант, который будет работать и под 8086. Насколько я понимаю, в программе не была предусмотрена защита от трассировки ? ;) Тогда делаем вот что. Резидент сажаем уже на int 3 и включаем пошаговую трассировку, изучая команду за командой. Как только встречаем команды типа in/out, да еще в dx=адрес контроллера, то впадаем в глубокую неприязнь к их прямому назначению и подсовываем-таки опять то, что нужно ;) команды инициализации контроллера и чтения стандартизованы, так что проблем тута не будет. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 |
Гы, и все -------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |