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

[ Royal Quest ] Как заставить работать скрипт?


Гость TheEreI

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

Здравствуйте, недавно наткнулся на такой скрипт для игры Royal Quest:

 

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

[ENABLE]
aobscanmodule(INJECT,rqmain.exe,D8 0D 34 C0 B5 01) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
newmem:
code:
  fmul dword ptr [rqmain.exe+78C044]
  jmp return
INJECT:
  jmp code
  nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
  db D8 0D 34 C0 B5 01
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "rqmain.exe"+26F74
"rqmain.exe"+26F55: DC E9                    -  fsub st(1),st(0)
"rqmain.exe"+26F57: 51                       -  push ecx
"rqmain.exe"+26F58: D9 05 2C C0 B5 01        -  fld dword ptr [rqmain.exe+78C02C]
"rqmain.exe"+26F5E: D8 C9                    -  fmul st(0),st(1)
"rqmain.exe"+26F60: D9 05 30 C0 B5 01        -  fld dword ptr [rqmain.exe+78C030]
"rqmain.exe"+26F66: D8 CB                    -  fmul st(0),st(3)
"rqmain.exe"+26F68: DE C1                    -  faddp 
"rqmain.exe"+26F6A: DD 05 98 6A 99 01        -  fld qword ptr [rqmain.exe+5C6A98]
"rqmain.exe"+26F70: DC C9                    -  fmul st(1),st(0)
"rqmain.exe"+26F72: D9 CA                    -  fxch st(2)
// ---------- INJECTING HERE ----------
"rqmain.exe"+26F74: D8 0D 34 C0 B5 01        -  fmul dword ptr [rqmain.exe+78C034]
// ---------- DONE INJECTING  ----------
"rqmain.exe"+26F7A: D9 05 38 C0 B5 01        -  fld dword ptr [rqmain.exe+78C038]
"rqmain.exe"+26F80: DE CC                    -  fmulp st(4),st(0)
"rqmain.exe"+26F82: DE C3                    -  faddp st(3),st(0)
"rqmain.exe"+26F84: D9 CA                    -  fxch st(2)
"rqmain.exe"+26F86: DE C9                    -  fmulp st(1),st(0)
"rqmain.exe"+26F88: D8 C1                    -  fadd st(0),st(1)
"rqmain.exe"+26F8A: D8 0D 94 68 99 01        -  fmul dword ptr [rqmain.exe+5C6894]
"rqmain.exe"+26F90: D9 54 24 1C              -  fst dword ptr [esp+1C]
"rqmain.exe"+26F94: DE E9                    -  fsubp st(1),st(0)
"rqmain.exe"+26F96: D9 1C 24                 -  fstp dword ptr [esp]
}

 

// Если код 10 строк или больше нужно использовать тег спойлера, тег кода использовать всегда. Garik66

Он, как не удивительно, не работает. Сам я ничего не понимаю в скриптинге, но наткнулся на строку "// should be unique" после адреса (D8 0D 34 C0 B5 01). Я так понимаю, что этот адрес уникален,и именно из-за этого ничего не работает. Соотв. как мне найти мой "адрес", что бы скрипт начал срабатывать? Прошу прощения что пишу настолько глупые вопросы, но я даже не знаю как правильно это прогуглить. Буду благодарен за любую помощь/подсказки.

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

7 минут назад, TheEreI сказал:

Он, как не удивительно, не работает.

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

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

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

 Это не скрипт, а просто указана инструкция,

В той сборке несколько таких "инструкций" (Просто прописано value <script>, вот и назвал скриптом, глупый я). 2 из них работают с камерой. Первый работает - позволяет убрать ограничения при опускании камеры до земли, а этот не активируется(по ожиданиям вообще должен откреплят камеру от игрока). И все из-за этого "адреса".

Даже если взять более понятный (по назначению) неработающий <script> (Unlimited camera zoom)

 

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

[ENABLE]

aobscanmodule(INFINITECAMERAZOOM,rqmain.exe,F3 0F 10 05 24 C0 B5 01) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  movss xmm1,[rqmain.exe+78C024]
  jmp return

INFINITECAMERAZOOM:
  jmp code
  nop
  nop
  nop
return:
registersymbol(INFINITECAMERAZOOM)

[DISABLE]

INFINITECAMERAZOOM:
  db F3 0F 10 05 24 C0 B5 01

unregistersymbol(INFINITECAMERAZOOM)
dealloc(newmem)

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

"rqmain.exe"+269F6: 8D 5E 44                 -  lea ebx,[esi+44]
"rqmain.exe"+269F9: F3 0F 11 03              -  movss [ebx],xmm0
"rqmain.exe"+269FD: F3 0F 11 4E 3C           -  movss [esi+3C],xmm1
"rqmain.exe"+26A02: 84 C9                    -  test cl,cl
"rqmain.exe"+26A04: 74 0A                    -  je rqmain.exe+26A10
"rqmain.exe"+26A06: F3 0F 10 44 24 5C        -  movss xmm0,[esp+5C]
"rqmain.exe"+26A0C: F3 0F 11 03              -  movss [ebx],xmm0
"rqmain.exe"+26A10: 8B 4E 70                 -  mov ecx,[esi+70]
"rqmain.exe"+26A13: D9 05 28 C0 B5 01        -  fld dword ptr [rqmain.exe+78C028]
"rqmain.exe"+26A19: 8B 11                    -  mov edx,[ecx]
// ---------- INJECTING HERE ----------
"rqmain.exe"+26A1B: F3 0F 10 05 24 C0 B5 01  -  movss xmm0,[rqmain.exe+78C024]
// ---------- DONE INJECTING  ----------
"rqmain.exe"+26A23: 8B 42 18                 -  mov eax,[edx+18]
"rqmain.exe"+26A26: 51                       -  push ecx
"rqmain.exe"+26A27: D9 1C 24                 -  fstp dword ptr [esp]
"rqmain.exe"+26A2A: F3 0F 11 44 24 1C        -  movss [esp+1C],xmm0
"rqmain.exe"+26A30: FF D0                    -  call eax
"rqmain.exe"+26A32: D9 5C 24 20              -  fstp dword ptr [esp+20]
"rqmain.exe"+26A36: 8A 4C 24 0E              -  mov cl,[esp+0E]
"rqmain.exe"+26A3A: 0F 57 C0                 -  xorps xmm0,xmm0
"rqmain.exe"+26A3D: F3 0F 10 44 24 20        -  movss xmm0,[esp+20]
"rqmain.exe"+26A43: 0F 57 C9                 -  xorps xmm1,xmm1
}

 

то он тоже требует свой "адрес". А как его подставить (отыскать) - фиг его знает. Или я вообще глупец, и "// should be unique" после адреса это не намек на корректировку, а так и должно быть?

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

Потому что сигнатура не уникальна т.к. то что ты скачал явно для старых версий игры.
Попробуй:

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

[ENABLE]
aobscanmodule(InfZoom,rqmain.exe, F3 0F xx xx xx xx xx xx 8B xx xx 51 D9 1C)
alloc(newmem,$1000)
label(code)
label(return)

newmem:
code:
  movss xmm1,[rqmain.exe+7992C4]
  jmp return

InfZoom:
  jmp code
  nop
  nop
  nop
return:
registersymbol(InfZoom)

[DISABLE]
InfZoom:
  db F3 0F 10 05 C4 92 99 00

unregistersymbol(InfZoom)
dealloc(newmem)

 

 

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

Ему не надо указывать адреса.. Он включит и игра отвалится. 

[ENABLE]
aobscan(qwe,D9 05 * * * * 8B * F3 0F 10 05 * * * * 8B 42 18)
registersymbol(qwe)
qwe+08:
[DISABLE]
qwe+08:
unregistersymbol(qwe)

 

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

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

Попробуй:

 

Благодарю, этот работает. Но возвращаясь к изначальному варианту (инструкции, скрипта, не знаю как называть) - никак нельзя открепить камеру от персонажа? Иногда во время лагов это происходило.. 

 

P.s прошу прощения за назойливость, заставляю людей думать... :(

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

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

Благодарю, этот работает.

Цитировать нужно лишь часть на которую отвечаешь ( примерно кака я ) без вставок ( код\спойлер и т.д. )

 

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

никак нельзя открепить камеру от персонажа?

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

 

5 минут назад, TheEreI сказал:

прощения за назойливость

В этом нет ничего страшного.

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

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

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

 

Сложно.. Ладно, будем химичить, благодарю за ответы.)

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

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

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

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