Фаззинг виртуальной памяти

Discussion in 'Реверсинг' started by IgAlex, 29 Dec 2009.

  1. IgAlex

    IgAlex Member

    Joined:
    17 Nov 2008
    Messages:
    36
    Likes Received:
    27
    Reputations:
    8
    Собственно пост касается методики фаззинга виртуальной памяти процесса в целях поиска багов.
    После прочтения очередного издания по фаззингу ("Fuzzing: Brute Force Vulnerability Discovery") заинтересовала одна интересная мысль авторов, касающаяся поиска багов методом фаззинга виртуальной памяти процесса. Целесообразно использовать методу в том случае, если формат файла/протокола закрыт от внешних глаз (например, данные запакованы/зашифрованы своим извращенным методом) и реинженеринг кода распаковки/расшифрования данных занимает слишком много "трудочасов". В добавок авторы представили пример (на мой взгляд смешной до нельзя) и сказали, что метода работает, хотя и не претендует на универсальность. Я попробовал воспользоваться представленной методой, но столкнулся с одним "НО": зачастую простое зацикливание метода парсинга распакованных данных приводит к ошибкам, поскольку функции парсинга данных завязаны на кучу агрументов, являющихся ссылками на память и прочее. Если дополнительно использовать метод слепков виртуальной памяти, то производительность процесса снижается в разы. Если на форуме есть люди, использовавшие данную методу, расскажите о нюансах выбора точек для MLI и создания слепков страниц вирт памяти. И вообще целесообразно ли использовать метод при исследовании "больших" приложений?