 |
крах клиента(vs c++) - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
09.05.2013, 10:35
|
#16
|
|
|
|
Разведчик
|
 Регистрация: 27.11.2012
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: крах клиента(vs c++)
так кто-нибудь знает как решить мою проблему?
Добавлено через 41 минуту
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
так сам инжект - внедрение действия в игру где?
вот предположим рабочий инжект, написан на delphi
Код:
procedure WalkCall(aPParams:PParams);Stdcall;
var CallAddress1,CallAddress2,CallAddress3:Pointer;
x,y,z:single;
flying:DWORD;
begin
CallAddress1:=Pointer($00494620);
CallAddress2:=Pointer($00498290);
CallAddress3:=Pointer($00494EC0);
x:=aPParams^.x;
y:=aPParams^.y;
z:=aPParams^.z;
flying:=aPParams^.Param1;
asm
pushad
mov eax, dword ptr [GA]
mov esi, dword ptr [eax+$34]
mov ecx, dword ptr [esi+$10BC]
push 1
call CallAddress1
mov edi, eax
lea eax, dword ptr [esp+$18]
push eax
push flying
mov ecx, edi
call CallAddress2
mov ecx, dword ptr [esi+$10BC]
push 0
push 1
push edi
push 1
call CallAddress3
mov eax, dword ptr [GA]
mov eax, dword ptr [eax+$34]
mov eax, dword ptr [eax+$10BC]
mov eax, dword ptr [eax+$30]
mov ecx, dword ptr [eax+$4]
mov eax, x
mov dword ptr[ecx+$20], eax
mov eax, z
mov dword ptr[ecx+$24], eax
mov eax, y
mov dword ptr[ecx+$28], eax
popad
end;
end;
|
|
 |
|
 |
|
Код:
mov eax, dword ptr [GA]
mov eax, dword ptr [eax+$34]
mov eax, dword ptr [eax+$10BC]
mov eax, dword ptr [eax+$30]
mov ecx, dword ptr [eax+$4]
mov eax, x
mov dword ptr[ecx+$20], eax
mov eax, z
mov dword ptr[ecx+$24], eax
mov eax, y
mov dword ptr[ecx+$28], eax
Очень интересует,
выделенная мною строка,мне очень интересно,а почему тут нету вызова никакой из функций ,а просто присваиваются значения ?
Последний раз редактировалось aloned; 09.05.2013 в 11:17.
Причина: Добавлено сообщение
|
|
|
13.05.2013, 13:45
|
#17
|
|
|
|
Разведчик
|
 Регистрация: 12.05.2013
 Сообщений: 3
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: крах клиента(vs c++)
Ну и опять же... Что за переменная pid в функции BYTE SendPacket(PACKET* pack)? Логически понятно, что это pid процесса, но она нигде не объявлена. Ни глобально, ни внутри функции. Есть объявление переменной pid внутри структуры, но данная функция не принадлежит структуре.
И переменные pParams, pFunc возникли из воздуха, ни объявления, ни определения, нихрена.... Вы опять же скинули не весь код...
Вы хоть проверяйте код прежде чем его скидывать.
Все эти параметры можно получить выделив память в клиенте игры при инициализации бота.
BOOL CNewBotDlg::OnInitDialog()
{
CDialog::OnInitDialog();
pid = PidbyName("elementclient.exe");
INJECTOR inject;
inject.pid = pid;
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
DWORD* pfunc = (DWORD*) VirtualAllocEx(hProcess,NULL,511, MEM_COMMIT, PAGE_READWRITE);
inject.pFunction = pfunc;
inject.pParams = pfunc + 64;
CloseHandle(hProcess);
return TRUE;
}
Я не понимаю, вы скидываете код, а он у вас разный. В первом случае функция BYTE INJECTOR::SendPacket(PACKET* pack) приадлежит структуре INJECTOR, далее вы линкуете тот же код, но функция уже не принадлежит структуре INJECTOR.
Переписал программу в соответсвии с вашим кодом, вызываю функцию TargetOff(), в клиенте игры - нулевая реакция...
Так, я тут кое-что подправил и вроде бы получилось...
Проект OffTargetMob.rar убирает моба из таргета внизу прикреплен к сообщению...
Последний раз редактировалось Xantrax2150198; 13.05.2013 в 16:29.
|
|
|
21.05.2013, 09:46
|
#18
|
|
|
|
Разведчик
|
 Регистрация: 27.11.2012
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: крах клиента(vs c++)
 |
Цитата: |
 |
|
|
 |
Сообщение от Xantrax2150198 |
 |
|
|
|
|
|
|
Ну и опять же... Что за переменная pid в функции BYTE SendPacket(PACKET* pack)? Логически понятно, что это pid процесса, но она нигде не объявлена. Ни глобально, ни внутри функции. Есть объявление переменной pid внутри структуры, но данная функция не принадлежит структуре.
И переменные pParams, pFunc возникли из воздуха, ни объявления, ни определения, нихрена.... Вы опять же скинули не весь код...
Вы хоть проверяйте код прежде чем его скидывать.
Все эти параметры можно получить выделив память в клиенте игры при инициализации бота.
BOOL CNewBotDlg::OnInitDialog()
{
CDialog::OnInitDialog();
pid = PidbyName("elementclient.exe");
INJECTOR inject;
inject.pid = pid;
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
DWORD* pfunc = (DWORD*) VirtualAllocEx(hProcess,NULL,511, MEM_COMMIT, PAGE_READWRITE);
inject.pFunction = pfunc;
inject.pParams = pfunc + 64;
CloseHandle(hProcess);
return TRUE;
}
Я не понимаю, вы скидываете код, а он у вас разный. В первом случае функция BYTE INJECTOR::SendPacket(PACKET* pack) приадлежит структуре INJECTOR, далее вы линкуете тот же код, но функция уже не принадлежит структуре INJECTOR.
Переписал программу в соответсвии с вашим кодом, вызываю функцию TargetOff(), в клиенте игры - нулевая реакция...
Так, я тут кое-что подправил и вроде бы получилось...
Проект OffTargetMob.rar убирает моба из таргета внизу прикреплен к сообщению...
|
|
 |
|
 |
|
Я скидывал только данные в которых могла быть ошибка,с PID все нормально,ошибка таится где-то в asm вставке
|
|
|
09.06.2013, 20:19
|
#19
|
|
|
|
Пехотинец
|
 Регистрация: 21.03.2012
 Сообщений: 83
 Популярность: 1178
 Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
|
Re: крах клиента(vs c++)
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
у автора небольшой косяк с размерами массивов char там по всюду надо прибавить 1
|
|
 |
|
 |
|
Зачем это? В байт-коде столько же байт сколько размерности в массиве? да. Зачем 1 лишний байт?
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Что у вас за версия компилятора, которая воспринимает такую строку:
char fdata[29]="\x60...
|
|
 |
|
 |
|
\x60 - это символ, не число а именно символ, эта запись значит, что здесь представлен символ (\) шестнадцатиричный код которого (х) равен 60
тут массив при обьявлении заполняется СТРОКОЙ из СИМВОЛОВ с нужными нам кодами, аналогично можно написать и обычную строку char fdata[29] = "ghvnklljfygd";
как уже правильно сказали, здесь готовый байткод с уже прописанными в него параметрами представлен в символьном представлении, по сути просто символьной строкой. Это сделанно для того, чтоб инжектился обычный массив чисел(символов), которые фактически представляют рабочий байткод функции, без передачи параметров и т.д.
Кстати, если тут используется байт-код из темы написания бота, то скорее всего он устарел, уже столько обнов было(в том числе глобальное обновление), поэтому нужно составить его заново из рабочей функции, либо использовать инжект функции с рабочей на данный момент асм-вставкой, с передачей в поток параметров. А инжект готового байткода - это на любителя.
________________
╔═╗
║ ˑ ˑ ╬ ╬
╚═╝
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Подсказка] крах поагина
|
dsquared4 |
Общение и обсуждение |
0 |
23.06.2012 19:24 |
Краф ремесел
|
rjhbyafh |
Общение и обсуждение Perfect World |
6 |
28.12.2011 13:18 |
Крах плагина
|
Slavyan567890 |
Общение и обсуждение |
2 |
15.04.2011 14:49 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 03:30.
|
 |