Перейти к содержанию

C++ Smart AobScan


Antonshka

Рекомендуемые сообщения

Привет всем снова!

 

Что если сканировать и сравнивать память не по одному байту за раз, а по 4, или даже по 8? Даст ли это прирост скорости обработки?

Например, имеем сигнатуру вида - 50 89 ?? C8 E8 3D CB FD FF ?? 5D.

Далее, пусть функция, которая формирует маску и патерн, также определит, есть ли в сигнатуре непрерывная последовательность из 8, или если не 8, то хотя бы из 4 байт (то есть последовательность в которой не встречается ??).

Если нет такой последовательности, то пусть выполнится стандартная версия функции поиска сигнатуры, - побайтовая.

Если же есть такая последовательность, то пусть извлечется и сохраниться это 4 или 8 байтовое значение. Например C8 E8 3D CB.

А затем, пусть вторая версия функции поиска сигнатуры использует это 4 байтовое значение для сравнения. Пусть она считывает по 4 байта за раз, то есть число типа int, и сравнивает его. Если будет совпадение с ним, то пусть она занесет его адрес в например std::vector<int *>.

Допустим нашлось 20 совпадений. Пусть далее цикл пройдется по этим 20 указателям, и сравнит уже их побайтово, по длине маски.

 

Есть ли смысл пробовать реализовать такое, или нет? Чтобы зря не терять мне время.

 

 

Ссылка на комментарий
Поделиться на другие сайты

Похоже так не получится.

Поиск будет идти от начала EXE модуля, то есть от адреса который выравнен по 0 в конце, а искомое Int значение может не совпасть с этим выравниванием.

Нужно либо самому указывать в сигнатуре место начала Int значения, которое попадет под выравнивание 0, либо просто  не мается и сканировать побайтово.

Ссылка на комментарий
Поделиться на другие сайты

"Что если сканировать и сравнивать память не по одному байту за раз, а по 4, или даже по 8? Даст ли это прирост скорости обработки?"
Пробовал и стало ещё медленнее.

 

Вот написал сканер (в MSVC не работает).
https://github.com/gtvx/scanner-signatures/blob/master/scanner_signatures/scanner_signature_fast.c

 

На выбор есть 5 функций для сканирование, какая будет использована - зависит от конфигурации процесса.
primitive
sse
sse2
avx xmm
avx ymm

Ссылка на комментарий
Поделиться на другие сайты

В 15.10.2021 в 12:11, Hack сказал:

На выбор есть 5 функций для сканирование, какая будет использована - зависит от конфигурации процесса.

иии... % скорости какой на 100-500мб?

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.