Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Lego Batman 3 Pomoc


Bortus

Rekomendowane odpowiedzi

Opublikowano

Witam.

Potrzebuje pomocy z grą Lego Batman 3. Próbuje nauczyć się, jak zrobić w tej grze " Super Jump ". Nigdy wcześniej tego nie robiłem, jest to dla mnie nowe doświadczenie. Wiem, jak korzystać z Cheat Engine już wcześniej zrobił kilka trainer-ów.

Jak już wcześniej wspomniałem, postanowiłem spróbować (nauczyć się) czegoś nowego i stworzyć w grze batman 3 super skok, nie wiedziałem jak się za to zabrać bo tego wcześniej nie robiłem, wiec napisałem na ogólnym forum cheat engine o wskazówki, otrzymałem odpowiedz ze muszę znaleźć adres, który odpowiada za wysokość położenia postaci (dół-góra), a następnie na znalezionym adresie użyć ( Find what writes that address during jumps ) czyli znaleźć adres który jest używany podczas skakania, po tym zabiegu otrzymałem adres ( code ) fstp dword ptr [esi+74], który odpowiedzialny jest za to jak postać wysoko skacze. mając odpowiedni adres

, generuje skrypt w Auto Assemble i tutaj zaczynają się moje problemy, bo następnym krokiem jaki muszę zrobić (Then do a code injection that multiplies the change in height)
jest wygenerowanie kodu który mnoży zmiany wysokości ( czyli jeśli postać skacze na np. 10 cm kod spowoduje ze podskoczy na 20 cm ), niestety nie wiem jak się za to zabrać i proszę o pomoc lub wskazówki.

To czysty skrypt, który wygenerowałem w Auto Assemble bez żadnych zmian, w nim muszę stworzyć kod który będzie mnożył wysokość razy 2,3 lub 4.
[ENABLE]

alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:

originalcode:
fstp dword ptr [esi+74]
fld dword ptr [esp+38]

exit:
jmp returnhere

"LEGOBatman3.exe"+CFFAA8:
jmp newmem
nop
nop
returnhere:


[DISABLE]

dealloc(newmem)
"LEGOBatman3.exe"+CFFAA8:
fstp dword ptr [esi+74]
fld dword ptr [esp+38]
//Alt: db D9 5E 74 D9 44 24 38

{
// ORIGINAL CODE - INJECTION POINT: "LEGOBatman3.exe"+CFFAA8

"LEGOBatman3.exe"+CFFA88: 52                       -  push edx
"LEGOBatman3.exe"+CFFA89: 8B CE                    -  mov ecx,esi
"LEGOBatman3.exe"+CFFA8B: E8 A0 A1 FB FF           -  call LEGOBatman3.exe+CB9C30
"LEGOBatman3.exe"+CFFA90: 84 DB                    -  test bl,bl
"LEGOBatman3.exe"+CFFA92: 74 09                    -  je LEGOBatman3.exe+CFFA9D
"LEGOBatman3.exe"+CFFA94: F6 86 40 01 00 00 04     -  test byte ptr [esi+00000140],04
"LEGOBatman3.exe"+CFFA9B: 75 1C                    -  jne LEGOBatman3.exe+CFFAB9
"LEGOBatman3.exe"+CFFA9D: D9 44 24 30              -  fld dword ptr [esp+30]
"LEGOBatman3.exe"+CFFAA1: D9 5E 70                 -  fstp dword ptr [esi+70]
"LEGOBatman3.exe"+CFFAA4: D9 44 24 34              -  fld dword ptr [esp+34]
// ---------- INJECTING HERE ----------
"LEGOBatman3.exe"+CFFAA8: D9 5E 74                 -  fstp dword ptr [esi+74]
"LEGOBatman3.exe"+CFFAAB: D9 44 24 38              -  fld dword ptr [esp+38]
// ---------- DONE INJECTING  ----------
"LEGOBatman3.exe"+CFFAAF: D9 5E 78                 -  fstp dword ptr [esi+78]
"LEGOBatman3.exe"+CFFAB2: D9 44 24 3C              -  fld dword ptr [esp+3C]
"LEGOBatman3.exe"+CFFAB6: D9 5E 7C                 -  fstp dword ptr [esi+7C]
"LEGOBatman3.exe"+CFFAB9: 5E                       -  pop esi
"LEGOBatman3.exe"+CFFABA: 5B                       -  pop ebx
"LEGOBatman3.exe"+CFFABB: 8B E5                    -  mov esp,ebp
"LEGOBatman3.exe"+CFFABD: 5D                       -  pop ebp
"LEGOBatman3.exe"+CFFABE: C2 04 00                 -  ret 0004
"LEGOBatman3.exe"+CFFAC1: CC                       -  int 3
"LEGOBatman3.exe"+CFFAC2: CC                       -  int 3
}

Próbowałem stworzyć coś takiego w AOB Injection użyłem mov, ale mov daje stała wartość i postać podskoczyła 4 krotnie wyżej, lecz zawisa w powietrzu i nie opada na ziemie. Testowałem też add zamiast mov ale add powoduje ze wartość co chwile się zwiększa i postać wylatuje za mapę i gra się zawiesza.

[ENABLE]

aobscanmodule(SuperJump,LEGOBatman3.exe,D9 5E 74 D9 44 24 38 D9 5E 78 D9 44 24 3C D9 5E 7C 5E) 
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov [esi+74],(float)-4.406949043 // <-- Przerobiłem z orginalnego fstp dword ptr [esi+74]. Postać zawisa w powietrzu i nie opada
  fld dword ptr [esp+38]
  jmp return

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

[DISABLE]

SuperJump:
  db D9 5E 74 D9 44 24 38

unregistersymbol(SuperJump)
dealloc(newmem)

Nie mam zielonego pojęcia jak stworzyć kod który wstrzyknie jednorazowo wartość -4.406949043 a potem powróci do oryginalnego kodu lub jak stworzyć kod który będzie mnożył wartość fstp dword ptr [esi+74] razy 2 lub razy 4 za każdym razem jak postać podskoczy. Proszę o pomoc.

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...