проблема с отловом WinAPI-вызовов

Тема в разделе "WASM.SOFTWARE", создана пользователем Demonolog, 10 сен 2009.

  1. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    здравствуйте. я пишу кандидатскую, ее цель - найти способ предупреждать пользователя о том, что следующее его действие приведет к ошибке. понятия "действие" и "ошибка" пока не определены, я только начинаю этим заниматься, но скорее всего и "действие" и "ошибку" я определю как некую последовательность winAPI-вызовов. пока я решил посмотреть вручную (в смысле не писать программ и не придумывать формул), какие последовательности соответствуют определенной деятельности юзера. для этого провожу такой эксперимент: открываю dll-ку с помощью mspaint'а. понятное дело, paint выдает сообщение об ошибке. winAPI-вызовы отлавливаю kerberos'ом и пишу в лог. эксперимент я проводил в двух вариантах:
    1. открывал dll-ку из диалога "открыть файл" paint'а
    2. драг энд дроп dll-ки в окно paint'а
    в итоге я хотел сравнить несколько логов, соответствующих обоим вариантам, и посмотреть, есть ли в них одинаковые или почти одинаковые последовательности.
    но случилась такая странность. в первом случае в логе появляются функции для работы с файловой системой (всякие GetDriveType, FindFirst), а вот во втором - не появляются. причем, если во втором случае вызовы отлавливать не kerberos'ом, а apiMonitor'ом, то все нормально - функции файловой системы в логе появляются. в чем может быть дело? очень надеюсь на вашу помощь.
     
  2. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    забыл сказать, в файле ke_spy.txt есть все функции, которые во втором варианте эксперимента не отлавливаются.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Demonolog
    Вам товарищ архитектуру изучать нужно, интел описала всё касающееся ошибок/сепшенов.
     
  4. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    Clerk
    благодарю за совет. а на какой вопрос вы отвечали? чем мне поможет описания интела, касающееся ошибок и эксепшинов?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Demonolog
    Узнаете что это такое.
     
  6. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    Clerk
    хм, да, пожалуй такая информация пригодится. какую-нибудь литературу посоветуете?
    но все же главная задача передо мной сейчас другая - я описал в начале проблему. на этот счет можете что-нибудь подсказать?
     
  7. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    Clerk
    кстати говоря, вот вы пишете, что я узнаю и что такое "действие", и что такое "ошибка". но говорите только о литературе про ошибки/эксепшины. я собирался "действия" определить именно как последовательности winApi-вызовов, а с ошибками пока не решил (спасибо за подсказку). но, если я правильно вас понял, вы говорите, что уже существуют какие-то полезные мне определения "действиям"?
     
  8. bendme

    bendme New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    179
    Только мне всё это кажется бредом?
     
  9. trash_master

    trash_master New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2006
    Сообщения:
    319
    Адрес:
    Україна
    бред оно и есть .. просто клерги сбил с дороги бедного страждущего.ему бы дельного ктобы чего посоветовал =|
     
  10. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Так это кандидатская же. Вообще говоря – далеко не самая бредовая. Лол.

    Demonolog
    Какое-то из приложений – лжёт. Один может взять третьего шпиона и сравнить ответы.
    Код (Text):
    1. cmd> windbg mspaint
    2. wdb> !logexts.logc                 ; лист категорий апи
    3. wdb> !logexts.logc e # # #         ; номера категорий для логирования (* – все категории (но будет лагать))
    4. wdb> !logexts.loge                 ; включить лог
    5. wdb> g
    6. msp> действие, действие, ошибка, close
    7. cmd> logviewer mspaint.exe.lgv
    ^ Комплект с windbg можно взять с microsoft.com ("Debugging Tools for Windows").
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    вообще-то невозможно со стопроцентной вероятностью определить следующее действие пользователя. сталобыть и сказать, что оно будет ошибочно - тоже нельзя. можно проследить потенциально ошибочые цепочки вызовов, но таких цепочек, думаю, практическе бесконечно много. да и если вы хотите всеже предупреждать о возможности возникновенийа подобных последовательностей, то это будет по сути чтото типа эвристической проактивке (сильно не пинать за корявое определение). и это будет довольно малоинформативно.. представте себе, пользователю выведецо сообщение "ахтунг, возможна!!!(но не 100% вероятна) ацкайа последовательность функций: FirstShittyFunctionA->FirstShittyFunctionW->NtShittyFirstFunction. Да/Нет/Отмена"
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Demonolog
    Виндоз это только частный случай. Невозможно заранее определить возникнет ошибка или нет. Апи это чёрный ящих, которого поведение в нормальных условиях определено. Если даже ошибка не возникнет при вызове сервиса/апи, то многопоточный вызов может привести к ошибке. Не вижу смысла даже рассуждать о вероятности возникновения ошибок. Критические ошибки скрываются в не верной реализации в условиях многопоточности и асинхронном обращении к данным. Так как в юзере потоки вытесняются в любой момент времени и этим управлять нельзя, то и синхронизация нарушается. Если к примеру апи получает на вход указатель на данные. Тред проверяет указатель и два раза обращается к этим данным без необходимой синхронизации(захват памяти, атомарное копирование и тп.) это можно назвать багом/уязвимостью и потенциальная причина ошибок, ведь после начальной проверки валидности состояние памяти не определено и этим нельзя управлять или хоть както контролировать.
    Подобное может и имеет смысл для простых прошивок, которые пики исполняют, но для столь сложных систем как ос это не применимо.
     
  13. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    Sol_Ksacap
    спасибо! попробую windbg. если он умеет писать в лог время вызова функции или к нему можно писать плагины как к kerberos'у, то возможно, на нем и остановлюсь.

    Freeman
    да, да! в этом как раз и цель моей работы - научиться выслеживать подобные цепочки. знаю, что со стопроцентной вероятностью не получиться ни распознавать цепочки, ни утверждать, что та или иная приведет к ошибке. научрук тоже об этом знает - сказал, что 100% распознавания и не ожидал. он сказал, что в разрабатываемой тулзе должен быть выбор политик - типа условно "предупреждать всегда, при любой вероятность", "предупреждать при вероятности более 50%" и так далее...

    Clerk
    да, там действительно много подводных камней. я тоже думал насчет многопоточности, хотя я не разбираюсь в ней так глубоко, как вы... пока не знаю, как все эти проблемы решать. иду как бы от малого, потихоньку.
     
  14. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Demonolog, взяли бы поменяли тему на какуюто более практичную :) ведь потом самому будет жаль времени, потраченного на разработку, написание практически не применимой нигде проги.. или я чегото не понимаю?

    а по теме - копайте в сторону АВ :) они подобную работу делоют.
     
  15. Demonolog

    Demonolog New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    7
    Freeman, я тоже считаю, что прога довольно бесполезна и достижение самой цели работы меня интересует не особенно. зато процесс исследования более-менее интересен. менять тему есть смысл на ту, которая мне нравится, потому что кандидатская степень как таковая мне не нужна, а откос от армии и так есть. была одна идея - усовершенствовать поисковики, но во-первых, этой штукой я скорей всего и без аспирантуры однажды займусь, во-вторых, я уже предлагал ее научруку, он считает, что идея очень сырая и с ним трудно не согласиться. в-третьих, даже если я потрачу время и более четко сформулирую идею, не факт, что она потянет на кандидатскую. этих ученых мужей интересует новизна метода, а меня скорее практическая польза.
    а кто такие АВ?
     
  16. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    да, само исследование - интересная вещь. а алго можно сделоть с зачатками ИИ, тобешь построеть ту же НС...
    АВ - антивирусы