Перейти на форум Кибор

Справочник по программированию Кибор

Переменные
Операторы
Функции
Указатель на окно
Управление окнами
Чтение запись в процессы
Работа с интернетом

Чтение запись в процессы

findmemorymask

Описание:

findmemorymask - поиск данных в памяти процесса по маске.

Синтаксис:

findmemorymask (-1, #poisk[0], 46, #adr[0], 0, #poiskmask[0], 100, prc);

Дополнительно:

Маска задается массивом char равным по размеру массива поиска. Значения массива маски могут принимать 0 или 1. В поиске учитываются только те элементы массива поиска, номера которых в массиве маски имеют значение 1.

Первый параметр - количество искомых адресов. при -1 искать все адреса.
Второй параметр - указатель на массив char в котором находятся искомые данные.
Третий - количество искомых байт.
Четвертый - указатель на массив приемник адресов.
Пятый - адрес старта поиска.
Шестой - указатель на массив char - маску.
Седьмой - процентное отношение (при котором можно считать поиск совпавшим. учитываются только байты учавствующие в поиске).
Восьмой - указатель на процесс.

Применяется для поиска участков памяти, некоторые байты которой могут иметь неизвестные значения. В этом случае для того что бы не учитывать их в поиске, в маске эти номера байт устанавливаются в 0. Остальные устанавливаются в 1.
Напимер ищем 100 байт данных. Из них 22 и 86 байты не известны. Для поиска настраиваем маску все в 1 кроме 22 и 86 номера массива. Их устанавливаем в 0.

Пример:

char a[70];
char poiskmask[70];
int n=0;
q: if (n<70)
{
poiskmask[n]=formatic(1);
n++;
goto q;
}
poiskmask[23]=formatic(0);

string poisk="Ищем байт со значением 5. Он может меняться.";//Ищем этот текст, но вместо 5 может быть другое значение
strcpy(#a[0], poisk);//Записываем string в массив char
int siz=size(#a[0]);//Узнаем количество байт в массиве
win w=window ("RF Online", "D3D Window", -1);//Указатель на окно игры
int prc=openprocess(w);
int adr[99999];
findmemorymask (-1, #a[0], siz, #adr[0], 0, #poiskmask[0], 100, prc);