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

Zmiana powodu bana w scriptcore


laB2

Rekomendowane odpowiedzi

Opublikowano

Nie odpowiadam za wykorzystywanie tego poradnika w celach niezgodnych z licencją Soldata, lub z polskim prawem.

 

Oto wam zaprezentuje w jaki sposób można zmienić w kodzie serwera powód, za który zostaje się zbanowanym poprzez procedurę BanPlayerReason. Potrzebujemy programów IDA i UPX.

Kopiujemy plik soldatserver.exe na pulpit, rozpakowujemy archiwum UPX-a i kopiujemy plik upx.exe też na pulpit. Klikamy na menu Start > Uruchom (lub skrót windows+r) wpisujemy cmd i klikamy enter. Wpisujemy w konsoli:

To jest ukryta treść, proszę

Po chwili mamy rozpakowany plik serwera, zamykamy okno wiersza poleceń. Otwieramy IDA, klikamy ok, New, anuluj, i przeciągamy plik soldatserver.exe z pulpitu na okno IDA. Czekamy aż skończy się skan (to może trwać kilka minut), zaznaczamy okno "Strings", w menu wybieramy Search > Search..., wpisujemy nazwę procedury: BanPlayerReason i klikamy OK. Klikamy podwójnie na zaznaczonej pozycji. Powinniśmy zobaczyć coś takiego:

To jest ukryta treść, proszę

Pod przypisaniem stałej aProcedureBan_0 ciągu, mamy komentarz. Klikamy dwukrotnie na sub_49826C+340, by zobaczyć w którym miejscu w kodzie stała jest wykorzystywana.

To jest ukryta treść, proszę

Mamy tutaj wywołanie funkcji która dodaje procedurę do obsługi w scriptcore. Do edx przypisywany jest pointer do właściwej procedury w kodzie, która zostanie wywołana przez scriptcore, a do ecx jej nazwa. Klikamy dwókrotnie na sub_494D7C. W pierwszym prostokącie, funkcja czyta parametry i sprawdza czy czas = 0, jeśli tak, to w drugim prostokącie daje permanentny ban, w trzecim wywołuje funkcję która wyrzuca gracza. Popatrz na linie:

To jest ukryta treść, proszę

6 to powód wyrzucenia z gry, 1 to zmienna boolean (true|1/false|0) odpowiadająca temu, czy zbanować gracza. Zaznacz tą linię z powodem wyrzucenia z gry, i zmień zakładkę na "Hex View-A". Popatrz na koniec zaznaczonej linii, jest tam 4 bajtowa liczba 6. Teraz otwórz Soldatserver.exe w jakimś dobrym edytorze hex. przejdź do linii 00494DD0 zmniejszonej o 00401000 i zmień bajt w pozycji 0E na:

To jest ukryta treść, proszę

Finalnie przetestujemy to skryptem:

To jest ukryta treść, proszę

Wchodzimy do gry, i piszemy /kickme. Pozdro.

Nie siłą, a młotkiem.

×
×
  • Dodaj nową pozycję...