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

Страниц (24): В начало « ... 12 13 14 15 [16] 17 18 19 20 ... » В конец
 

151. AdryV - 26 Марта, 2019 - 09:50:56 - перейти к сообщению
в общем пробуй это и выясняй в чем проблема, скорее всего в адресах
я проверил на своих адресах для игры 32 бит все нормально работает
CODE:
//external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll"); //зачем эт надо в тесте?
//
int x, y;//координаты
win wind;//окно
int prc;//процесс
int start_adr=2931312;//4198400(0x00401000) эмм кажись это минимальный статистический адрес
//загрузки любого приложения, все что меньше у меня в игре это чтото типа регистров
//хотя игры бывают разными
char xp[4];
//
textout(0, 0, 20, "наведите курсор на игру и нажмите Ё~", 0);
while(getkeystate(192)!=1)sleep(50);
getmouse(x, y);
wind=getwindow(1, x, y);
textout(0, 0, 20, "Указатель на окно получен = "+ wind.name +" | "+ wind.class, 0);
sleep(1000);
prc=openprocess(wind);
//
activate(wind);
//
messagebox(start_adr);
if(wind>0) {
if(readmemory(#xp[0], 4, start_adr, prc)!=0) {
int ykaz=codhexi(#xp[0], 4);
messagebox(ykaz);
}else messagebox("не считало данные из адреса памяти");
}else messagebox("не нашло окно");
152. goa - 26 Марта, 2019 - 15:37:06 - перейти к сообщению
ну никак не получается кто знает помогите пожалуйста уже столько дней бьюсь без успешно((
вообщем пытаюсь я найти многоуровневые указатели из шага 8 cheat engine 64x.
В самом CE все находиться и работает а вот кибор ни как не хочет у меня находить значение базового уровня у меня его адрес 1002CBA70 и дальше 4 смещения до нужного значения.
вот скрин

Нажмите для увеличения
153. konctantin777 - 26 Марта, 2019 - 23:30:43 - перейти к сообщению
А что за игра ? (самому попробовать- чтоб лично видеть)
154. AdryV - 27 Марта, 2019 - 00:14:56 - перейти к сообщению
 goa пишет:
cheat engine 64x.

в общем ни как так как 64 бит
(Добавление)
а так вообще вот пример

CODE:
int x, y;//координаты
win wind;//окно
int prc;//процесс
int start_adr=6280800;//адрес заменить на свой
char xp[4];
//
textout(0, 0, 20, "наведите курсор на игру и нажмите Ё~", 0);
while(getkeystate(192)!=1)sleep(50);
getmouse(x, y);
wind=getwindow(1, x, y);
textout(0, 0, 20, "Указатель на окно получен = "+ wind.name +" | "+ wind.class, 0);
sleep(1000);
prc=openprocess(wind);
//
activate(wind);
//
messagebox(start_adr);
if(wind>0) {
int ykaz0=rmem(start_adr);
int ykaz1=rmem(ykaz0+12);
int ykaz2=rmem(ykaz1+20);
int ykaz3=rmem(ykaz2);
int znachenie=rmem(ykaz3+24);
messagebox(znachenie);
}
//
function rmem(int adr)
{
if(readmemory(#xp[0], 4, adr, prc)!=0)return codhexi(#xp[0], 4);
return 0;
}


[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
(Добавление)
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
(Добавление)
можно ваще так =)
int znachenie=rmem(rmem(rmem(rmem(rmem(start_adr)+12)+20))+24);
155. goa - 27 Марта, 2019 - 01:48:35 - перейти к сообщению
как раз проблема в int start_adr у меня он 1002CBA70 что переводя в DEC ==4297898608
что больше 2 147 483 647 нельзя ли использовать массив или long вместо int или еще как нибудь??
156. Kibor - 27 Марта, 2019 - 01:59:40 - перейти к сообщению
 goa пишет:
нельзя ли использовать массив или long вместо int или еще как нибудь??

double используйте если адреса большие.
157. AdryV - 27 Марта, 2019 - 02:00:47 - перейти к сообщению
CODE:
Int16 -- (-32,768 to +32,767)

Int32 -- (-2,147,483,648 to +2,147,483,647)

Int64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)


как я понял кибор умеет кушать только 32 бит
а ты пытаешься софтом 32 битным(это кибор) анализировать программу 64 бит... но значения просто напросто не вмещаются
CE работает так как он 64 бит
и еще тебе скорее всего надо будет считывать не по 4 байта а по 8
158. Kibor - 27 Марта, 2019 - 02:06:54 - перейти к сообщению
 AdryV пишет:
как я понял кибор умеет кушать только 32 бит

Ему без разницы с какого адреса читать.
Просто для переменной адреса надо использовать double
CODE:
double start_adr=4297898608;//1002CBA70
159. goa - 27 Марта, 2019 - 02:10:58 - перейти к сообщению
CODE:
int x, y;//??????????
win wind;//????
int prc;//???????
double start_adr=4297898608;//????? ???????? ?? ????
char xp[4];
//
textout(0, 0, 20, "???????? ?????? ?? ???? ? ??????? ?~", 0);
while(getkeystate(192)!=1)sleep(50);
getmouse(x, y);
wind=getwindow(1, x, y);
textout(0, 0, 20, "????????? ?? ???? ??????? = "+ wind.name +" | "+ wind.class, 0);
sleep(1000);
prc=openprocess(wind);
//
activate(wind);
//
messagebox(start_adr);
if(wind>0) {
double ykaz0=rmem(start_adr);
double ykaz1=rmem(ykaz0+10);
double ykaz2=rmem(ykaz1+18);
double ykaz3=rmem(ykaz2);
double znachenie=rmem(ykaz3+18);
messagebox(ykaz0);
}
//
function rmem(double adr)
{
if(readmemory(#xp[0], 4, adr, prc)!=0)return codhexi(#xp[0], 4);
return 0;
}


все ровно не находит
160. Kibor - 27 Марта, 2019 - 02:23:45 - перейти к сообщению
 goa пишет:
все ровно не находит

Вы уже сами поняли что адрес не влазит в 4 байта. Так почему вы его считываете с 4 байт?
Может считайте с 8? И преобразуйте эти 8 байт в double как то.

Powered by ExBB FM 1.0 Final