здравствуйте. я пишу кандидатскую, ее цель - найти способ предупреждать пользователя о том, что следующее его действие приведет к ошибке. понятия "действие" и "ошибка" пока не определены, я только начинаю этим заниматься, но скорее всего и "действие" и "ошибку" я определю как некую последовательность winAPI-вызовов. пока я решил посмотреть вручную (в смысле не писать программ и не придумывать формул), какие последовательности соответствуют определенной деятельности юзера. для этого провожу такой эксперимент: открываю dll-ку с помощью mspaint'а. понятное дело, paint выдает сообщение об ошибке. winAPI-вызовы отлавливаю kerberos'ом и пишу в лог. эксперимент я проводил в двух вариантах: 1. открывал dll-ку из диалога "открыть файл" paint'а 2. драг энд дроп dll-ки в окно paint'а в итоге я хотел сравнить несколько логов, соответствующих обоим вариантам, и посмотреть, есть ли в них одинаковые или почти одинаковые последовательности. но случилась такая странность. в первом случае в логе появляются функции для работы с файловой системой (всякие GetDriveType, FindFirst), а вот во втором - не появляются. причем, если во втором случае вызовы отлавливать не kerberos'ом, а apiMonitor'ом, то все нормально - функции файловой системы в логе появляются. в чем может быть дело? очень надеюсь на вашу помощь.
забыл сказать, в файле ke_spy.txt есть все функции, которые во втором варианте эксперимента не отлавливаются.
Clerk благодарю за совет. а на какой вопрос вы отвечали? чем мне поможет описания интела, касающееся ошибок и эксепшинов?
Clerk хм, да, пожалуй такая информация пригодится. какую-нибудь литературу посоветуете? но все же главная задача передо мной сейчас другая - я описал в начале проблему. на этот счет можете что-нибудь подсказать?
Clerk кстати говоря, вот вы пишете, что я узнаю и что такое "действие", и что такое "ошибка". но говорите только о литературе про ошибки/эксепшины. я собирался "действия" определить именно как последовательности winApi-вызовов, а с ошибками пока не решил (спасибо за подсказку). но, если я правильно вас понял, вы говорите, что уже существуют какие-то полезные мне определения "действиям"?
бред оно и есть .. просто клерги сбил с дороги бедного страждущего.ему бы дельного ктобы чего посоветовал =|
Так это кандидатская же. Вообще говоря – далеко не самая бредовая. Лол. Demonolog Какое-то из приложений – лжёт. Один может взять третьего шпиона и сравнить ответы. Код (Text): cmd> windbg mspaint wdb> !logexts.logc ; лист категорий апи wdb> !logexts.logc e # # # ; номера категорий для логирования (* – все категории (но будет лагать)) wdb> !logexts.loge ; включить лог wdb> g msp> действие, действие, ошибка, close cmd> logviewer mspaint.exe.lgv ^ Комплект с windbg можно взять с microsoft.com ("Debugging Tools for Windows").
вообще-то невозможно со стопроцентной вероятностью определить следующее действие пользователя. сталобыть и сказать, что оно будет ошибочно - тоже нельзя. можно проследить потенциально ошибочые цепочки вызовов, но таких цепочек, думаю, практическе бесконечно много. да и если вы хотите всеже предупреждать о возможности возникновенийа подобных последовательностей, то это будет по сути чтото типа эвристической проактивке (сильно не пинать за корявое определение). и это будет довольно малоинформативно.. представте себе, пользователю выведецо сообщение "ахтунг, возможна!!!(но не 100% вероятна) ацкайа последовательность функций: FirstShittyFunctionA->FirstShittyFunctionW->NtShittyFirstFunction. Да/Нет/Отмена"
Demonolog Виндоз это только частный случай. Невозможно заранее определить возникнет ошибка или нет. Апи это чёрный ящих, которого поведение в нормальных условиях определено. Если даже ошибка не возникнет при вызове сервиса/апи, то многопоточный вызов может привести к ошибке. Не вижу смысла даже рассуждать о вероятности возникновения ошибок. Критические ошибки скрываются в не верной реализации в условиях многопоточности и асинхронном обращении к данным. Так как в юзере потоки вытесняются в любой момент времени и этим управлять нельзя, то и синхронизация нарушается. Если к примеру апи получает на вход указатель на данные. Тред проверяет указатель и два раза обращается к этим данным без необходимой синхронизации(захват памяти, атомарное копирование и тп.) это можно назвать багом/уязвимостью и потенциальная причина ошибок, ведь после начальной проверки валидности состояние памяти не определено и этим нельзя управлять или хоть както контролировать. Подобное может и имеет смысл для простых прошивок, которые пики исполняют, но для столь сложных систем как ос это не применимо.
Sol_Ksacap спасибо! попробую windbg. если он умеет писать в лог время вызова функции или к нему можно писать плагины как к kerberos'у, то возможно, на нем и остановлюсь. Freeman да, да! в этом как раз и цель моей работы - научиться выслеживать подобные цепочки. знаю, что со стопроцентной вероятностью не получиться ни распознавать цепочки, ни утверждать, что та или иная приведет к ошибке. научрук тоже об этом знает - сказал, что 100% распознавания и не ожидал. он сказал, что в разрабатываемой тулзе должен быть выбор политик - типа условно "предупреждать всегда, при любой вероятность", "предупреждать при вероятности более 50%" и так далее... Clerk да, там действительно много подводных камней. я тоже думал насчет многопоточности, хотя я не разбираюсь в ней так глубоко, как вы... пока не знаю, как все эти проблемы решать. иду как бы от малого, потихоньку.
Demonolog, взяли бы поменяли тему на какуюто более практичную ведь потом самому будет жаль времени, потраченного на разработку, написание практически не применимой нигде проги.. или я чегото не понимаю? а по теме - копайте в сторону АВ они подобную работу делоют.
Freeman, я тоже считаю, что прога довольно бесполезна и достижение самой цели работы меня интересует не особенно. зато процесс исследования более-менее интересен. менять тему есть смысл на ту, которая мне нравится, потому что кандидатская степень как таковая мне не нужна, а откос от армии и так есть. была одна идея - усовершенствовать поисковики, но во-первых, этой штукой я скорей всего и без аспирантуры однажды займусь, во-вторых, я уже предлагал ее научруку, он считает, что идея очень сырая и с ним трудно не согласиться. в-третьих, даже если я потрачу время и более четко сформулирую идею, не факт, что она потянет на кандидатскую. этих ученых мужей интересует новизна метода, а меня скорее практическая польза. а кто такие АВ?
да, само исследование - интересная вещь. а алго можно сделоть с зачатками ИИ, тобешь построеть ту же НС... АВ - антивирусы