Описание: Работа с памятью процесса. Поиск, чтение, запись в память процесса игры |
Поиск в теме | Версия для печати |
AdryV |
Отправлено: 26 Марта, 2019 - 16:50:56
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
в общем пробуй это и выясняй в чем проблема, скорее всего в адресах
я проверил на своих адресах для игры 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("не нашло окно"); (Отредактировано автором: 26 Марта, 2019 - 16:52:08) |
|
|
AdryV |
Отправлено: 27 Марта, 2019 - 07:14:56
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
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); |
|
|
AdryV |
Отправлено: 27 Марта, 2019 - 09:00:47
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
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(Отредактировано автором: 27 Марта, 2019 - 09:02:59) |
|
|
Kibor |
Отправлено: 27 Марта, 2019 - 09:06:54
|
Эксперт
Покинул форум
Сообщений всего: 8203
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
AdryV пишет: как я понял кибор умеет кушать только 32 бит
Ему без разницы с какого адреса читать.
Просто для переменной адреса надо использовать double
CODE:double start_adr=4297898608;//1002CBA70 |
|
|
goa |
Отправлено: 27 Марта, 2019 - 09:10:58
|
Прохожий
Покинул форум
Сообщений всего: 13
Дата рег-ции: Март 2019
Репутация: 0
|
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;
}
все ровно не находит |
|
|
|
Поиск в теме | Версия для печати |
Страниц (24): В начало « 12 13 14 15 [16] 17 18 19 20 » В конец |
Сейчас эту тему просматривают: 13 (гостей: 13, зарегистрированных: 0) |
« О программе Кибор » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|