Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Поиск и отсеивание данных в памяти.

Страниц (2): [1] 2 »
 

1. Arimor - 18 Декабря, 2020 - 05:03:54 - перейти к сообщению
Как искать значения в памяти и заменять, есть на форуме в видео инструкции. Но вот столкнулся с проблемой, что игра блокирует СЕ и АртМоней. А вот кибор, отлично ищет значения. Тема сложная и много чего не понятно. Может кто поделиться как вы отсеиваете значения которые нашли с помощью кибора?
2. Arimor - 21 Декабря, 2020 - 15:32:59 - перейти к сообщению
Как сравнить данные в переменной a с переменной b и удалить всё, что не совпало? И поместить в переменную c ?
3. Zireael - 21 Декабря, 2020 - 15:55:10 - перейти к сообщению
 Цитата:
Как сравнить данные в переменной a с переменной b и удалить всё, что не совпало?

Тип переменных и что в них записано?
4. Arimor - 21 Декабря, 2020 - 18:43:18 - перейти к сообщению
Я использую этот код с форума, чтоб найти нужные значения, они добавляются в блокнот

меняю данные тут codhex(1063675494, #poisk[0]);

CODE:
external(INT, "wsprintf", "wsprintfA", "User32.dll" );
win wind=window ("GemsofWar", "UnityWndClass", -1);

int prc=openprocess(wind);
int adr[1000];
char a[1024];

char poisk[4];
codhex(1063675494, #poisk[0]);

new char poiskmask[sizearray(poisk)];

for (int n=0; n<sizearray(poiskmask); n++)poiskmask[n]=1;

int count=findmemorymask (sizearray(adr), #poisk[0], sizearray(poisk), #adr[0], 0, #poiskmask[0], 100, prc);

//int count=findmemory (1000, #poisk[0], sizearray(poisk), #adr[0], 0, prc);//Ищем 8 байт ( числа 1032983058 одно за другим)


messagebox("Найдено адресов: "+format(count));

/*
char zz[1];
codhex(255, #zz[0]);
writememory(#zz[0], 1, adr[0], prc);
*/



if (fopen ("c:\5.txt", "w")!=0)
{
for(int i=0; i<count; i++)
{
wsprintf(address(#a[0]), "%x", adr[i]); // перевод в hex
//messagebox(format(i)+", "+format(adr[i])+", "+format(#a[0]));
fwrite(format(i)+", "+format(adr[i])+", "+format(#a[0]));
fwrite(ENDL);//записываем в файл перевод строки
}
fclose();//закрываем файл
}
start("c:\5.txt");
5. Zireael - 22 Декабря, 2020 - 00:27:55 - перейти к сообщению
 Цитата:
Я использую этот код с форума, чтоб найти нужные значения, они добавляются в блокнот

Как это соотносится с вопросом про сравнение переменных? Этот код найдёт адреса, тут нет переменных a и b.
findmemorymask для поиска числа не нужен, findmemory подойдёт. Часть адресов можно сразу отсеять, нужно только адреса кратные 4.
6. Arimor - 22 Декабря, 2020 - 03:19:15 - перейти к сообщению
 Zireael пишет:
Этот код найдёт адреса, тут нет переменных a и b.

я думал из текстового файла c:\5.txt поместить в переменную a , потом сделать ещё раз поиск, поместить данные в другу переменную b, сравнить и удалить всё что не совпало. Таким образом и делать отсев.
7. Zireael - 22 Декабря, 2020 - 04:03:34 - перейти к сообщению
Текстовый файл вообще не нужен. Надо сравнивать 2 массива. Делаем первый поиск, получили массив с адресами, что-то делаем в игре чтобы искомое значение изменилось, делаем второй поиск получили второй массив. Берем первый адрес из первого массива ищем его втором, если нашёлся оставляем, если нет удаляем. Удаления элементов и сдвиг остальных в кибор нет, так что просто пишем 0 вместо адреса. Берем второй адрес из первого массива, сравниваем и т. д. до последнего элемента. В итоге в первом массиве останутся 0 и адреса, которые были при первом и втором поиске.
Это не быстро так что без длл не вариант.
8. Arimor - 22 Декабря, 2020 - 05:40:16 - перейти к сообщению
 Zireael пишет:
Это не быстро так что без длл не вариант.

А разве текстовые файлы не быстрее сравнить?
9. Zireael - 22 Декабря, 2020 - 05:48:37 - перейти к сообщению
 Цитата:
А разве текстовые файлы не быстрее сравнить?

Нет. Сравнивать придётся точно также, брать первую строку искать её во втором файле и т. д.
10. Arimor - 22 Декабря, 2020 - 08:30:16 - перейти к сообщению
Zireael , на любом популярном языке программирования ддл пишется? Или лучше всё же на с++ делать?

Powered by ExBB FM 1.0 Final