iteg
|
Posted: Wed Sep 13, 2023 15:16 Post subject: |
|
|
Алгоритм PES делает нечеткий поиск. Проценты это количество совпавших байтов деленное на количество известных байтов в сигнатуре. Если сигнатура полностью совпала, то проценты не выводятся и алгоритм завершается. Иначе алгоритм пробегается по всем сигнатурам и в конце выводит сигнатуру с наибольшим процентом совпадений, которое должно быть больше 80%.
153 / 159 * 100 = 96%
Алгоритм PEiD ищет 100% совпадение.
Как ранее писал PES и PEiD делают поиск только с начала EP.
Для проверки сигнатуры необходимо:
1) Узнать EP в файле (Entry Point Raw Offset) на вкладке Info.
2) В шестнадцатеричном редакторе перейти до данному смещению и проверять сигнатуру. Некоторые редакторы позволяют делать поиск Hex-паттерна с подстановочными символами.
3) Для PES символы "::" и для PEiD "??" означают произвольное значение байта.
Для LockHunter64.RUS:
PES нашел неточное совпадение "MEW 11 SE v1.2 (96%)". Сигнатура "Morphine v1.2 (DLL)" из Signs.txt не подошла (длиннее), т.к. отличается от одноименной в UserDB.txt
Для "Morphine v1.2 (DLL)" разные сигнатуры в базах Signs.txt (1шт.) и UserDB.txt (2шт.)
PEiD нашел точное соответствие.
Интересно то, что сигнатура "MEW 11 SE v1.2" не должна подходить, т.к. если посмотреть на нее, то первым байтом идет E9, а первый байт в файле с EP (0x00000400) идет 55. Но из-за неточного поиска (шумы) получаем 153 (совпало) / 159 = 96%.
Для MediaDB.dll:
Проблема, когда сигнатуры дают положительный результат поиска, но играет роль расположения сигнатуры в базе.
PE Shiffer
Borland Delphi 3.0 (???) - Signs.txt, 24 строка.
Armadillo v4.x - Signs.txt, 291 строка.
PEiD
Armadillo v4.x - UserDB.txt, 1973 строка.
Borland Delphi 3.0 (???) - UserDB.txt, 2417 строка.
Поиск по сигнатурам дает коллизии.
Стоит ли выводить номер найденной сигнатуры, а также соотношение совпавших байт к количеству явных байт? |
|