ntcn Признанный телефонист С нами с: 15.11.2002 Плодовитость: 228
Рейтинг
Подано 67 (64/3) голосов
|
Флаги команды OPEN
|
цитата: Nick0las пишет: Какие есть идеи насчет экспериментов?
посмотреть куски кода вокруг вызова _open, _read и т.п. в filesystem_proc на предмет функций нужных.. почти везде синтаксис "заполняем регистры, вызываем функцию, джампимся на выход из filesystem_proc". Например, блок с 0DA8492 по 0DA84FA, начало такое же как у 0DA8446 - т.е., похоже, берется название файла и проверяется (через 0FF40C0, которой через r13:r12 передается указатель и которая в r4 возвращает длину строки по указателю) что длина названия не больше 7Fh, а вот дальше вызывается sub_DA5B40 которая подряд делает open, fstat, read, lseek, close. Т.е. функция явно открывает файл, берет о нем информацию типа времени создания, читает что-то из него, lseek, возможно, для определения сколько от прочитанного до конца файла и закрывает файл.. но вот зачем функция это делает ? в идеале - повесить свои обработчики на все блоки в filesystem_proc (блоки, похожие на _open и т.п.), в обработчиках вызывать оригинальную функцию для блока, но и писать в свободную RAM информацию о том во сколько вызвали какую функцию и получить картину что происходит при открытии файла или, например, какой блок вызовется при удалении файла.. Хотя можно сделать проще - вешаем обработчик на 0DA8398, там проверяется какая из 35 функций должна быть вызвана и, на основе таблицы перехода с первым элементом по адресу 82BC52, выполняется переход на нужный блок в зависимости от значения r6.. Например, функция блок "open" соответствует порядковому номеру (в r6, 0DA83A8) "1", блоку "read" - "3", т.е. можно просто в буфер писать подряд значения r6 и смотреть какие блоки вызвались при выполнении определенных действий.. это к вопросу "предложения для эксперимента"
Кстати, по адресу 082BB96h и 082BCD2h какие-то неизвестно зачем запихнутые, но известные строчки находятся |
____________________________
с 28.10.2005 на неопределённый срок забросил патчи, если что - на ЛС пока отвечаю.. |
|