Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Работа с памятью процесса. Поиск, чтение, запись в память процесса игры
SOLNCE
Отправлено: 23 Апреля, 2021 - 01:50:40
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 26
Дата рег-ции: Сент. 2016  
Репутация: 0




 Zireael пишет:
 Цитата:
такую возможность можно добавить данной функции? очень бы помогла

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

Да, нужно именно для ускорения поиска, ибо это очень большая задержка, каждый раз например мне нужно сканировать область памяти 7FFF FFFF FFFF вместо 50 0000, которая сканируется мгновенно

(Отредактировано автором: 23 Апреля, 2021 - 01:51:15)

 
 Top
Zireael
Отправлено: 23 Апреля, 2021 - 03:22:16
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017  
Репутация: 585




Длл распаковать и закинуть в папку с кибор.
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.
 
 Top
SOLNCE
Отправлено: 23 Апреля, 2021 - 04:02:51
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 26
Дата рег-ции: Сент. 2016  
Репутация: 0




 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 сделал все работает
 
 Top
SOLNCE
Отправлено: 23 Апреля, 2021 - 13:19:07
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 26
Дата рег-ции: Сент. 2016  
Репутация: 0




хм, теперь пишет что динамическая библиотека findmemory.dll не загружена
 
 Top
Kibor
Отправлено: 23 Апреля, 2021 - 13:32:52
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 SOLNCE пишет:
такую возможность можно добавить данной функции? очень бы помогла

Возможность в функциях findmemory и findmemorymask указать финишный адрес поиска
 
 Top
SOLNCE
Отправлено: 23 Апреля, 2021 - 13:39:56
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 26
Дата рег-ции: Сент. 2016  
Репутация: 0




все работает, если вызывать функцию findmemory, а не find_memory! огромное спасибо еще раз
(Добавление)
а, это уже от администратора функция видимо заработала, и вам большое спасибо)
 
 Top
Zireael
Отправлено: 23 Апреля, 2021 - 13:49:47
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
пишет что динамическая библиотека findmemory.dll не загружена

Обновил архив. Теперь будет работать.
 
 Top
cepka
Отправлено: 04 Ноября, 2021 - 20:18:42
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2021  
Репутация: 0




Не подскажите как можно прочитать данные из памяти процесса зная цепочку оффсетов?
Известно, что значение, например, хп лежит в памяти по адресу GameAdress+PlayerOffset+HPoffset. 0xAAA3DS + 0x20 + 0x4BB.
На C# я считывал значения поочередно и прибавлял значение смещения. На форуме не нашел информации об этом, кроме как каждый раз запускать поиск адреса в памяти и записью этих значений в массив. Может кто то подсказать что то дельное?
 
 Top
Paskuda
Отправлено: 11 Сентября, 2022 - 10:36:12
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021  
Репутация: 0




 Kibor пишет:
zapis(#poisk[0], #all_poisk[0]);//Записываем 4 байтовое число 1032983058 два раза в 8 байт (идут один за другим X и Y) Его ищем


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



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Обьясните пожалуйста зачем нужна функция zapis(), зачем 4 байтовое число записывать 2 раза чтобы получить 8 байтовое?

Особенности игры. Для других этого не нужно делать.
 
 Top
Страниц (24): В начало « 16 17 18 19 20 21 22 [23] 24 »
Сейчас эту тему просматривают: 15 (гостей: 15, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by