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

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

Здравствуйте.

Я хотел сделать супер скорость и супер прыжок, но столкнулся с проблемой.С начала я нашел координаты персонажа:

https://prnt.sc/mcex57

В этой же структуре были и коэффициент ускорения:

https://prnt.sc/mcexiu

Я посмотрел какие инструкции записывают в адрес "коэффициент ускорения при прыжке" и у меня вышло это:

https://prnt.sc/mceyuc

Я попробовал сделать скрипт, на инструкцию когда персонаж прыгает, то есть в "[ecx]".Но не чего не изменилось, хотя когда я замораживал адрес "коэффициент ускорения при прыжке" персонаж поднимался в вверх.А на счет супер скорости, я не смог найти а где находил, то не мог понять, можете мне объяснить как сделать супер скорость.Просто когда я увеличивал "коэффициент ускорения при ходьбе" то персонажа просто тянуло в какую то сторону.

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

23 часа назад, mumut сказал:

Здравствуйте.

Я хотел сделать супер скорость и супер прыжок, но столкнулся с проблемой.С начала я нашел координаты персонажа:

https://prnt.sc/mcex57

В этой же структуре были и коэффициент ускорения:

https://prnt.sc/mcexiu

Я посмотрел какие инструкции записывают в адрес "коэффициент ускорения при прыжке" и у меня вышло это:

https://prnt.sc/mceyuc

Я попробовал сделать скрипт, на инструкцию когда персонаж прыгает, то есть в "[ecx]".Но не чего не изменилось, хотя когда я замораживал адрес "коэффициент ускорения при прыжке" персонаж поднимался в вверх.А на счет супер скорости, я не смог найти а где находил, то не мог понять, можете мне объяснить как сделать супер скорость.Просто когда я увеличивал "коэффициент ускорения при ходьбе" то персонажа просто тянуло в какую то сторону.

Как этот  коэффициент прыжка работает? Он на нуле, пока ты стоишь на месте, и при прыжке он получает отрицательное значение, которое постепенно сводится к нулю? Или как у тебя?     

 

Может ты написал в скрипте про прыжок что то типа такого?

(твой чит код)

fstp dword ptr [ecx]

 

Если твой чит код выполняется до выполнения оригинальной пишущей инструкции, то твой код считай не будет работать, ибо оригинальная инструкция тут же перезапишет твое значение на нормальное. Убедись, что твой код выполняется после того, как игра "фстэпнула"" свое значение в [ecx](то есть, напиши свой код под "fstp")

 

А вообще, точно "fstp" пишет при самом прыжке? Может он пишет, когда твой персонаж уже дошел пиковой высоты у воздухе, и вот вот начнет снижатся, ты не проверял? У меня пока что нету больше идей, почему твой скрипт на прыжок ничего не меняет.

 

Насчет суперскорости:

Я спидхаки особо не делал, но в теории(мне кажется) у персонажа может быть 3 скорости, скорость по оси X, скорость по оси Y, скорость по оси Z.

Если например ты по оси X двигаешься вперед, то скоростьX у тебя положительная, если назад, то скорость у тебя отрицательная, если ты двигаешься по какой нибудь другой оси (Y или Z) но свою координату X не меняешь, то твоя скорость X равно нулю. Попробуй найти одну из таких скоростей, и затем либо посмотреть структуру, в которой хранится эта скорость, либо проследить через дизассемблер, как игра начисляла твою скорость. По любому ты должен так наткнутся на константу, которую игра использует при вычислении скорости как X так и Z (если Y для тебя высота).

 

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

 

 

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

7 часов назад, Sanic сказал:

Он на нуле, пока ты стоишь на месте, и при прыжке он получает отрицательное значение, которое постепенно сводится к нулю?

Нет когда я на земле он на 0 когда я прыгаю он подскакивает где то до 600 и уменьшается до нуля потом персонаж падает в низ и значение от 0 опускается где то до -600 и когда персонаж на земле он становится 0.

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

В 26.01.2019 в 14:01, mumut сказал:

Я попробовал сделать скрипт

Все находится в одной структуре.

Табличка - ЗДЕСЬ

Скрипт "SuperSpeed + SuperJump"

Спойлер

{ Game   : Borderlands2.exe
  Version: 
  Date   : 2019-01-28
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Speed,Borderlands2.exe,D8 8E A8 02 00 00) // should be unique
aobscanmodule(accelerator1,Borderlands2.exe,D9 81 10 03 00 00)
aobscanmodule(Jump,Borderlands2.exe,D9 00 8B 4D 08 D9 19 5D C2 14 00 8B)
alloc(newmem,$1000)
label(newmem1)
label(newmem2)
label(code)
label(code1)
label(code2)
label(return)
label(return1)
label(return2)
label(P_Hero)
label(accelerator)
registersymbol(accelerator)
label(up)
registersymbol(up)
registersymbol(accelerator1)
registersymbol(Jump)
registersymbol(Speed)

newmem:
  mov [P_Hero],esi

code:
  fmul dword ptr [esi+000002A8]
  jmp return

newmem1:
  cmp ecx,[P_Hero]
  jne code1
  fld dword ptr [accelerator]
  jmp return1

code1:
  fld dword ptr [ecx+00000310]
  jmp return1

newmem2:
  fld dword ptr [eax]
  mov ecx,[P_Hero]
  add ecx,2EC
  cmp eax,ecx
  jne code2
  fmul dword ptr [up]

code2:
  mov ecx,[ebp+08]
  jmp return2


P_Hero:
  dd 0
accelerator:
  dd (float)1
up:
  dd (float)1

Speed:
  jmp newmem
  db 90
return:

accelerator1:
  jmp newmem1
  db 90
return1:

Jump:
  jmp newmem2
return2:

[DISABLE]
Speed:
  db D8 8E A8 02 00 00
accelerator1:
  db D9 81 10 03 00 00
Jump:
  db D9 00 8B 4D 08


unregistersymbol(up)
unregistersymbol(accelerator)
unregistersymbol(Jump)
unregistersymbol(accelerator1)
unregistersymbol(Speed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+8C58CE

"Borderlands2.exe"+8C58A5: F3 0F 10 8E 04 01 00 00  -  movss xmm1,[esi+00000104]
"Borderlands2.exe"+8C58AD: 8B 06                    -  mov eax,[esi]
"Borderlands2.exe"+8C58AF: 8B 90 9C 05 00 00        -  mov edx,[eax+0000059C]
"Borderlands2.exe"+8C58B5: F3 0F 59 C0              -  mulss xmm0,xmm0
"Borderlands2.exe"+8C58B9: F3 0F 59 C9              -  mulss xmm1,xmm1
"Borderlands2.exe"+8C58BD: F3 0F 58 C8              -  addss xmm1,xmm0
"Borderlands2.exe"+8C58C1: F3 0F 51 C1              -  sqrtss xmm0,xmm1
"Borderlands2.exe"+8C58C5: 8B CE                    -  mov ecx,esi
"Borderlands2.exe"+8C58C7: F3 0F 11 45 FC           -  movss [ebp-04],xmm0
"Borderlands2.exe"+8C58CC: FF D2                    -  call edx
// ---------- INJECTING HERE ----------
"Borderlands2.exe"+8C58CE: D8 8E A8 02 00 00        -  fmul dword ptr [esi+000002A8]
// ---------- DONE INJECTING  ----------
"Borderlands2.exe"+8C58D4: D8 7D FC                 -  fdivr dword ptr [ebp-04]
"Borderlands2.exe"+8C58D7: D9 05 E4 CE 77 02        -  fld dword ptr [Borderlands2.exe+1B9CEE4]
"Borderlands2.exe"+8C58DD: D9 C9                    -  fxch st(1)
"Borderlands2.exe"+8C58DF: DF F1                    -  fcomip st(0),st(1)
"Borderlands2.exe"+8C58E1: DD D8                    -  fstp st(0)
"Borderlands2.exe"+8C58E3: 77 04                    -  ja Borderlands2.exe+8C58E9
"Borderlands2.exe"+8C58E5: 33 C0                    -  xor eax,eax
"Borderlands2.exe"+8C58E7: EB 05                    -  jmp Borderlands2.exe+8C58EE
"Borderlands2.exe"+8C58E9: B8 01 00 00 00           -  mov eax,00000001
"Borderlands2.exe"+8C58EE: 8B 16                    -  mov edx,[esi]
}
{
// ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+FBAC28

"Borderlands2.exe"+FBABF9: F6 81 C4 01 00 00 10           -  test byte ptr [ecx+000001C4],10
"Borderlands2.exe"+FBAC00: 75 CC                          -  jne Borderlands2.exe+FBABCE
"Borderlands2.exe"+FBAC02: 83 B9 D0 01 00 00 00           -  cmp dword ptr [ecx+000001D0],00
"Borderlands2.exe"+FBAC09: 7F E4                          -  jg Borderlands2.exe+FBABEF
"Borderlands2.exe"+FBAC0B: F3 0F 10 89 0C 03 00 00        -  movss xmm1,[ecx+0000030C]
"Borderlands2.exe"+FBAC13: F3 0F 5C C1                    -  subss xmm0,xmm1
"Borderlands2.exe"+FBAC17: F3 0F 59 C3                    -  mulss xmm0,xmm3
"Borderlands2.exe"+FBAC1B: F3 0F 58 C1                    -  addss xmm0,xmm1
"Borderlands2.exe"+FBAC1F: F3 0F 59 C2                    -  mulss xmm0,xmm2
"Borderlands2.exe"+FBAC23: F3 0F 11 45 FC                 -  movss [ebp-04],xmm0
// ---------- INJECTING HERE ----------
"Borderlands2.exe"+FBAC28: D9 81 10 03 00 00              -  fld dword ptr [ecx+00000310]
// ---------- DONE INJECTING  ----------
"Borderlands2.exe"+FBAC2E: D8 4D FC                       -  fmul dword ptr [ebp-04]
"Borderlands2.exe"+FBAC31: 8B E5                          -  mov esp,ebp
"Borderlands2.exe"+FBAC33: 5D                             -  pop ebp
"Borderlands2.exe"+FBAC34: C3                             -  ret
"Borderlands2.exe"+FBAC35: CC                             -  int 3
"Borderlands2.exe"+FBAC36: CC                             -  int 3
"Borderlands2.exe"+FBAC37: CC                             -  int 3
"Borderlands2.exe"+FBAC38: CC                             -  int 3
"Borderlands2.exe"+FBAC39: CC                             -  int 3
"Borderlands2.exe"+FBAC3A: CC                             -  int 3
}
{
// ORIGINAL CODE - INJECTION POINT: "Borderlands2.exe"+9E59AE

"Borderlands2.exe"+9E599A: 5E                    -  pop esi
"Borderlands2.exe"+9E599B: 5B                    -  pop ebx
"Borderlands2.exe"+9E599C: 5D                    -  pop ebp
"Borderlands2.exe"+9E599D: C2 04 00              -  ret 0004
"Borderlands2.exe"+9E59A0: 55                    -  push ebp
"Borderlands2.exe"+9E59A1: 8B EC                 -  mov ebp,esp
"Borderlands2.exe"+9E59A3: 8B 41 40              -  mov eax,[ecx+40]
"Borderlands2.exe"+9E59A6: 83 F8 01              -  cmp eax,01
"Borderlands2.exe"+9E59A9: 75 0E                 -  jne Borderlands2.exe+9E59B9
"Borderlands2.exe"+9E59AB: 8B 45 0C              -  mov eax,[ebp+0C]
// ---------- INJECTING HERE ----------
"Borderlands2.exe"+9E59AE: D9 00                 -  fld dword ptr [eax]
"Borderlands2.exe"+9E59B0: 8B 4D 08              -  mov ecx,[ebp+08]
// ---------- DONE INJECTING  ----------
"Borderlands2.exe"+9E59B3: D9 19                 -  fstp dword ptr [ecx]
"Borderlands2.exe"+9E59B5: 5D                    -  pop ebp
"Borderlands2.exe"+9E59B6: C2 14 00              -  ret 0014
"Borderlands2.exe"+9E59B9: 8B 51 44              -  mov edx,[ecx+44]
"Borderlands2.exe"+9E59BC: 8B 4D 08              -  mov ecx,[ebp+08]
"Borderlands2.exe"+9E59BF: 0F AF D0              -  imul edx,eax
"Borderlands2.exe"+9E59C2: 8B 45 0C              -  mov eax,[ebp+0C]
"Borderlands2.exe"+9E59C5: 52                    -  push edx
"Borderlands2.exe"+9E59C6: 50                    -  push eax
"Borderlands2.exe"+9E59C7: 51                    -  push ecx
}

 

Видео:

 

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

В 27.01.2019 в 13:09, Sanic сказал:

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

Смотря какой код. К примеру:

//(твой чит код)
fadd [add_height]
fstp dword ptr [ecx]
...................
...................
....................

add_height:
  dd (float)1000

Вот такой код может и сработать.

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

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

Смотря какой код. К примеру:


//(твой чит код)
fadd [add_height]
fstp dword ptr [ecx]
...................
...................
....................

add_height:
  dd (float)1000

Вот такой код может и сработать.

А, ну если так, тогда можно)))

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

Спасибо Garik66 твой скрипт дал мне пинок и я сделал то что хотел.Только в моем случае есть загвоздка из за которой у меня вылетает игра.
Короче я сделал отдельно скрипт на супер скорость и на супер прыжок.Со скриптом на супер скорость у меня проблем не было а на счет супер прыжка есть.
Проблема заключается в том что на пример я играю со скриптом на супер прыжок и все супер и вот мне надоело играть я выхожу в глав.меню и вроде бы тоже все супер но если продолжить играть то есть нажать продолжить то игра крашится.
Я понял что это из за того что адреса меняются и в какой-то адрес записывается другое значение и игра вылетает.И у меня такой вопрос в твоем скрипте есть так называемый "Speed" который считывает и помещает адрес структуры персонажа.
В моем же случае 2 скрипта на супер скорость и на супер прыжок.И если бы в моих скриптах был так называемый "Speed" то когда у меня был бы включенный супер скорость то не работал бы супер прыжок и наоборот.Так вот если бы у меня был так называемый "Speed" можно было бы сделать проверку.
Что бы когда я влючал супер скорость а потом супер прыжок срабатывала проверка включен ли так называемый "Speed" если да то он бы брал адрес из "h_Hero" а если нет то включал бы так называемый "Speed".

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

7 часов назад, mumut сказал:

Что бы

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

Давай завтра посмотрю. ОК?

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

11 часов назад, mumut сказал:

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

Поставь бряк на инструкцию, чтобы узнать, значения каких адресов она меняет, и затем попытайся выйти в глав меню и затем снова продолжить. Если больше 1 адреса появилось, то придется фильтровать.  Иначе я не знаю, как игра может крашится.

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

21 час назад, mumut сказал:

так называемый "Speed"

В видео я говорил, что инструкция

"Borderlands2.exe"+8C58CE: D8 8E A8 02 00 00        -  fmul dword ptr [esi+000002A8]

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

 

21 час назад, mumut сказал:

Что бы когда я влючал супер скорость а потом супер прыжок срабатывала проверка включен ли так называемый "Speed" если да то он бы брал адрес из "h_Hero" а если нет то включал бы так называемый "Speed".

Как я понял тебе.

 

1. Вылет из игры. Решение - нужен фильтр для обеих выбранных тобою инструкций

2. Ты хочешь, чтобы опции работали отдельно. Решение - флаг/переключатель (тот же фильтр). 

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

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

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

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