Может поделить файл, для которого создается сигнатура, на кусочки, скажем, по 1 Кб, и брать несколько таких кусочков - начало [intro], середина [mid], конец [end]. Сохранить 3 этих кусочка и полную сигнатуру.
А потом искать во всех остальных файлах данные из 3 кусков через InStrB. Находишь и проверяешь - в каком месте. Место примерно совпало - файл с подозрением на совпадение. Сверяешь с полной сигнатурой. Сошлось - увы, вирус или похожей направленности прога. Нет - значит нет.