Описание: Работа с памятью процесса. Поиск, чтение, запись в память процесса игры |
Поиск в теме | Версия для печати |
Diablo2 |
Отправлено: 23 Мая, 2018 - 18:15:47
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2018
Репутация: 0
|
Трям всем.
Пытаюсь получить координаты в Diablo 2, координаты смотрю в artmoney и затем пробую найти их в Киборе, но мне кажется все глохнет еще на получении процесса. Он почему-то всегда равен 0, хотя на калькулятор всегда выводится разное число. Вот что пишу
CODE:win wind=window ("Diablo II");
int prc=openprocess(wind);
char poisk[4];
codhex(999, #poisk[0]);
int adr[100000];
int found = findmemory (-1, #poisk[0], 4, #adr[0], 50424480, prc);
messagebox("process #" + format(prc) + "; found count: " + format(found));
Сообщение выводит очень быстро, как будто ничего и не искал. Может дело в Windows XP, или тут все равно какая винда? |
|
|
Diablo2 |
Отправлено: 23 Мая, 2018 - 19:08:53
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2018
Репутация: 0
|
Kibor пишет: А readmemory что показывает по этому адресу?
-842150451; char:H; read_result:0; proc# 0
Ожидал увидеть координату 999
Код (Отобразить)CODE:win wind=window ("Diablo II");
int prc=openprocess(wind);
char chitat_v_char[4];
int res = readmemory(#chitat_v_char[0], 4, 50424480, prc);
int char_to_int = codhexi(#chitat_v_char[0], 4);
messagebox(format(char_to_int) + "; char: " + chitat_v_char[0] + "; read_result: " + format(res) + "; proc# " + format(prc)); |
|
|
Overdose5530 |
Отправлено: 11 Июня, 2018 - 20:12:44
|
Наблюдатель
Покинул форум
Сообщений всего: 47
Дата рег-ции: Авг. 2017
Репутация: 0
|
Здравствуйте. Сделал маску на поиск структуры других персонажей. Вот проблема в том что я не знаю как искать все адреса. У меня находит только 1н первый встречный обычно это персонаж на локации рандомно. Хочу сделать что бы находило все адреса и переписывало нужный мне байт. Пример кода ниже. Вопрос к тем кто понимает - как мне находить все адреса а не 1н как у меня?
win k;
while(getkeystate(192)==0)sleep(10);
getmouse(x, y);
k=getwindow(1, x, y);
ex_KIB=k.widthclient; ey_KIB=k.heightclient;
int x, y, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int adr[1000], aktiv1[50][50];
int prc=openprocess(k);
char poisk[189], mask[189], a134[1];
codhex(100, #a134[0]); //
poisk[0]=88; // 58
poisk[1]=186; // BA
poisk[2]=145; // 91
poisk[72]=160; // A0
poisk[73]=186; // BA
poisk[74]=145; // 91
poisk[170]=15; // 0F
poisk[172]=3; // 03
poisk[173]=3; // 03
poisk[184]=7; // 07
poisk[188]=30; // 1E
mask[0]=1;
mask[1]=1;
mask[2]=1;
mask[72]=1;
mask[73]=1;
mask[74]=1;
mask[170]=1;
mask[172]=1;
mask[173]=1;
mask[184]=1;
mask[188]=1;
a:
if (findmemorymask (1, #poisk[0], 189, #adr[0], 0, #mask[0], 100, prc)==1)
{
writememory(#a134[0], 1, adr[0]+20, prc); // Цвет тело
sleep(500);
goto a;
} |
|
|
Zireael |
Отправлено: 11 Июня, 2018 - 20:45:27
|
Эксперт
Покинул форум
Сообщений всего: 4456
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как мне находить все адреса
Первый параметр отвечает за количество искомых адресов. Т. е вместо 1 ставьте -1, либо нужное число.
CODE:findmemorymask (-1, #poisk[0], 189, #adr[0], 0, #mask[0], 100, prc)
Вернёт количество найденных адресов. adr[0] - первый адрес, adr[1] - второй и т. д. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (24): В начало « 8 9 10 11 [12] 13 14 15 16 » В конец |
Сейчас эту тему просматривают: 7 (гостей: 7, зарегистрированных: 0) |
« О программе Кибор » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|