Jump to content


Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Posted Image Posted Image

Guest Message by DevFuse
 

Podmienianie łańcuchów pamięci[Orpheu]


  • You cannot start a new topic
  • You cannot reply to this topic
No replies to this topic

#1 Ortega

    mów mi Orti

  • Power User

  • Reputacja: 363
    Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Posted 24.09.2010 21:10

*
POPULAR

Dziś przedstawię tak jak już wspominałem kiedyś o tak zwanym patchowaniu stringów w bibliotece swds lub mp.

Najpierw aby zacząć wypada przeczytać ten poradnik.
[Orpheu] Podstawowe zagadnienia. - Nieoficjalny polski support AMX Mod X

Stopujemy się w punkcie deassemblacji. Gdy mamy już otworzoną gotową do czytania bibliotekę, która nas interesuje możemy użyć magicznego skrótu klawiaturowego w IDA Pro, shift + F12.
Wygeneruje nam się lista stringów. Teraz dla dalszego odczytu tudzież prostszego szukania stringów powinniśmy ustawić sortowanie po kolumnie 'string'. To może zająć chwilę, więc nie stresujcie się, idźcie na kawę.

Chcemy stworzyć, a raczej musimy stworzyć sygnaturę do Orpheu, która będzie pokazywała gdzie ma się odbywać cały proces i jaki typ danych ma być uwzględniany.
Nie pozostaje nam nic jak tylko użycie struktury bazowej i jej edycja wedle potrzeb.

Spoiler


NAZWA_SYGNATURY, można dać byle jaką nazwę lecz ważne jej późniejsze zapamiętanie w korzystaniu z pluginu, który będzie wykonywał operacje.
BIBLIOTEKA - mod dla mp.dll, engine dla swds.dll
TYP_DANYCH
Posłużę się tutaj obrazkiem z alliedmods:
Posted Image
Jak widać na obrazku mamy 3 typy danych: data, rdata i text
aby je poprawnie zapisać w Orpheu użyjemy takich odpowiedników:
data - data
rdata - rodata
text - code


Mamy więc sygnaturę, pozostaje nam stworzyć plugin, który będzie ów sygnaturę wykorzystywał do podmiany właśnie łańcuchów w DLL.

#include < amxmodx >
#include < orpheu >
#include < orpheu_memory >

public plugin_precache( ) {
//
}


Do podmiany stringów potrzebne sa nam w zasadzie 2 funkcje, z czego z każdej korzystamy w zależności od potrzeb.
OrpheuMemoryReplace( const memoryDataName[] count, any:... );
OrpheuMemoryReplaceAtAddress( address, const memoryDataName[], count, any:... );


Bardzo ważną , rzeczą o której nie możemy zapomnieć jest długość stringów, string który zamierzamy podmienić ma odpowiednia długość i nowy nie może być dłuższy !

Przyjmijmy, że chcemy podmienić "models/w_c4.mdl", na c5.mdl, zatem:
#include < amxmodx >
#include < orpheu >
#include < orpheu_memory >

public plugin_precache( ) {
OrpheuMemoryReplace( "NAZWA_SYGNATURY", "models/w_c4.mdl", "models/w_c5.mdl" );

}

W zasadzie to już koniec tego pluginu, a więc i poradnika. Nie wspomniałem o drugiej funkcji, której używa się zdecydowanie rzadziej, ponieważ jako pierwszy parametr podmiany trzeba podać adres komórki który będzie podmieniany.
Dobre jest to w przypadku gdy nie chcemy podmieniać wszystkich możliwych stringów podanych w funkcji pierwszej a tylko jedną z danego adresu, jeśli mamy pewność, że właśnie ona nam jest potrzebna ;)
  • +
  • -
  • 5




  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In