Требуется написать программу, которая умеет делать следующие функции:
1. Поиск в бинарнике байта(двух-трех-четырех), сохранение результатов (оффсетов где найдена указанная последовательность байт)
2. Повторный поиск другой заданной последовательности, сохранение результатов (оффсетов)
3. Еще повторный поиск других байт (и так много раз)
ЗАТЕМ:
4. Анализ результатов: поиск близких оффсетов для разных найденых байтов. Степень близости задается
Пример:
1. в cg1 ищеи паттерну1 "1234", находим 5 оффсетов
00001
00023
00201
1222А
ЕА100
2. в том же сг1 ищем паттерну2 "1000", находим 3 оффсета
00028
00103
00601
3. Анализ, где эти паттерны близко (+-10h байт)дает результат
паттерна1 00023
паттерна2 00028
3. Анализ, где эти паттерны близко (+-100h байт) дает результат
паттерна1 00023
паттерна2 00028
паттерна1 00201
паттерна2 00103
Зачем это надо: это надо мне для развития и портирования патчей
Что за это будет: плюсы
Алгоритм работы программы может быть иной, главное идея - найти место в бинарнике, где поблизости расположены все заданные паттерны. степень близости и паттерны водятся пользователем.
Хотя имхо проще сначала найти все оффсеты чтоб потом иметь возможность их неоднократного анализа с разной степенью близости и разными начальными условиями (искать где рядом паттерна1 и паттерна 3 без учета паттерны 2 например)
1. Поиск в бинарнике байта(двух-трех-четырех), сохранение результатов (оффсетов где найдена указанная последовательность байт)
2. Повторный поиск другой заданной последовательности, сохранение результатов (оффсетов)
3. Еще повторный поиск других байт (и так много раз)
ЗАТЕМ:
4. Анализ результатов: поиск близких оффсетов для разных найденых байтов. Степень близости задается
Пример:
1. в cg1 ищеи паттерну1 "1234", находим 5 оффсетов
00001
00023
00201
1222А
ЕА100
2. в том же сг1 ищем паттерну2 "1000", находим 3 оффсета
00028
00103
00601
3. Анализ, где эти паттерны близко (+-10h байт)дает результат
паттерна1 00023
паттерна2 00028
3. Анализ, где эти паттерны близко (+-100h байт) дает результат
паттерна1 00023
паттерна2 00028
паттерна1 00201
паттерна2 00103
Зачем это надо: это надо мне для развития и портирования патчей
Что за это будет: плюсы
Алгоритм работы программы может быть иной, главное идея - найти место в бинарнике, где поблизости расположены все заданные паттерны. степень близости и паттерны водятся пользователем.
Хотя имхо проще сначала найти все оффсеты чтоб потом иметь возможность их неоднократного анализа с разной степенью близости и разными начальными условиями (искать где рядом паттерна1 и паттерна 3 без учета паттерны 2 например)