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

The TakeOver помогите с адресами


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

Доброго времени суток!

Использовался Cheat Engine 7.2

Ситуация такая:

Нашел адрес который отвечает за нужный мне параметр, хранится он в float.

Выполнил поиск инструкций, выбрал ту, к который меньше всего обращений.

Выполненные действия в картинках:

Спойлер

45b29ba3067cec8e9d74f377f1e5be96-full.pn

Попробовал вписать код через автоассамблер:

Спойлер

674f05b2a6d675cd9c72ca8c668c2312-full.pn

Код сработал, после удара по мне линейка полностью восполнилась и получил бесконечные супер удары.

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

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

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

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

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

Будьте так добры, подскажите как это реализовать ?

Посмотреть видосы от Руслана к примеру

Почитать статьи на форуме,
Каждый раз проговаривать одно и тоже - утомительно уже.

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

Игра на юнити

В структуре игрока есть это

Struct.jpg

Тоесть наш ГГ всегда (вроде) =13. Остальное не то

Скрипт будет такой

Спойлер

[ENABLE]
aobscan(INJECT,D9 5B 18 85 DB 0F 84 47 00 00 00 0F B6 47 41 85 C0 0F 84 3B 00 00 00 89 1C 24)
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:
  push eax
  mov eax,[ebx+08]
  add eax,08
  cmp [eax],#13
  je short code
  fstp dword ptr [ebx+18]
code:
  pop eax
  test ebx,ebx
  jmp return

INJECT:
  jmp newmem
return:

[DISABLE]
INJECT:
db D9 5B 18 85 DB
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+133

HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+117: 8B 47 34           - mov eax,[edi+34]
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+11a: 89 04 24           - mov [esp],eax
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+11d: 39 00              - cmp [eax],eax
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+11f: E8 9C B9 2A 0A     - call HutongGames.PlayMaker:FsmFloat:get_Value
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+124: DD 45 E0           - fld qword ptr [ebp-20]
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+127: D9 C9              - fxch st(1)
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+129: DE E9              - fsubp st(1),st(0)
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+12b: D9 5D F0           - fstp dword ptr [ebp-10]
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+12e: 39 1B              - cmp [ebx],ebx
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+130: D9 45 F0           - fld dword ptr [ebp-10]
// ---------- INJECTING HERE ----------
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+133: D9 5B 18           - fstp dword ptr [ebx+18]
// ---------- DONE INJECTING  ----------
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+136: 85 DB              - test ebx,ebx
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+138: 0F 84 47 00 00 00  - je HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+185
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+13e: 0F B6 47 41        - movzx eax,byte ptr [edi+41]
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+142: 85 C0              - test eax,eax
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+144: 0F 84 3B 00 00 00  - je HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+185
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+14a: 89 1C 24           - mov [esp],ebx
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+14d: 39 1B              - cmp [ebx],ebx
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+14f: E8 2C F1 EB 09     - call 1210F280
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+154: DD 5D E0           - fstp qword ptr [ebp-20]
HutongGames.PlayMaker.Actions:SubtractFsmFloat:DoSubtractFsmFloat+157: 8B 47 34           - mov eax,[edi+34]
}

Спойлер

Игра пиратка 

The TakeOver v10.11.2019

Перед тем как влючать скрипт нужно чтоб по ГГ ударили иначе сигнатуру не найдёт

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

12 часов назад, JIeXA сказал:

В структуре игрока есть это

Давать готовое решение - плохо. Я для чего все эти видосы записывал? Чтобы ребята учились, а не получали всё готовенькое.

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

19 часов назад, kenshin сказал:

Код сработал

 

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

 

 

15 часов назад, JIeXA сказал:

Скрипт будет такой

 

может я не прав , но  здесь по моему  надо поправить

cmp [eax],#13
  je short code
  fstp dword ptr [ebx+18]
code:
  pop eax
  test ebx,ebx
  jmp return 

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

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

5 часов назад, Xipho сказал:

Давать готовое решение - плохо. Я для чего все эти видосы записывал? Чтобы ребята учились, а не получали всё готовенькое.

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

Ваши видео смотрю постоянно, там ведь вы тоже пишите код. 

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

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

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

 

Да, вы правы, я просто забываю об этом )) Но знаю это. Самое интересно, что скрипт всегда работает ))). Даже после перезагрузки системы. Поменял на D9 и скрипт перестал работать.

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

 

В 15.11.2020 в 12:02, JIeXA сказал:

Нецензурщину вырезал

 

На основе уроков, я сделал свое решение, возможно оно и не верное, но все работает ?.  Враги умирают, ограждения разрушаются, мой персонаж бессмертный.

Спойлер

newmem:
cmp [ebx+18],42C80000 <<<<<<<<< В этом смещении полоска жизни.  Правда есть одно условие, нужно ударить врага.
jne code
nop
nop
nop
jmp return
code:
  fstp dword ptr [ebx+18]
  test ebx,ebx
  jmp return

INJECT+09:
  jmp newmem
return:
registersymbol(INJECT)

 

 

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

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

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

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