Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как записать в процесс число ?

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

21. Zireael - 27 Февраля, 2019 - 17:35:15 - перейти к сообщению
Кстати, 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 читает любые адреса без проблем.
22. Kibor - 28 Февраля, 2019 - 03:21:30 - перейти к сообщению
 Zireael пишет:
Кстати, findmemory тоже не находит данные.

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

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

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

Пробуйте определять указатель как то по другому. Не с помощью window, а с помощью соответствующего WinApi.
23. konctantin777 - 28 Февраля, 2019 - 11:17:30 - перейти к сообщению
Одиночное значение найти проще, а вот 32шт. однобайтовых н находит (
24. Kibor - 28 Февраля, 2019 - 12:36:40 - перейти к сообщению
Обновил. Как теперь?
Мана ищется прекрасно.
25. konctantin777 - 28 Февраля, 2019 - 13:33:05 - перейти к сообщению
 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);
26. Kibor - 28 Февраля, 2019 - 14:47:32 - перейти к сообщению
 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);
27. konctantin777 - 03 Марта, 2019 - 02:27:12 - перейти к сообщению
Сегодня перестал искать "по кругу". Т.е. по маске 1й раз находит норм. А через раз два уже не находит. Если кибор остановить и снова запустить (быстрым стартом), то всё снова норм.
До этого пару суток работал без проблем. Комп перегружал, запускал от админа.
28. Kibor - 03 Марта, 2019 - 03:53:01 - перейти к сообщению
Проверьте или у вас массив маски не затирается где то чем то другим. Это может быть если где то идет запись в не выделенную память.
Для теста используйте минимальный скрипт.
29. Overdose5530 - 03 Марта, 2019 - 09:31:39 - перейти к сообщению
Это для справки. Просто так делюсь наблюдениями.До обновы хз почему на вин10 все было норм а на 7ке у меня терялись адреса(не находило)....... После обновы на виндовс 7 находит все адреса. До этого работало не стабильно мог спустя час или раньше потерять некоторые адреса например из 4х находил только 2 а должен 4 из 4. Закатив глазки .. . этот комент не вопрос просто высказался Закатив глазки
30. konctantin777 - 03 Марта, 2019 - 09:48:39 - перейти к сообщению
Короткий работает.. Но потом перестаёт записывать.
код (Отобразить)

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 адресов

Powered by ExBB FM 1.0 Final