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

[Autoassembler] Не понятно, почему вылетает игра.


Desmos

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

Почему этот код работает без вылетов

Спойлер

[ENABLE]

aobscan(INJECT,F3 0F 7E 4E 20 8B 77)
alloc(newmem,$1000)
alloc(coords,$1000)
label(code)
label(return)
registersymbol(coords)

coords:
  db 00 00 00 00


newmem:
  mov [coords],100
  jmp code
code:
  movq xmm1,[esi+20]
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 7E 4E 20

unregistersymbol(INJECT)
unregistersymbol(coords)
dealloc(newmem)

 

А если в коде вместо alloc(coords, $1000) в 6-й строке поставить label(coords), то по какой причине игра вылетает? Как тогда в других скриптах достаточно для инициализации метки указать label(...) и объявить её через db?

Вот собственно код, который не работает (игра вылетает). Как раз здесь заменена строка alloc(coords, $1000) на label(coords)

Спойлер

[ENABLE]

aobscan(INJECT,F3 0F 7E 4E 20 8B 77)
alloc(newmem,$1000)
label(coords)
label(code)
label(return)
registersymbol(coords)

coords:
  db 00 00 00 00


newmem:
  mov [coords],100
  jmp code
code:
  movq xmm1,[esi+20]
  jmp return

INJECT:
  jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db F3 0F 7E 4E 20

unregistersymbol(INJECT)
unregistersymbol(coords)
dealloc(newmem)

 

 

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

2 часа назад, Hack сказал:

newmem:
  mov [coords],100
  jmp code

code:
  movq xmm1,[esi+20]
  jmp return

coords:
  db 00 00 00 00

INJECT:
  jmp newmem

 

Спасибо, заработало, чтобы тема не пропадала зря, выложу свой код. Думаю, это неплохой пример слияния (совмещения, объединения) двух скриптов в один. Первый скрипт (inject1) ищет сигнатуру, которая обращается к координатам персонажа. Секция newmem1 записывает координаты нашего персонажа в глобальную метку coords (координаты тип double). Второй скрипт (inject2) ищет сигнатуру, обращающуюся к координатам выпадающего дропа на карте. В итоге, второй скрипт в newmem2 записывает значения координат персонажа, которые добыл нам первый скрипт, в координаты дропа. В итоге, все выпадающие припасы телепортируются к персонажу, и он подбирает их.

Вот код

Спойлер

[ENABLE]

aobscan(INJECT1,F3 0F 7E 4E 20 8B 77)
aobscan(INJECT2,74 XX F3 0F 7E 42 20 XX XX 74 XX 66 0F D6 41 78 8B 4D F0)
alloc(newmem1,$1000)
label(newmem2)
label(code1)
label(code2)
label(return1)
label(return2)
label(coords)
registersymbol(coords)

newmem1:
  fld qword ptr [esi+10]
  fstp qword ptr [coords]
  fld qword ptr [esi+18]
  fstp qword ptr [coords+08]
  fld qword ptr [esi+20]
  fstp qword ptr [coords+10]
  jmp code1

code1:
  movq xmm1,[esi+20]
  jmp return1

newmem2:
  fld qword ptr [coords]
  fstp qword ptr [edx+10]
  fld qword ptr [coords+08]
  fstp qword ptr [edx+18]
  fld qword ptr [coords+10]
  fstp qword ptr [edx+20]
  jmp code2

code2:
  movq xmm0,[edx+20]
  jmp return2

coords:
  db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

INJECT1:
  jmp newmem1
return1:
registersymbol(INJECT1)

INJECT2+02:
  jmp newmem2
return2:
registersymbol(INJECT2)


[DISABLE]

INJECT1:
  db F3 0F 7E 4E 20
INJECT2+02:
  db F3 0F 7E 42 20

unregistersymbol(INJECT1)
unregistersymbol(INJECT2)
unregistersymbol(coords)
dealloc(newmem1)

 

 

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

1 час назад, Desmos сказал:

В итоге, все выпадающие припасы телепортируются к персонажу, и он подбирает их.

Ты бы хоть название и версию игры указал, что ли...

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

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

Ты бы хоть название и версию игры указал, что ли...

Да, извини, я что-то пожадничал) Это браузерная игра Gtanks или старые танки онлайн.

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

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

Да, извини, я что-то пожадничал

Бывает ) В целом, я думаю, можно оформить отдельной темой в разделе "Наши релизы - Скрипты", если хочешь поделиться со всеми желающими.

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

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

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

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