Как пройти по координатам? - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок
21.02.2018, 20:58
#1
Разведчик
Регистрация: 08.09.2017
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Как пройти по координатам?
procedure WalkCall(aPParams: PParams); Stdcall;
var
BaseAddr, CallAddress1,CallAddress2,CallAddress3:Pointer;
x,y,z:single;
flying
WORD;
begin
BaseAddr := Pointer(aPParams^.Param1);
CallAddress1:= Pointer(aPParams^.Param2);
CallAddress2:= Pointer(aPParams^.Param3);
CallAddress3:= Pointer(aPParams^.Param4);
x:=aPParams^.Param7;
y:=aPParams^.Param8;
z:=aPParams^.Param9;
flying:=$81C;
asm
pushad
mov eax, BaseAddr
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+$1C]
mov edi, dword ptr [eax+$28] //20
mov ecx, dword ptr [edi+$14F0]
push 1
call CallAddress1
lea edx, dword ptr [esp+$1C] //18
mov esi, eax
push edx
push flying
mov ecx, esi
call CallAddress2
mov ecx, dword ptr [edi+$14F0]
mov eax, x
mov dword ptr[esi+$20], eax
mov eax, z
mov dword ptr[esi+$24], eax
mov eax, y
mov dword ptr[esi+$28], eax
push 0
push esi
push 1
call CallAddress3
popad
end;
end;
function Walk(x,y,z: single): Boolean;
var
aParams: TParams;
begin
aParams.Param5:=0;
aParams.Param1 := PW_BASE_ADDRESS;
aParams.Param2 := walkx_inject_addr;
aParams.Param3 := walky_inject_addr;
aParams.Param4 := walkz_inject_addr;
aParams.Param7:=x;
aParams.Param8:=y;
aParams.Param9:=z;
Result := (aParams.Param1 <> 0) and (aParams.Param2 <> 0) and
(aParams.Param3 <> 0) and (aParams.Param4 <> 0);
if Result then
InjectFunc(hprocess,@WalkCall, @aParams, SizeOf(aParams));
end;
Крашится клиент, если есть у кого код на делфи (рабочий), можете предоставить?
22.02.2018, 00:17
#2
Разведчик
Регистрация: 06.02.2013
Сообщений: 24
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
Если ты этот код на руофе пытаешься запустить, то дело не в инжекте, а в устаревших офсетах. Если не руоф, то желательно указывать версию клиента.
П.С. С какого перепугу флаг полета 3х значное hex число?
0 - пешком, 1 - на полете
22.02.2018, 14:24
#3
Разведчик
Регистрация: 08.09.2017
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Как пройти по координатам?
Изначально я ставил на ноль, но клиент крашился и я перебирал все подряд, это РУОФФ
Офсеты BA верный, затем взял координаты с темки, но они могут быть не верными, как найти офсеты координат?
И еще, куда сувать WalkMode офсет?
23.02.2018, 09:14
#4
Разведчик
Регистрация: 06.02.2013
Сообщений: 24
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
Офсетам которые у тебя в инжекте уже больше года.
Поменяй и должно заработать, при условии что у тебя адреса функций правильные.
Код:
mov eax, BaseAddr
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+$1C]
mov edi, dword ptr [eax+$28] //должно быть 34
mov ecx, dword ptr [edi+$14F0] //должно быть 16E4
push 1
call CallAddress1
lea edx, dword ptr [esp+$1C] //должно быть 20
mov esi, eax
push edx
push flying
mov ecx, esi
call CallAddress2
mov ecx, dword ptr [edi+$14F0] //должно быть 16E4
mov eax, x
mov dword ptr[esi+$20], eax
mov eax, z
mov dword ptr[esi+$24], eax
mov eax, y
mov dword ptr[esi+$28], eax
push 0
push esi
push 1
call CallAddress3
popad
end;
end;
П.С. А зачем в инжекте ходьбы WalkMode офсет?
Последний раз редактировалось growl13; 23.02.2018 в 09:50 .
23.02.2018, 16:03
#5
Разведчик
Регистрация: 08.09.2017
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Как пройти по координатам?
Цитата:
Офсетам которые у тебя в инжекте уже больше года.
Поменяй и должно заработать, при условии что у тебя адреса функций правильные.
Код:
mov eax, BaseAddr
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+$1C]
mov edi, dword ptr [eax+$28] //должно быть 34
mov ecx, dword ptr [edi+$14F0] //должно быть 16E4
push 1
call CallAddress1
lea edx, dword ptr [esp+$1C] //должно быть 20
mov esi, eax
push edx
push flying
mov ecx, esi
call CallAddress2
mov ecx, dword ptr [edi+$14F0] //должно быть 16E4
mov eax, x
mov dword ptr[esi+$20], eax
mov eax, z
mov dword ptr[esi+$24], eax
mov eax, y
mov dword ptr[esi+$28], eax
push 0
push esi
push 1
call CallAddress3
popad
end;
end;
П.С. А зачем в инжекте ходьбы WalkMode офсет?
Просто не разу не писал софты для пв, поэтому не шибко шарю.
Поменял на то как ты сказал, все равно крашится
PW_BASE_ADDRESS = $00E7D398;
PackCall = $00843ad0;
Вот исход, можешь поглядеть что не так?
[
Ссылки могут видеть только зарегистрированные пользователи. ]
23.02.2018, 22:23
#6
Разведчик
Регистрация: 12.08.2012
Сообщений: 26
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
Не уверен:
а ida декомпилит как DWORD
Код:
.text:004EC720 sub_4EC720 proc near ; CODE XREF: sub_4BF860+9F↑p
.text:004EC720 ; sub_4BF860+136↑p ...
.text:004EC720
.text:004EC720 var_24 = dword ptr -24h
.text:004EC720 var_20 = dword ptr -20h
.text:004EC720 var_1C = dword ptr -1Ch
.text:004EC720 var_18 = dword ptr -18h
.text:004EC720 var_14 = dword ptr -14h
.text:004EC720 var_10 = dword ptr -10h
.text:004EC720 var_C = byte ptr -0Ch
.text:004EC720 arg_0 = dword ptr 4
.text:004EC720 arg_4 = dword ptr 8
Код:
void __thiscall sub_4EC720(int this, int a2, float *a3)
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
24.02.2018, 01:18
#7
Разведчик
Регистрация: 08.09.2017
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Как пройти по координатам?
Тут дворд, просто смайл d сожрал
24.02.2018, 18:51
#8
Разведчик
Регистрация: 12.08.2012
Сообщений: 26
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
BaseAddr := Pointer(PW_BASE_ADDRESS);
я испытал константы в делфи, они компилируются как переменные (в отличие от C), компилятор просто выдает ошибку при попытке присвоить ей значение, но дает записать по указателю на константу.
тем самым у тебя в чужом процессе нет адреса константы или он не тот.
для теста вместо константы подставь число и попробуй, если сработает, попробуй в TParams добавить поле для PW_BASE_ADDRESS.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось dvamaster; 24.02.2018 в 18:54 .
25.02.2018, 12:23
#9
Разведчик
Регистрация: 25.02.2018
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Как пройти по координатам?
А можно пожалуйста, это же, только на Autoit?)
28.02.2018, 00:33
#10
Разведчик
Регистрация: 06.02.2013
Сообщений: 24
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
Дак у тебя ж еще и некоторые данные не в те регистры записыватся
Вот тебе короч код инжекта который использую я.
Красным выделил где у тебя неправильно.
Можешь брать этот или поменять в своем регистры на правильные, должно и так и так работать(при условии что у тебя кроме асма все правильно).
Код:
pushad
mov eax,[BaseAddr ]
mov eax,[eax+1C]
mov esi ,[eax+34]
mov ecx,[esi+000016E4]
push 01
call MoveAddress1
lea edx,[esp+20]
mov ebx ,eax
push edx
push Flying
mov ecx,ebx
call MoveAddress2
mov ecx,[esi +000016E4]
mov [ebx +20], x
mov [ebx +24], z
mov [ebx +28], y
push 00
push ebx
push 01
call MoveAddress3
popad
ret
28.02.2018, 00:45
#11
Разведчик
Регистрация: 08.09.2017
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Как пройти по координатам?
Цитата:
Дак у тебя ж еще и некоторые данные не в те регистры записыватся
Вот тебе короч код инжекта который использую я.
Красным выделил где у тебя неправильно.
Можешь брать этот или поменять в своем регистры на правильные, должно и так и так работать(при условии что у тебя кроме асма все правильно).
Код:
pushad
mov eax,[BaseAddr ]
mov eax,[eax+1C]
mov esi ,[eax+34]
mov ecx,[esi+000016E4]
push 01
call MoveAddress1
lea edx,[esp+20]
mov ebx ,eax
push edx
push Flying
mov ecx,ebx
call MoveAddress2
mov ecx,[esi +000016E4]
mov [ebx +20], x
mov [ebx +24], z
mov [ebx +28], y
push 00
push ebx
push 01
call MoveAddress3
popad
ret
Мой код тоже работает, бегает.
Дай свой контакт, вк\скайп\аську , что угодно, есть пару вопросов)
28.02.2018, 01:06
#12
Разведчик
Регистрация: 06.02.2013
Сообщений: 24
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 3 раз(а) в 2 сообщениях
Re: Как пройти по координатам?
дак на жуке в личку пиши да и все
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 11:28 .