Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 3.02 Работа с памятью процесса. Поиск, чтение, запись в память процесса игры

Страниц (24): В начало « ... 16 17 18 19 20 21 22 [23] 24 »
 

221. SOLNCE - 22 Апреля, 2021 - 17:50:40 - перейти к сообщению
 Zireael пишет:
 Цитата:
такую возможность можно добавить данной функции? очень бы помогла

Это поможет только в плане ускорения поиска. Пройтись в цикле по найденным адресам чтобы найти все, которые меньше указанного, можно и сейчас.

Да, нужно именно для ускорения поиска, ибо это очень большая задержка, каждый раз например мне нужно сканировать область памяти 7FFF FFFF FFFF вместо 50 0000, которая сканируется мгновенно
222. Zireael - 22 Апреля, 2021 - 19:22:16 - перейти к сообщению
Длл распаковать и закинуть в папку с кибор.
https://drive.google.com/file/d/...view?usp=sharing
Особо не тестил, попробуйте.
CODE:
external(INT, "find_memory", "findmemory", "findmemory.dll");
external(INT, "set_step", "set_step", "findmemory.dll");
external(INT, "set_ending", "set_ending", "findmemory.dll");

char poisk[4];
codhex(1339, #poisk[0]); // что искать, число 1339 в данном случае

int adr[9999]; // сюда запишутся найденные адреса


int Pid=findprocess("l2.exe"); // имя процесса
if (Pid != -1)
{
int prc = openprocess(Pid);
if(prc>0)
{
//set_ending("40"); // окончание адреса в hex
//set_step(4); // шаг поиска, по умолчанию 1

int t = gettime();
int result = find_memory(sizearray(adr), address(#poisk[0]), 4, address(#adr[0]), 0x0E20C840, 0x13B01740, prc);

messagebox("Найдено адресов: "+format(result)+"^r^nЗатрачено времени: "+format(gettime()-t));
if(result)
{
messagebox(adr[0]); // первый найденный адрес
}
}
else messagebox("Процесс не открылся");
}
else messagebox("Процесс на найден");

Параметры функции find_memory:
1 - сколько искать адресов
2 - адрес массива с данными для поиска
3 - сколько искать байт
4 - адрес массива, в который запишутся найденные адреса
5 - адрес начала поиска
6 - адрес конца поиска или -1 искать все.
7- процесс, в котором искать.

Функция set_ending принимает строку, которой должен заканчиваться адрес.
Например set_ending("A4" ); будут найдены только адреса, которые оканчиваются A4, т. е. 0D9D8CA4, 2B4C25A4 и подобные.
Функции set_step принимает шаг поиска. Для чисел имеет смысл указывать 4.
223. SOLNCE - 22 Апреля, 2021 - 20:02:51 - перейти к сообщению
 Zireael пишет:
Длл распаковать и закинуть в папку с кибор.
https://drive.google.com/file/d/...view?usp=sharing
Особо не тестил, попробуйте.

CODE:
external(INT, "find_memory", "findmemory", "findmemory.dll");
external(INT, "set_step", "set_step", "findmemory.dll");
external(INT, "set_ending", "set_ending", "findmemory.dll");

char poisk[4];
codhex(1339, #poisk[0]); // что искать, число 1339 в данном случае

int adr[9999]; // сюда запишутся найденные адреса


int Pid=findprocess("l2.exe"); // имя процесса
if (Pid != -1)
{
int prc = openprocess(Pid);
if(prc>0)
{
//set_ending("40"); // окончание адреса в hex
//set_step(4); // шаг поиска, по умолчанию 1

int t = gettime();
int result = find_memory(sizearray(adr), address(#poisk[0]), 4, address(#adr[0]), 0x0E20C840, 0x13B01740, prc);

messagebox("Найдено адресов: "+format(result)+"^r^nЗатрачено времени: "+format(gettime()-t));
if(result)
{
messagebox(adr[0]); // первый найденный адрес
}
}
else messagebox("Процесс не открылся");
}
else messagebox("Процесс на найден");

Параметры функции find_memory:
1 - сколько искать адресов
2 - адрес массива с данными для поиска
3 - сколько искать байт
4 - адрес массива, в который запишутся найденные адреса
5 - адрес начала поиска
6 - адрес конца поиска или -1 искать все.
7- процесс, в котором искать.

Функция set_ending принимает строку, которой должен заканчиваться адрес.
Например set_ending("A4" ); будут найдены только адреса, которые оканчиваются A4, т. е. 0D9D8CA4, 2B4C25A4 и подобные.
Функции set_step принимает шаг поиска. Для чисел имеет смысл указывать 4.

Спасибо огромное заранее! проверю
(Добавление)
ошибка в коде функции.. что то там не так значит, с обычным findmemory сделал все работает
224. SOLNCE - 23 Апреля, 2021 - 05:19:07 - перейти к сообщению
хм, теперь пишет что динамическая библиотека findmemory.dll не загружена
225. Kibor - 23 Апреля, 2021 - 05:32:52 - перейти к сообщению
 SOLNCE пишет:
такую возможность можно добавить данной функции? очень бы помогла

Возможность в функциях findmemory и findmemorymask указать финишный адрес поиска
226. SOLNCE - 23 Апреля, 2021 - 05:39:56 - перейти к сообщению
все работает, если вызывать функцию findmemory, а не find_memory! огромное спасибо еще раз
(Добавление)
а, это уже от администратора функция видимо заработала, и вам большое спасибо)
227. Zireael - 23 Апреля, 2021 - 05:49:47 - перейти к сообщению
 Цитата:
пишет что динамическая библиотека findmemory.dll не загружена

Обновил архив. Теперь будет работать.
228. cepka - 04 Ноября, 2021 - 13:18:42 - перейти к сообщению
Не подскажите как можно прочитать данные из памяти процесса зная цепочку оффсетов?
Известно, что значение, например, хп лежит в памяти по адресу GameAdress+PlayerOffset+HPoffset. 0xAAA3DS + 0x20 + 0x4BB.
На C# я считывал значения поочередно и прибавлял значение смещения. На форуме не нашел информации об этом, кроме как каждый раз запускать поиск адреса в памяти и записью этих значений в массив. Может кто то подсказать что то дельное?
229. Paskuda - 11 Сентября, 2022 - 02:36:12 - перейти к сообщению
 Kibor пишет:
zapis(#poisk[0], #all_poisk[0]);//Записываем 4 байтовое число 1032983058 два раза в 8 байт (идут один за другим X и Y) Его ищем


Обьясните пожалуйста зачем нужна функция zapis(), зачем 4 байтовое число записывать 2 раза чтобы получить 8 байтовое?
230. Zireael - 11 Сентября, 2022 - 03:17:37 - перейти к сообщению
 Цитата:
Обьясните пожалуйста зачем нужна функция zapis(), зачем 4 байтовое число записывать 2 раза чтобы получить 8 байтовое?

Особенности игры. Для других этого не нужно делать.

Powered by ExBB FM 1.0 Final