Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Нуждаюсь в помощи по инжекту WalkCall

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 06.10.2011, 13:52   #1
 Пехотинец
Аватар для Dremalka
 
Dremalka на правильном путиDremalka на правильном пути
Регистрация: 02.09.2011
Сообщений: 89
Популярность: 157
Сказал(а) спасибо: 13
Поблагодарили 46 раз(а) в 10 сообщениях
 
По умолчанию Нуждаюсь в помощи по инжекту WalkCall

Здравствуйте!
Не могу заставить перса бежать в определенную точку. Клиент падает в ошибку. Подскажите, пожалуйста, что в моем коде неправильно. Пишу на Autoit.
Вот тут мой код. Тык
  Ответить с цитированием
Старый 06.10.2011, 14:31   #2
Заблокирован
 Рыцарь-капитан
Аватар для semoder
 
semoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе ценуsemoder знает себе цену
Регистрация: 02.05.2009
Сообщений: 525
Популярность: 4586
Золото Zhyk.Ru: 20
Сказал(а) спасибо: 37
Поблагодарили 767 раз(а) в 220 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

У меня инжект выглядит вот так (РУофф)...

Код:
Func AUTORUN($X, $Y, $Z, $PIDRUN)
    $X = ($X - 400) * 10
    $Y = ($Y - 550) * 10
    $Z = $Z * 10
    Local $RESULT, $PROCESS, $CODE_ADD, $THREAD, $PARAM_ADD
    Local $PARAM = DllStructCreate("float [3]")
    DllStructSetData($PARAM, 1, $X, 1)
    DllStructSetData($PARAM, 1, $Z, 2)
    DllStructSetData($PARAM, 1, $Y, 3)
    $RESULT = DllCall("Kernel32.Dll", "int", "OpenProcess", "int", 2035711, "int", 0, "int", $PIDRUN)
    $PROCESS = $RESULT[0]
    $RESULT = DllCall("Kernel32.dll", "ptr", "VirtualAllocEx", "int", $PROCESS, "ptr", 0, "int", DllStructGetSize($PARAM), "int", 4096, "int", 64)
    $PARAM_ADD = $RESULT[0]
    $RESULT = DllCall("kernel32.dll", "int", "WriteProcessMemory", "int", $PROCESS, "ptr", $PARAM_ADD, "ptr", DllStructGetPtr($PARAM), "int", DllStructGetSize($PARAM), "int", 0)
    Local $FLY = 0
    Local $MEMIDRUN = _MEMORYOPEN($PIDRUN)
    Local $A = _MEMORYREAD(_MEMORYREAD(_MEMORYREAD($BASEADD1C, $MEMIDRUN) + 32, $MEMIDRUN) + $OFFSET_CHECK_FLY, $MEMIDRUN)
    If $A = 2 Or $A = 1 Then
        $FLY = 1
    EndIf
    $OPCODE = ""
    PUSHAD()
    MOV_EDX($BASEADD)
    MOV_ECX_DWORD_PTR_EDX()
    MOV_EDX_DWORD_PTR_ECX_ADD(28)
    $OPCODE &= "8B7220"
    MOV_ECX_DWORD_PTR_ESI_ADD(4084)
    MOV_EAX_DWORD_PTR_ESI_ADD($OFFSET_CHECK_FLY)
    PUSH(1)
    MOV_EDX(4628224)
    CALL_EDX()
    MOV_EDI_EAX()
    PUSH($PARAM_ADD)
    PUSH($FLY)
    MOV_ECX_EDI()
    MOV_EDX(4645008)
    CALL_EDX()
    PUSH(0)
    PUSH(1)
    PUSH_EDI()
    PUSH(1)
    MOV_ECX_DWORD_PTR_ESI_ADD(4084)
    MOV_EDX(4629312)
    CALL_EDX()
    POPAD()
    RET()
    INJECTCODE($PIDRUN)
    $RESULT = DllCall("Kernel32.dll", "ptr", "VirtualFreeEx", "hwnd", $PROCESS, "ptr", DllStructGetPtr($PARAM), "int", DllStructGetSize($PARAM), "int", 32768)
    DllCall("Kernel32.dll", "int", "CloseHandle", "int", $PROCESS)
EndFunc
З.Ы.
$BASEADD = 10860812
$BASEADD1C = 10862540
$OFFSET_CHECK_FLY = 1580
  Ответить с цитированием
Старый 06.10.2011, 14:33   #3
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Интересный инжект. Я другой юзаю, код из FlyWQ. без всяких вызовов процедур да и код проще..

Код:
MoveTo(X, Y, Z, moveType, client, actionStruct, height=-1.0)
{
	actionList := ReadMemory(actionStruct+0x30,client)
	MoveAction := ReadMemory(actionList+0x4,client)

	writeMemory(0, MoveAction+0x8, client)				;Action finished = 0
	writeMemory(1, MoveAction+0x14, client)				;Action Start = 1	
	writeMemory(X, MoveAction + 0x20, client)
	writeMemory(Y, MoveAction + 0x24, client)
	writeMemory(Z, MoveAction + 0x28, client)
	writeMemory(FloatToHex(height), MoveAction + 0x68, client)
	if(height >= 0.0)
	{
		writeMemory(26625, MoveAction + 0x64, client)
		writeMemory(256, MoveAction + 0x6C, client) 
	}
	else 
	{
		writeMemory(26624, MoveAction + 0x64, client)
		writeMemory(65536, MoveAction + 0x6C, client) 
	}
	writeMemory(moveType, MoveAction + 0x2C, client)		;Not supported yet
	writeMemory(MoveAction, actionstruct+0xC, client)
	writeMemory(1, actionstruct+0x18, client)
	writeMemory(moveAction, actionstruct+0x14, client)
}
Добавлено через 2 минуты
данный код работает везде - в мире, в данжах - мой патибот замечательно бегает за игроком)

Кому надо - могу код на шарпе дать, но код там точно такой же)

Последний раз редактировалось N00bSa1b0t; 06.10.2011 в 14:35. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 06.10.2011, 18:03   #4
 Пехотинец
Аватар для Dremalka
 
Dremalka на правильном путиDremalka на правильном пути
Регистрация: 02.09.2011
Сообщений: 89
Популярность: 157
Сказал(а) спасибо: 13
Поблагодарили 46 раз(а) в 10 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Побежал родимый!

semoder и N00bSa1b0t, спасибо вам большое за помощь.

N00bSa1b0t, сколько искал информацию по инжектам, не встречал такую, что через структуру действий можно гонять перса по координатам. Очень интересно. Обязательно попробую его реализовать.

Еще раз спасибо.
  Ответить с цитированием
Старый 06.10.2011, 18:58   #5
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

а чему равно actionStruct?)
BA +1C +20 +?
  Ответить с цитированием
Старый 06.10.2011, 21:35   #6
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
а чему равно actionStruct?)

GameRun + HostPlayerStruct + playerActionStructOffset
то есть для руоффа:
0xA5BFCC + 0x20 + 0xFF4

Цитата:
Сообщение от DremalkaПосмотреть сообщение
не встречал такую, что через структуру действий можно гонять перса по координатам.

Я сам это первый раз увидел в FlyWQ =) Мне стало интересно как там это реализовано - способ простой очень и действенным оказался)
  Ответить с цитированием
Старый 07.10.2011, 00:08   #7
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

MoveTo(X, Y, Z, moveType, client, actionStruct, height=-1.0)
а какие типы у параметров?
  Ответить с цитированием
Старый 07.10.2011, 04:07   #8
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

X Y Z - это ж координаты, по идее float. Хотя в самом FlyWQ это интовые числа. Но ведь размерность одинаковая (4 байта) поэтому одно и тоже значение можно интерпретировать и как float и как int32.
movetype всегда 1 (int32)
client - это просто ID процесса, с которым ты работаешь.
actionstruct - оффсет (int_ptr)
height - float
  Ответить с цитированием
Старый 07.10.2011, 16:13   #9
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

хммм.. ну почему нельзя писать понятным образом?
что значит можно интерпретировать? окей, интерпретируем 3.14 как int: 1078523331. одинаковый результат? что-то не похоже, так что размерность - не показатель того, что пихать можно любые значения. важен смысл, а не размер.
Цитата:
movetype всегда 1 (int32)

что всегда 1? равен 1? тогда зачем делать из него параметр?
или занимает один байт? тогда зачем в скобочках приписано int32? int32 это простой стандартный int, т.е. целое, 4 байта.
и ещё. где логика порядка параметров? : D
Функция(координаты, тип движения, процесс игры, структура, высота)
я бы сделал так:
MoteTo(GameProcessId, Struct, Type, X, Y, Z, Height);
причём, зачем указывать начало структуры, если мы указываем процесс игры, из который это начало можно получить парой операций? ну неужели для экономии.. ресурсов?

в общем, я рад, что у тебя работает, но описано всё не очень понятно.
  Ответить с цитированием
Старый 07.10.2011, 16:53   #10
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
что значит можно интерпретировать? окей, интерпретируем 3.14 как int: 1078523331. одинаковый результат? что-то не похоже, так что размерность - не показатель того, что пихать можно любые значения. важен смысл, а не размер.

Смысл важен для человека. Если ты координаты считал как инт, и отправляешь как инт - все работает.
Я просто сказал, что в FlyWQ координаты представлены в виде инта:
Код:
xCoord8348	:=	1150922672
xCoord8349	:=	3302385319
xCoord8350	:=	1148557837
xCoord8351	:=	3303292969
xCoord8352	:=	1142127397
Вот и все. Автору так было проще. Работает? Работает. Прилетел на точку, снял координаты - полетел дальше.

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
что всегда 1? равен 1? тогда зачем делать из него параметр?
или занимает один байт? тогда зачем в скобочках приписано int32? int32 это простой стандартный int, т.е. целое, 4 байта.

Зачем параметр - не знаю, спроси автора FlyWQ. Всегда равен 1, занимает 4 байта)

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
и ещё. где логика порядка параметров? : D

Опять-таки, вопрос не ко мне. Я лишь привел кусок исходника FlyWQ

PS
Если кто не понял, что такой FlyWQ - это вот это http://zhyk.ru/forum/showthread.php?t=117469
Правда в теме исходников нет, но вроде на пвлабе ссылка была.. или в другой какой-то теме, я успел скачать)
  Ответить с цитированием
Старый 07.10.2011, 17:09   #11
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

а, так не ты это написал.. ну Ctrl+C'n'Ctrl+V это конечно круто : D
рекомендую всё же переписывать так, как удобно тебе, чтобы хотя бы понимать, что в этом коде происходит и как работает.
  Ответить с цитированием
Старый 07.10.2011, 17:11   #12
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
рекомендую всё же переписывать так, как удобно тебе, чтобы хотя бы понимать, что в этом коде происходит и как работает.

А я и переписал для себя) Я ж на шарпе пишу, а это AutoIt или что-то такое)
  Ответить с цитированием
Старый 08.10.2011, 14:37   #13
 Разведчик
Аватар для rsam
 
rsam никому не известный тип
Регистрация: 18.09.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Цитата:
Сообщение от N00bSa1b0tПосмотреть сообщение
Зачем параметр - не знаю, спроси автора FlyWQ. Всегда равен 1, занимает 4 байта)
Опять-таки, вопрос не ко мне. Я лишь привел кусок исходника FlyWQ

Код:
setFlyTo(theId, xCoord, yCoord, zCoord, height)
{
	global
	local baseAddress := ReadMemory(realBaseAddress, theId)
	local structurePointer := ReadMemory(baseAddress + baseOffset, theId)
	local playerPointer := ReadMemory(structurePointer + playerOffset, theId)
	local actionStruct := ReadMemory(playerPointer + playerActionStructOffset, theId)

	MoveTo(Xcoord, Ycoord, Zcoord, 0, theId, actionStruct, height)
}
единственный вызов приведенной вами функции, как видно в 4м параметре передается 0. откуда появилась 1 в этом параметре?


Цитата:
Сообщение от N00bSa1b0tПосмотреть сообщение
PS
Если кто не понял, что такой FlyWQ - это вот это http://zhyk.ru/forum/showthread.php?t=117469
Правда в теме исходников нет, но вроде на пвлабе ссылка была.. или в другой какой-то теме, я успел скачать)

Исходники FlyWQ выложены автором [Ссылки могут видеть только зарегистрированные пользователи. ], включаемый файл [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 08.10.2011, 15:43   #14
 Старший сержант
Аватар для N00bSa1b0t
 
N00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядомN00bSa1b0t в состоянии испепелить взглядом
Регистрация: 09.04.2010
Сообщений: 204
Популярность: 5518
Сказал(а) спасибо: 49
Поблагодарили 512 раз(а) в 198 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

Цитата:
Сообщение от rsamПосмотреть сообщение
единственный вызов приведенной вами функции, как видно в 4м параметре передается 0. откуда появилась 1 в этом параметре?

Виноват, не туда посмотрел.
Но так как стоит комментарий
Код:
writeMemory(moveType, MoveAction + 0x2C, client)		;Not supported yet
то не думаю что это на что-то повлияет.

У меня в боте туда пишется 1 - и все равно все работает


Цитата:
Сообщение от rsamПосмотреть сообщение
Исходники FlyWQ выложены автором тут, включаемый файл тут

Не, я на том сайте был пару раз, значит исходник на пвлабе был)
  Ответить с цитированием
Старый 08.10.2011, 20:25   #15
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Нуждаюсь в помощи по инжекту WalkCall

насчёт параметра. да, если игрок управляет персонажем, то movetype принимает следующие состояния:
при прыжке 4.
при передвижении клавишами 3.
при передвижении щелчками мыши 0.
если щёлкать мышью не на объект, а на небо (т.е. указываем просто сторону, в которую надо бежать), то movetype равен 2.
movetype никогда не равен 1. если прописать такое значение, передвигая игрока одним из вышеописанных способов, то он стопроцентно останавливается (даже при прыжке в небе зависнет, кстати). это кроме зажатия клавиш - у них значение 3 будет перезаписываться многократно, пока клавиши нажаты.
вот такие вот дела.
  Ответить с цитированием
Пользователь сказал cпасибо:
N00bSa1b0t (09.10.2011)
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Нуждаюсь в помощи Toni Dja Общение и обсуждение, архив Lineage 2 0 19.12.2010 23:57

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 10:38.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net