Антонов. Функциональное сравнение исполняемых файлов
Скачать 76.5 Kb.
|
h(z) ≡ −z log2 z, Ai — i-ая API функция, Pc — число объектов класса c в выборке, из них pc объектов содержат Ai функцию, p = p1 + · · · + pM, l — общее количество объектов. Кроме информативности каждой API функции стоит также учитывать зависимость между появлением API функций. Действительно, существует ряд функций, встречающихся в комбинации с другими: например, «CreateFile» и «CloseFile». К этой категории стоит также относить функции инициализации приложения, вставляемых компилятором. Вес каждой функции из группы должен быть уменьшен пропорционально размеру группы. Для поиска зависимых функций возможно использовать следующий алгоритм: определить зависимость для каждой пары API функций, как отношение количества классов в которых встречаются обе функции к количеству классов, в которых встречается одна из функций. Далее для каждой API функции просуммировать зависимости с другими функциями: , где Ai, Aj — i и j API функции, Ci, Cj — классы в которых встречаются функции Ai, Aj соответственно. Расстояние между файлами может быть определено с учетом количества вызовов API функций следующим образом:
где сi1, сi2 – количество вызовов API функции Ai с весом vi, при выполнении первого и второго файла соответственно, vi рассчитывается исходя из выражения: . Отдельную сложность составляет получение обучающей выборки для настройки весов API функций. Для этого, например, можно использовать метки антивирусных продуктов для вредоносных объектов. |