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

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

 Страниц (6): « 1 2 [3] 4 5 6 »   

> Описание: Работа с памятью процесса
Zireael
Отправлено: 28 Февраля, 2019 - 01:35:15
Post Id



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


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




Кстати, findmemory тоже не находит данные.
https://ibb.co/pxVwMsC
CODE:
external(INT, "wsprintf", "wsprintfA", "User32.dll" );

win w=window ("GemsofWar", "UnityWndClass", -1);
int prc=openprocess(w);

char a[1024];
int adr[10000];

char poisk[4];
codhex(1673, #poisk[0]); // искомое число

int count=findmemory (sizearray(adr), #poisk[0], 4, #adr[0], 0, prc);
//messagebox(count);
if(count)
{
if(fopen(tempfolder()+"address.txt", "w"))
{
for(int i=0; i<count; i++)
{
wsprintf(address(#a[0]), "%x", adr[i]);
fwrite(format(#a[0])); fwrite(ENDL);
}
fclose();
start(tempfolder()+"address.txt");
}
}

При этом readmemory читает любые адреса без проблем.
 
 Top
Kibor
Отправлено: 28 Февраля, 2019 - 11:21:30
Post Id



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


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




 Zireael пишет:
Кстати, findmemory тоже не находит данные.

Не знаю.
У меня находит.
Так же кроме этого на скрине видно что сам CE не нашел то что он сам же показывает, а Кибор нашел. И он нашел больше адресов чем CE и правильно. (поиск был произведен несколько раз там и там, поэтому значения не могли измениться)

Адреса 427e7fa (второй в списке в адресах Кибор) нет в списке найденных адресов в CE.
Хотя внизу хорошо видно что по этому адресу лежит искомое значение 1673. И поиск производился несколько раз уже после того как это значение там находилось. Короче не знаю.

Все же баг поправил. Опять не с этим связанный. А с переводом 10 в 16 codhex. Там надо было работать с целыми только числами. Но на перевод числа 1673 это влияния не оказывало.

Пробуйте определять указатель как то по другому. Не с помощью window, а с помощью соответствующего WinApi.
 
 Top
konctantin777
Отправлено: 28 Февраля, 2019 - 19:17:30
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Одиночное значение найти проще, а вот 32шт. однобайтовых н находит (
 
 Top
Kibor
Отправлено: 28 Февраля, 2019 - 20:36:40
Post Id



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


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




Обновил. Как теперь?
Мана ищется прекрасно.
 
 Top
konctantin777
Отправлено: 28 Февраля, 2019 - 21:33:05
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Kibor пишет:
Обновил. Как теперь?
Мана ищется прекрасно.


Да ! Ищется отлично- спасибо ! )
А подскажите ещё как в 17е значение "11" записать ? Не получается...
код (Отобразить)

[i](Добавление)

char zz[1];
codhex(14, #zz[15]);
writememory(#zz[0], 1, adr[0], prc);
(Добавление)
Так правильно ?
(Добавление)
char zz[1];
codhex(14, #zz[0]);
writememory(#zz[0], 1, adr[0]+16, prc);
 
 Top
Kibor
Отправлено: 28 Февраля, 2019 - 22:47:32
Post Id



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


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




 konctantin777 пишет:
Так правильно ?

Ну да. Надо делать смещение от найденного адреса.
Только 1 байт можно записать напрямую. Без codhex




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[32]={4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0,
255, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

new char poiskmask[sizearray(poisk)];

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

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

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

if (fopen ("c:\5.txt", "w")!=0)
{
for(int i=0; i<count; i++)
{
wsprintf(address(#a[0]), "%x", adr[i]); // перевод в hex
fwrite(format(i)+", "+format(adr[i])+", "+format(#a[0]));
fwrite(ENDL);//записываем в файл перевод строки
}
fclose();//закрываем файл
}
start("c:\5.txt");

messagebox ("заменить");

char zamen[1]={4};
writememory(#zamen[0], 1, adr[0]+16, prc);
 
 Top
konctantin777
Отправлено: 03 Марта, 2019 - 10:27:12
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Сегодня перестал искать "по кругу". Т.е. по маске 1й раз находит норм. А через раз два уже не находит. Если кибор остановить и снова запустить (быстрым стартом), то всё снова норм.
До этого пару суток работал без проблем. Комп перегружал, запускал от админа.
 
 Top
Kibor
Отправлено: 03 Марта, 2019 - 11:53:01
Post Id



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


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




Проверьте или у вас массив маски не затирается где то чем то другим. Это может быть если где то идет запись в не выделенную память.
Для теста используйте минимальный скрипт.
 
 Top
Overdose5530
Отправлено: 03 Марта, 2019 - 17:31:39
Post Id



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


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




Это для справки. Просто так делюсь наблюдениями.До обновы хз почему на вин10 все было норм а на 7ке у меня терялись адреса(не находило)....... После обновы на виндовс 7 находит все адреса. До этого работало не стабильно мог спустя час или раньше потерять некоторые адреса например из 4х находил только 2 а должен 4 из 4. Закатив глазки .. . этот комент не вопрос просто высказался Закатив глазки
 
 Top
konctantin777
Отправлено: 03 Марта, 2019 - 17:48:39
Post Id



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


Покинул форум
Сообщений всего: 1136
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Короткий работает.. Но потом перестаёт записывать.
код (Отобразить)

textout(0,10,10, ""+format(count),0); Показывает, что находит 1 адрес

codhex(8, #zz[0]);
codhex(222, #zz[1]);
writememory(#zz[0], 1, adr[0]+16, prc); Но значение не меняется !
writememory(#zz[1], 1, adr[0]+12, prc);
(Добавление)
Ага. "Короткий" тоже ломается. Показывает, что найдено 0 адресов
 
 Top
Страниц (6): « 1 2 [3] 4 5 6 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by