 |
Ткните носом пожалуйста - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
27.05.2013, 10:16
|
#46
|
|
|
|
Разведчик
|
 Регистрация: 06.07.2010
 Сообщений: 30
 Популярность: 364
 Сказал(а) спасибо: 1
Поблагодарили 16 раз(а) в 9 сообщениях
|
Re: Ткните носом пожалуйста
Ты используешь идентификатор процесса pid, уже полученный где-то.
зачем же еще вставлять функцию FindWindow, которая у тебя используется вхолостую?
|
|
|
27.05.2013, 12:49
|
#47
|
|
|
|
Разведчик
|
 Регистрация: 12.05.2013
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
Последний раз редактировалось Xantrax2150198; 27.05.2013 в 12:54.
|
|
|
27.05.2013, 16:22
|
#48
|
|
|
|
Рыцарь
|
 Регистрация: 19.11.2008
 Сообщений: 385
 Популярность: 13343
 Сказал(а) спасибо: 124
Поблагодарили 217 раз(а) в 109 сообщениях
|
Re: Ткните носом пожалуйста
 |
Цитата: |
 |
|
|
 |
Сообщение от Xantrax2150198 |
 |
|
|
|
|
|
|
Sirioga, а у меня вот так вот пропатчилось )) :
|
|
 |
|
 |
|
Провел опыт, попытался записать вместо 2х байт 4 с использованием SizeOf, естественно как и предполагалось, я получил крэш клиента, возможно это некая особенность языка. По идее, должны были затереться инструкции которые вне диапазона требуемой записи, хотя если работает, ну и ладно, но я бы посоветовал писать точное значение того, сколько байт ты хочешь записать, а так же для проверки вместо NULL выставить контейнер и посмотреть, сколько на самом деле байт записалось.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
27.05.2013, 20:05
|
#49
|
|
|
|
Разведчик
|
 Регистрация: 12.05.2013
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
 |
Цитата: |
 |
|
|
|
|
|
|
|
Провел опыт, попытался записать вместо 2х байт 4 |
|
 |
|
 |
|
Итак, давайте еще раз...
Вот моя функция разморозки(в конце как вы и советовали поместил переменную указатель в которую пишется сколько байт записалось в память):
Unfreeze
Код:
void CNewBotDlg::UnfreezeWindow()
{
DWORD unfreeze1 = 0xB0;
DWORD A = 0x00436986;
DWORD unfreeze2 = 0x01;
DWORD B = 0x00B9070C;
DWORD D = 0, C = 0;
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
if(pid!=0)
{
WriteProcessMemory(hProcess,&A,&unfreeze1,sizeof(DWORD),&D);
WriteProcessMemory(hProcess,(void*)B,&unfreeze2,sizeof(DWORD),&C);
}
else
{
MessageBox("pid=0","",MB_OK);
return;
}
CloseHandle(hProcess);
CString str; //Здесь я вывожу сообщение о том
str.Format("%lu",D); //сколько байт записалось в память, D = 4,
MessageBox(str,"",MB_OK); //т.е. записалось 4 байта, клиент не виснет и не крашится
}
Как-то так...
У меня вопрос, как мне понять, в форме лисы я или нет? Какие смещения?
И еще, странно, пет не призван, а здоровье его вывожу....
Последний раз редактировалось Xantrax2150198; 27.05.2013 в 21:46.
|
|
|
27.05.2013, 22:28
|
#50
|
|
|
|
Разведчик
|
 Регистрация: 06.07.2010
 Сообщений: 30
 Популярность: 364
 Сказал(а) спасибо: 1
Поблагодарили 16 раз(а) в 9 сообщениях
|
Re: Ткните носом пожалуйста
|
|
|
28.05.2013, 12:35
|
#51
|
|
|
|
Разведчик
|
 Регистрация: 12.05.2013
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
|
|
|
03.06.2013, 00:07
|
#52
|
|
|
|
Разведчик
|
 Регистрация: 12.05.2013
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
Подскажите пожалуйста, что с оффсетами шахт? Они теже, что и в Землях духов? Дело в том, что считываю Type лута(шахт), получаю всего несколько значений шахт, что же получается в памяти на данный момент не равно 0 всего несколько шахт? А когда считываю дистанцию до шахт, так вообще ничего не выдает...
Да толку мне со всех этих оффсетов если у меня асм вставка не работает?
Последний раз редактировалось Xantrax2150198; 03.06.2013 в 01:40.
|
|
|
30.07.2013, 01:54
|
#53
|
|
|
|
Разведчик
|
 Регистрация: 13.04.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
Странно, но у меня программа почему-то упорно не хочет выделять ближайшего моба, а выделяет гораздо дальше.
основная функция поиска мобов void TForm1::SelectTargetMob()
{
DWORD wid = 0;
float dist = 1000;
for(int i = 0; i<768; i++)
{
if(MobWID(i)!= 0)
if(MobType(i) == 6)
if(MobDist(i)<dist)
{
wid = MobWID(i);
dist = MobDist(i);
//LabeledEdit1->Text = dist;
}
}
inject.TargetMob(wid);
//inject.NormalAttack();
}
получение WID моба unsigned long TForm1::MobWID(int i)
{
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
unsigned int buffer = 0;
ReadProcessMemory(Process,(void*)BA,&buffer,sizeof (unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+D_GA),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D1),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D2),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_STRUCT ),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+(i*Random )),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer + Random),&buffer,sizeof(unsigned int),0);
if(buffer!=0)
{
ReadProcessMemory(Process,(void*)(buffer + WID_MOB),&buffer,sizeof(unsigned int),0);
CloseHandle(Process);
return buffer;
}
CloseHandle(Process);
return 0;
}
получение TYPE моба unsigned long TForm1::MobType(int i)
{
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
unsigned int buffer = 0;
ReadProcessMemory(Process,(void*)BA,&buffer,sizeof (unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+D_GA),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D1),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D2),&bu ffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_STRUCT ),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+(i*Random )),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer + Random),&buffer,sizeof(unsigned int),0);
if(buffer!=0)
{
ReadProcessMemory(Process,(void*)(buffer + TYPE_MOB),&buffer,sizeof(unsigned int),0);
CloseHandle(Process);
return buffer;
}
CloseHandle(Process);
return 0;
}
получение Dist моба float TForm1::MobDist(int i)
{
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
unsigned long buffer = 0.0;
ReadProcessMemory(Process,(void*)BA,&buffer,sizeof (unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+D_GA),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_D1),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_D2),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_STRUCT ),&buffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+(i*Random )),&buffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer + Random),&buffer,sizeof(unsigned long),0);
if(buffer!=0)
{
return ReadProcessMemory(Process,(void*)(buffer + DIST_MOB),&buffer,sizeof(unsigned long),0);
//CloseHandle(Process);
//return buffer;
}
CloseHandle(Process);
return 0;
}
Почему такое происходит?
Походу что-то не правильно в считывании дистанции до моба, так как она всегде выдается равной 1, хотя моб явно не на дистанции 1.... Надо разбираться.
Последний раз редактировалось Xantrax; 30.07.2013 в 01:58.
|
|
|
30.07.2013, 03:00
|
#54
|
|
|
|
Сержант
|
 Регистрация: 11.12.2010
 Сообщений: 110
 Популярность: 541
 Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
|
Re: Ткните носом пожалуйста
В последней функции:
Код:
return ReadProcessMemory
Серьёзно? :D
У ReadProcessMemory возвращаемое значение уж точно не float (там bool, т.е. 1 или 0).
Поскольку считывание происходит успешно, возвращаемое значение true рассматривается как float 1.0.
Реальное же значение должно лежать в buffer.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
|
|
|
30.07.2013, 08:06
|
#55
|
|
|
|
Разведчик
|
 Регистрация: 13.04.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
Возвращаемое значение у ReadProcessMemory - BOOL, ну, так и buffer не float, а unsigned long, что не есть float, т.е. (return buffer) вернется число к примеру 10.0 или 15.0, а не 10.67 или 11.537. А если сделать buffer float, то ошибка - buffer + GA(не подходят друг к другу)(СBuilder).
Почему всегда возвращается 1 стало понятно, а вот с типами не совсем, зачем тогда возвращать float из этой функции?
Переписал эту функцию так, пришлось ввести еще одну переменную float TForm1::MobDist(int i)
{
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
DWORD buffer = 0;
float my;
ReadProcessMemory(Process,(void*)BA,&buffer,sizeof (unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+D_GA),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_D1),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_D2),&bu ffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+M_STRUCT ),&buffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer+(i*Random )),&buffer,sizeof(unsigned long),0);
ReadProcessMemory(Process,(void*)(buffer + Random),&buffer,sizeof(unsigned long),0);
if(buffer!=0)
{
ReadProcessMemory(Process,(void*)(buffer + DIST_MOB),&my,sizeof(DWORD),0);
CloseHandle(Process);
return my;
}
CloseHandle(Process);
return 0;
}
Последний раз редактировалось Xantrax; 30.07.2013 в 14:02.
|
|
|
30.07.2013, 23:04
|
#56
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: Ткните носом пожалуйста
Xantrax,
Зачем же так много раз открывать и закрывать процесс, может так лучше будет:
Код:
void TForm1::SelectTargetMob()
{
unsigned int WIDMOB = 0;
unsigned int TYPEMOD = 0;
unsigned int DISTMOB = 0;
unsigned int dist = 1000;
unsigned int buffer = 0;
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
for(int i = 0; i<768; i++)
{
ReadProcessMemory(Process,(void*)BA,&buffer,sizeof (unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+D_GA),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D1),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_D2),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+M_STRUCT ),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer+(i*Random )),&buffer,sizeof(unsigned int),0);
ReadProcessMemory(Process,(void*)(buffer + Random),&buffer,sizeof(unsigned int),0);
if(buffer!=0)
{
ReadProcessMemory(Process,(void*)(buffer + TYPE_MOB),&TYPEMOB,sizeof(unsigned int),0);
if(TYPEMOB==6)
{
ReadProcessMemory(Process,(void*)(buffer + DIST_MOB),&DISTMOB,sizeof(unsigned int),0);
if(DISTMOB <dist)
{
ReadProcessMemory(Process,(void*)(buffer + WID_MOB),&WIDMOB,sizeof(unsigned int),0);
dist =DISTMOB;
}
}
}
}
CloseHandle(Process);
inject.TargetMob(WIDMOB);
}
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
30.07.2013, 23:13
|
#57
|
|
|
|
Разведчик
|
 Регистрация: 13.04.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
Да, несомненно, так лучше, только бы еще объяснение или пример, почему плохо открывать и закрывать процесс несколько раз?
|
|
|
30.07.2013, 23:22
|
#58
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: Ткните носом пожалуйста
Xantrax,
А логически тебе не кажется, что в твоем случае операция обрабатывается дольше и нагрузка выше?
Да, и еще, к точке привязывать будешь? Если нет, то он у тебя убежит от места фарма неизвестно куда.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось fds255; 30.07.2013 в 23:27.
|
|
|
30.07.2013, 23:33
|
#59
|
|
|
|
Разведчик
|
 Регистрация: 13.04.2013
 Сообщений: 5
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Ткните носом пожалуйста
 |
Цитата: |
 |
|
|
|
|
|
|
|
А логически тебе не кажется, что в твоем случае операция обрабатывается дольше и нагрузка выше? |
|
 |
|
 |
|
Согласен.
 |
Цитата: |
 |
|
|
|
|
|
|
|
Да, и еще, к точке привязывать будешь? Если нет, то он у тебя убежит от места фарма неизвестно куда. |
|
 |
|
 |
|
Ооо, ))) с Асмом у меня давняя война. Еще пару месяцев назад я тут писал этого бота на Visual Studio 2005 C++ библиотека MFC(преимущественно). Так вот там дело дошло до того, что просматривал Асм код скомпилированного .exe-шника и оказывалось, что VS вставлял в ассемблерную вставку еще какую-то свою функцию из-за чего клиент вылетал, хотя сверял и функцию инжекта, и асемблерную вставку с товарищами с этого форума и все говорили, что они работают и верны.
Да, как-то надо привязать бота к месту(точке) опр-нными координатами.
|
|
|
30.07.2013, 23:49
|
#60
|
|
|
|
Разведчик
|
 Регистрация: 23.06.2012
 Сообщений: 43
 Популярность: 427
 Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: Ткните носом пожалуйста
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Гм Инновы у нас под носом О_о
|
.NextTarget |
Общение и обсуждение, архив Point Blank |
4 |
10.03.2011 14:16 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:18.
|
 |