Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Не работает поиск сигнатуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему выдает ошибку в строке "for(Data::iterator p=stats.begin(); p!=stats.end(); ++p)" http://www.cyberforum.ru/cpp-beginners/thread520457.html
"Read a sequence of possibly whitespaceseparated (name,value) pairs, where the name is a single whitespaceseparated word and the value is an integer or a floatingpoint value. Compute and print the...
C++ Можете скомпилировать и сказать работает ли? Не хочу качать компилятор для 4-5 заданий, точнее занимали бы они меньше места как, например, Dev-CPP для С. Можете скомпилировать данный код и сказать работает он вообще или нет? Если нет то какие... http://www.cyberforum.ru/cpp-beginners/thread520443.html
Написать программу удаления букв «б» из введенного слова C++
Написать программу удаления букв «б» из введенного слова
C++ Найти наибольшую клику в заданном орграфе, используя алгоритм нахождения независимых множеств
Клика – полный подграф неориентированного графа. Другими словами, клика графа есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это...
C++ не компилируется http://www.cyberforum.ru/cpp-beginners/thread520424.html
Вот кусок кода class Game; class View { private: static int left;
C++ Компилятор выдает ошибку при объявлении массива. Не могу понять где соль Объясните пожалуйста в чем моя ошибка. Вот исходник #include <iostream> // cin, cout,endl #include <math.h> // Мат функции #include <iomanip> // формат вывода using namespace std; const int... подробнее

Показать сообщение отдельно
Битл
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 65
18.03.2012, 22:59  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
Искать сигнатуру, значения которой меняются динамически- ни разу эти мне занимался, но задача достойная.
Такое часто встречается при изменении кода игр... Т.е. есть участки сигнатуры с постоянными значениями, а некоторые байты могут изменяться... В таких случаях нужно использовать маску....

алг
Есть паттерн (строчка байт, которую нужно найти), маска (строчка байт вида "000xxx00xxx00xxx"), длина этой маски.

Берёшь адрес начала сканирования - StartAddress.
Адрес конца сканирования - EndAddress.

Читаешь кусочек памяти (через ReadProcessMemory, как я понимаю) длиной в паттерн, сравниваешь побайтно прочитанное с паттерном, наложив на него маску - т.е. в моём примере 0 - нужный байт, x - любой.
Как только нашёлся кусок данных, равный паттерну (с наложенной маской) - возвращаешь адрес сканирования, это и будет нужный адрес.

Паттерн: \x89\xBE\x0A\x02\x00\x00\xE9\x87\x00\x00\x00\x83\xE8\x00\x74\x12
Маска: "xxx0000x0000xxxx"
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru