Перейти к содержанию

[Royal Quest] Телепорт, не выходит сохранить коорд.


Рекомендуемые сообщения

Посмотрел видео и захотелось сделать телепорт в игре Роял Квест, по видео сделал код, но мне кажется из-за того что нет свободных регистров координаты ни куда не сохраняются.
 

Скрытый текст

[ENABLE]
aobscanmodule(Teleport,gaxomofy.dll,89 0B 89 E1 89 8F 98 6C 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(coord)
label(tflag)
registersymbol(tflag)

newmem:
cmp byte ptr [tflag],0
je code
cmp byte ptr [tflag],1
jne @F
push eax
mov eax,[ebx]
mov [coord],eax
mov eax,[ebx+4]
mov [coord+4],eax
pop eax
mov byte ptr [tflag],0
jmp code

@@:
cmp byte ptr [tflag],2
jne code
push eax
mov eax,[coord]
mov [ebx],eax
mov eax,[coord+4]
mov [ebx+4],eax
pop eax
mov byte ptr [tflag],0

code:
  mov [ebx],ecx
  mov ecx,esp
  mov [edi+00006C98],ecx
  jmp return

  tflag:
  db 00
  coord:
  db 00 00 00 00 00 00 00 00

Teleport:
  jmp newmem
  nop
  nop
  nop
  nop
  nop
return:
registersymbol(Teleport)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Teleport:
  db 89 0B 89 E1 89 8F 98 6C 00 00
unregistersymbol(Teleport)
unregistersymbol(tflag)
dealloc(newmem)

 

Или что-то не так делаю?
По EBX находится одна координата без смещения, на +4 вторая координата, третей нет, пробовал в ручную вписать коорды, возвращался куда нужно, но когда пользуюсь скриптом ничего не происходит, я взял левый регистр и подумал что если пушнуть то он очиститься  и там запишутся корды для сохранения нет?
Исправление: Посмотрел коорды записываются в этот регистр, почему телепорт не срабатывает, не вписывается что ли?

// Для читабельности пользуемся тегом  кода. Garik66

Ссылка на комментарий
Поделиться на другие сайты

Скрытый текст

{ Game   : rqmain.exe
  Version: 
  Date   : 2017-08-12
  Author : User

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJECT3,rqmain.exe,8B 96 68 0B 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(savemem)
label(loadmem)
label(coordone)
label(coordtwo)
label(teleport)
label(savecoord)
registersymbol(coordone)
registersymbol(coordtwo)
registersymbol(teleport)
registersymbol(savecoord)

newmem:
  cmp [savecoord],1
  je savemem
  cmp [teleport],1
  je loadmem
  jmp code

savemem:
  push [esi+00000B64]
  pop [coordone]
  push [esi+00000B68]
  pop [coordtwo]
  mov [savecoord],0
  jmp code

loadmem:
  cmp [coordone],0
  je code
  push [coordone]
  pop [esi+00000B64]
  push [coordtwo]
  pop [esi+00000B68]
  mov [teleport],0
  jmp code

code:
  mov edx,[esi+00000B68]
  jmp return

coordone:
  dd 0
coordtwo:
  dd 0
teleport:
  dd 0
savecoord:
  dd 0

INJECT3:
  jmp newmem
  nop
return:
registersymbol(INJECT3)

[DISABLE]

INJECT3:
  db 8B 96 68 0B 00 00

unregistersymbol(INJECT3)
unregistersymbol(coordone)
unregistersymbol(coordtwo)
unregistersymbol(teleport)
unregistersymbol(savecoord)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "rqmain.exe"+CB97B

"rqmain.exe"+CB964: 53                    -  push ebx
"rqmain.exe"+CB965: 56                    -  push esi
"rqmain.exe"+CB966: 8B F1                 -  mov esi,ecx
"rqmain.exe"+CB968: 8B 08                 -  mov ecx,[eax]
"rqmain.exe"+CB96A: 8B 40 08              -  mov eax,[eax+08]
"rqmain.exe"+CB96D: 57                    -  push edi
"rqmain.exe"+CB96E: 89 4C 24 24           -  mov [esp+24],ecx
"rqmain.exe"+CB972: 8D 4C 24 1C           -  lea ecx,[esp+1C]
"rqmain.exe"+CB976: 51                    -  push ecx
"rqmain.exe"+CB977: 89 54 24 2C           -  mov [esp+2C],edx
// ---------- INJECTING HERE ----------
"rqmain.exe"+CB97B: 8B 96 68 0B 00 00     -  mov edx,[esi+00000B68]
// ---------- DONE INJECTING  ----------
"rqmain.exe"+CB981: 6A 00                 -  push 00
"rqmain.exe"+CB983: 52                    -  push edx
"rqmain.exe"+CB984: 89 44 24 38           -  mov [esp+38],eax
"rqmain.exe"+CB988: E8 15 9A 2E 00        -  call rqmain.exe+3B53A2
"rqmain.exe"+CB98D: 8B 8E 64 0B 00 00     -  mov ecx,[esi+00000B64]
"rqmain.exe"+CB993: F3 0F 10 44 24 1C     -  movss xmm0,[esp+1C]
"rqmain.exe"+CB999: 8D 44 24 10           -  lea eax,[esp+10]
"rqmain.exe"+CB99D: 50                    -  push eax
"rqmain.exe"+CB99E: 6A 00                 -  push 00
"rqmain.exe"+CB9A0: 51                    -  push ecx
}

 

Вынеси в таблицу [ teleport ] и [ savecoord ] после сначала установи в адресе [ savecoord ] 1 и после чего  можешь в адресе [ teleport ] установить 1 и переместишься в сохраненные координаты.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, what228 сказал:
  Показать содержимое

 

Вынеси в таблицу [ teleport ] и [ savecoord ] после сначала установи в адресе [ savecoord ] 1 и после чего  можешь в адресе [ teleport ] установить 1 и переместишься в сохраненные координаты.

А зачем так делать если флаг сохраняет и вроде должен записывать как по видео.

+ не понимаю как.
когда я жму клавишу (для себя поставил нумпад+) во флаге байт меняется на  1 срабатывает на флаге и сохраняются координаты в регистре,  нажимаю нумад - 2 по идеи должно записаться.

Как на видео

Изменено пользователем TheErel
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, TheErel сказал:

А зачем так делать если флаг сохраняет и вроде должен записывать как по видео.

+ непонимаю как.

Ты хочешь сделать телепорт но откуда ты будешь брать координату для телепорта?
По этому ты сохраняешь сначала координаты а после делаешь туда телепорт.
Не понимаешь что? Как добавить адрес в таблицу?
Нажми "Add Address Manually" и в строке "Address" напиши "teleport" и нажми "OK"
Потом еще один адрес "savecoord" добавь так же.

После меняешь число в адресе с 0 на 1 и все.
И можешь назначать горячие клавиши на них.

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, what228 сказал:

Ты хочешь сделать телепорт но откуда ты будешь брать координату для телепорта?


ebx 
ebx+4

 

а флаг тогда зачем?
Флаг же делает 1 и 2 , 1 сохраняет, 2 телепортирует, трижды смотрел видео, я что-то не понимаю?

Изменено пользователем TheErel
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, what228 сказал:

Я дал тебе скрипт который я уже проверил в игре. Используй его.

Я не понимаю, как сработает savecord и teleport если этих символов нет у меня в скрипте?
Мне тяжело далось это видео я просто не понимаю это получаеться мне нужно сделать флаг teleport и флаг savecord ?

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, TheErel сказал:

Посмотрел коорды записываются в этот регистр, почему телепорт не срабатывает, не вписывается что ли?

Скрипт у тебя верный (я бы конечно убрал из него много лишнего), дело думаю в инструкции, скорее всего она работает не только с координатами твоего героя ()нужен фильтр) и ты случайным образом телепортируешь кого-то ещё.

Проверь с какими адресами работает твоя инструкция. ПКМ в отладчике по инструкции.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Только что, TheErel сказал:

Я не понимаю, как сработает savecord и teleport если этих символов нет у меня в скрипте?
Мне тяжело далось это видео я просто не понимаю это получаеться мне нужно сделать флаг teleport и флаг savecord ?

Нажми сюда:
598f4796a0d09_.png.3048e43689d66ec40ef45608e8f8d801.png
И будет мой скрипт.

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Garik66 сказал:

Скрипт у тебя верный (я бы конечно убрал из него много лишнего), дело думаю в инструкции, скорее всего она работает не только с координатами твоего героя ()нужен фильтр) и ты случайным образом телепортируешь кого-то ещё.

Проверь с какими адресами работает твоя инструкция. ПКМ в отладчике по инструкции.

Благодарю, не заметил, работает еще с 8 чем-то.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Garik66 сказал:

Скрипт у тебя верный (я бы конечно убрал из него много лишнего), дело думаю в инструкции, скорее всего она работает не только с координатами твоего героя ()нужен фильтр) и ты случайным образом телепортируешь кого-то ещё.

 

В инструкции ТС только 3 адреса и они связанные с героем.
1. Координата 1

2. Координата 2

3. Координата 3 ( скорее всего )
В его адресе идет запись из ecx в [ebx] и если делать скрипт на той инструкции то могут быть проблемы ( возможно только я столкнулся с ними :D ).

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, TheErel сказал:

Благодарю, не заметил, работает еще с 8 чем-то.

У @what228 скрипт основан на другой инструкции (раскрой спойлер), которая работает только с координатами ГГ. И фильтр соответственно он не использует.

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, what228 сказал:

В инструкции ТС только 3 адреса и они связанные с героем.
1. Координата 1

2. Координата 2

3. Координата 3 ( скорее всего )
В его адресе идет запись из ecx в [ebx] и если делать скрипт на той инструкции то могут быть проблемы ( возможно только я столкнулся с ними :D ).

Не заметил что ты работал с другой инструкцией, у тебя в коде меньше надписей чем у меня, я думал что бы зарегистрировать коорды нужен регистр вообще не понятно как но у тебя проще код выглядит, ууу.

Ссылка на комментарий
Поделиться на другие сайты

20 минут назад, Garik66 сказал:

Скрипт у тебя верный (я бы конечно убрал из него много лишнего)

 

А имено?
Я смотрел по видео так что я не знал как можно упростить.
Да если использую его скрипт игра вылетает.
Но я уже понял что не с тем работаю ну или сделаю фильтр

Ссылка на комментарий
Поделиться на другие сайты

27 минут назад, TheErel сказал:

А имено?

Если бы выложил скрипт с ЛОГАМИ было бы проще, а так:

Скрытый текст

[ENABLE]
aobscanmodule(Teleport,gaxomofy.dll,89 0B 89 E1 89 8F 98 6C 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(coord)
label(tflag)
registersymbol(tflag)
registersymbol(Teleport)

newmem:
cmp [tflag],1
jne @F
push eax
mov eax,[ebx]
mov [coord],eax
mov eax,[ebx+4]
mov [coord+4],eax
pop eax
mov [tflag],0
jmp code

@@:
cmp [coord],0
je code
cmp [tflag],2
jne code
push eax
mov eax,[coord]
mov [ebx],eax
mov eax,[coord+4]
mov [ebx+4],eax
pop eax
mov [tflag],0

code:
  mov [ebx],ecx
  mov ecx,esp
  mov [edi+00006C98],ecx
  jmp return

tflag:
  dd 00
coord:
  db 00 00 00 00 00 00 00 00

Teleport:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
Teleport:
  db 89 0B 89 E1 89 8F 98 6C 00 00
unregistersymbol(Teleport)
unregistersymbol(tflag)
dealloc(newmem)

 

Зы ну и само собой нужно добавить фильтр в скрипт.

 

 

// Поправил  49 строку кода у тебя там было "ви" а не "db"
// what228

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, TheErel сказал:

Да.
может мои где-то срабатывают еще, по новой сделаю по твоему примеру, у тебя так упрощено.

Ты явно ошибку допускаешь где-то.
Возможно метка INJECT3 у тебя уже есть.

 // Сенк за правку. Garik66

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, what228 сказал:

Ты явно ошибку допускаешь где-то.
Возможно метка INJECT3 у тебя уже есть.

Все вышло, благодарю.

Удобный у тебя код)

Ссылка на комментарий
Поделиться на другие сайты

Скажи что не так делаю какой раз вникаю уже кровь с ушей голова болит а я бьюсь с этой дрянью
Мне нужно что бы сохранять не одну позиции а две.

 

Скрытый текст

[ENABLE]
aobscanmodule(TeleportHack,rqmain.exe,8B 96 68 0B 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(savemem)
label(loadmem)
label(coordone)
label(coordtwo)
label(teleport)
label(savecoord)
registersymbol(coordone)
registersymbol(coordtwo)
registersymbol(teleport)
registersymbol(savecoord)
label(savemem1)
label(loadmem1)
label(coordone1)
label(coordtwo1)
label(teleport1)
label(savecoord1)
registersymbol(coordone1)
registersymbol(coordtwo1)
registersymbol(teleport1)
registersymbol(savecoord1)
newmem:
cmp [savecoord],1
je savemem
cmp [teleport],1
je loadmem
cmp [savecoord1],1
je savemem1
cmp [teleport1],1
je loadmem1
jmp code
savemem:
push [esi+00000B64]
pop [coordone]
push [esi+00000B68]
pop [coordtwo]
mov [savecoord],0
jmp code
savemem1:
push [esi+00000B64]
pop [coordone1]
push [esi+00000B68]
pop [coordtwo1]
mov [savecoord1],0
jmp code
loadmem:
cmp [coordone],0
je code
push [coordone]
pop [esi+00000B64]
push [coordtwo]
pop [esi+00000B68]
mov [teleport],0
jmp code
loadmem1:
cmp [coordone1],0
je code
push [coordone1]
pop [esi+00000B64]
push [coordtwo1]
pop [esi+00000B68]
mov [teleport1],0
jmp code
code:
  mov edx,[esi+00000B68]
  jmp return
  coordone:
  dd 0
coordtwo:
  dd 0
teleport:
  dd 0
savecoord:
  dd 0
    coordone1:
  dd 0
coordtwo1:
  dd 0
teleport1:
  dd 0
savecoord1:
  dd 0


TeleportHack:
  jmp newmem
  nop
return:
registersymbol(TeleportHack)

[DISABLE]
TeleportHack:
  db 8B 96 68 0B 00 00

unregistersymbol(TeleportHack)
unregistersymbol(coordone)
unregistersymbol(coordtwo)
unregistersymbol(teleport)
unregistersymbol(savecoord)
unregistersymbol(coordone1)
unregistersymbol(coordtwo1)
unregistersymbol(teleport1)
unregistersymbol(savecoord1)
dealloc(newmem)

 

 

 

// Используй именно тег кода, а не симплета. Garik66

ЗЫ: @TheErel Если не знаешь как это делать, вот посмотри видео. Garik66

Ссылка на комментарий
Поделиться на другие сайты

49 минут назад, TheErel сказал:

Скажи что не так делаю какой раз вникаю уже кровь с ушей голова болит а я бьюсь с этой дрянью

Все так у тебя. Только что проверил.
Выносишь savecoord1 и teleport1 в таблицу и все.

Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, what228 сказал:

Все так у тебя. Только что проверил.
Выносишь savecoord1 и teleport1 в таблицу и все.

Я так и делал, но в итоге там ставится значение 1 и все и не обнуляется

Ссылка на комментарий
Поделиться на другие сайты

Только что, TheErel сказал:

Я так и делал, но в итоге там ставится значение 1 и все и не обнуляется

Я только что проверил. Все работает.
Скорее всего ошибка на твоей стороне ( я взял твой скрипт а не свой делал )

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.