Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van. 106
Fórum Archívum (Témák/Fórumok) / Re:MTA FEJLESZTŐT KERESEK ! ! !« Dátum: 2016. április 28. - 15:14:27 »
Parancsolj, itt egy lista az MTA fejlesztőkről:
https://github.com/multitheftauto/mtasa-blue/graphs/contributors 107
Munkaerő keresés / MTA fejlesztőket keresek« Dátum: 2016. április 26. - 20:15:47 »
Parancsolj, itt egy lista az MTA fejlesztőkről:
https://github.com/multitheftauto/mtasa-blue/graphs/contributors 108
SA-MP: Szerverfejlesztés / Automatikus üzenet ~ $Supra$« Dátum: 2016. április 18. - 20:35:32 »
Ahogy látom, hivatalos fórumon már kaptál elvileg kritikákat, meg tanácsokat :S
http://forum.sa-mp.com/showthread.php?t=598036 BTW inkább ne add ki magad valami nagyot tudó profi emberkének, mikor szarhoz se értesz (bocs)
111
Pluginok és Programok / Lua in SA-MP v0.2.5« Dátum: 2016. április 03. - 21:21:28 »Idézetet írta: Anthony Gates date=1459631923\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"54940\" data-ipsquote-contentclass=\"forums_Topic remélem nincs besülve az egész.Hát, érdekeltség hiányában (körülbelül senki nem használja/mindenki leszarja) úgy döntöttem, hogy nem éri meg fejlesztenem tovább. Viszont még régebben rám írt egy emberke, hogy szívesen vinné a fejlesztéseket tovább, ha engedélyt adok rá. Hát engedélyt azt adtam, de azóta nem láttam belőle semmit. 112
Segítségkérés / Kapu betöltés MYSQL-ből« Dátum: 2016. március 30. - 10:50:59 »
Szerintem neked jobb lenne egy \"Írjatok meg egy szervert\" részleg, just for you.
(U.I.: Nem lopott móddal kellene.) 115
Archívum / ESC Anti-Cheat« Dátum: 2016. február 20. - 11:56:48 »
117
Pluginok és Programok / [Tutorial] Update memory hacking plugins« Dátum: 2016. január 29. - 23:03:37 »Idézetet írta: kurta999 date=1454103598\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59321\" data-ipsquote-contentclass=\"forums_Topic RPC-s része is érthető?Annyira nem éltem még bele magam, de remélem gyakorlással belejövök Viszont leírás, néhol kicsit értelmetlenül van megfogalmazva (\"then do same what I said before how to navigate to the function\") és összetudja kavarni az embereket. 118
Archívum / .:LegendRPG - Az új kor!.:« Dátum: 2016. január 29. - 21:46:05 »
RiseRPG módon alapszik. Törlést kérnék légyszíves!
119
Pluginok és Programok / [Tutorial] Update memory hacking plugins« Dátum: 2016. január 29. - 21:13:18 »Idézetet írta: kurta999 date=1454094473\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"59321\" data-ipsquote-contentclass=\"forums_Topic Nincs időm ilyenekre 120
Pluginok és Programok / [Tutorial] Update memory hacking plugins« Dátum: 2016. január 29. - 18:43:39 »
Maga a leírás arról szól, hogyan is találjunk meg struktúra címeket samp szerverben. Nem fogom mondani, hogy miért csináld, csak azt fogom elmondani, hogy hogyan csináld. Nincs valami nagy assembly tudásom, de nem is kell ha csak frissíteni akarod a struktúrákat, vagy a memória offsetteket. Kibaszott könnyű, csak kicsit időigényes. Használd a fejed és gondold át mindig.
SA-MPnak szüksége van több olyan emberre, akik tudják hogyan is frissítsék a memória hackelő pluginokat. A legtöbb abba marad, mert unalmas frissíteni őket minden egyes verziónál és a készítő leszarja azt és majdnemhogy senki se tudja frissíteni, mert nem tudják hogyan is kell. Először is, szükségünk van az IDA Pro-ra (használd a Google-t). A 6.8-as verziót ajánlom, de linket nem fogok ide rakni, mivel a warez nem engedélyezett. Régebbi verzió is megteszi viszont. Memória offsettek keresése: Nyisd meg az IDA-t, és a következő ablakot kell, hogy lásd: Kattintsunk a \"Go - Work on your own\"-ra http://mfrserver.net/IDA/ida_2.png[/img] Nagyszerű, ha ezt látod, akkor nem vagy balfasz. Most kattintsunk a File majd az Open-ra és nyissuk meg a \"samp-server.exe\"-t http://mfrserver.net/IDA/ida_3.png[/img] http://mfrserver.net/IDA/ida_4.png[/img] Kattintsunk az OK-ra és várjunk egy kicsit. Ha befejezte az .exe feldolgozását, akkor a következő képet kell, hogy lásd: http://mfrserver.net/IDA/ida_5.png[/img] Kattintsunk a Jobb egérgombbal és válasszuk a \"Text view\" lehetőséget. Ha mindent jól csináltál, akkor a következőt kell, hogy lásd: http://mfrserver.net/IDA/ida_6.png[/img] Nagyszerű! Most megfogjuk keresni azt a memória helyet, amit a SA-MP szerver használ a játékos életének tárolására. Nyomjuk meg a SHIFT + 12-t ami felhoz egy új eszköztárt \"Strings\" néven. Navigáljunk ide és nyomjuk meg az ALT + T-t és keressünk rá a GetPlayerHealth-ra http://mfrserver.net/IDA/ida_7.png[/img] Kattintsunk kétszer a GetPlayerHealth szövegre. Ha mindent jól csináltál, akkor valami hasonlót kell, hogy kapj: http://mfrserver.net/IDA/ida_8.png[/img] http://mfrserver.net/IDA/ida_9.png[/img] Nyomjuk meg az F5-t. Az IDA most létrehozza a pszeudokódot assembly kódból, amit SOKKALTA könyebb olvasni. http://mfrserver.net/IDA/ida_10.png[/img] Most már van információd, hogy megkapd a következő 5 dolgot: pNetGame CPlayerPool *pPlayerPool mutató helye CNetGame class-on belül CPlayer *pPlayer mutató helye CPlayerPool class-on belül fHealth CPlayer class-ban amx_GetAddr (sub_403100) Kattints a dword_4F6CC8-ra, nyomj egy N-t és írd be: pNetGame. Ez a pNetGame mutatója, amit most átneveztél olvashatóbb névre, és majd a későbbiek folyamán pNetGame-ként fog szerepelni. Cím a mutatóhoz: 0x4F6CC8. NEKED MÁS LESZ A CÍM, MIUTÁN A TESZT SZERVEREM 0.3.7 R1 ÉS NEM R2-1. ---------------------------------------------------- (_DWORD *)pNetGame + 2) pPlayerPool mutatónak a helye. (_DWORD *)pNetGame + 2) egyenlő (char*)pNetGame + 8 )-cal. Menj a következő linkre, és találd ki a válaszokból, hogy miért: http://stackoverflow.com/questions/26976784/c-read-from-class-by-its-pointer-and-offset
--------------- Most már meg van a pPlayerPool! Szép! Meg kell találnunk a pPlayer-t pPlayerPool-on belül ami egy mutató tömb, és minden egyes index adatot tárol egy játékosról. Nézzük meg az első sort, ahol megkapjuk a pNetGame címet.
154012 - ez a címe a pPlayer mutatónak a CPlayerPool class-on belül. Fenomenális! Most már megvan a pPlayer mutatója. Most már csak meg kell találnunk a(z) fHealth helyét a CPlayer class-on belül.
v3 + 10529 KÉSZ!
Ha leszeretnéd tesztelni ezt a példát, akkor ne felejtsd el a következő dolgot Visual Studioban; Át kell állítanod a struct rendezést 1 bájtra, az alapértelmezett 4 helyett. Ha kihagyod ezt a lépést, akkor a kód nem fog működni. In Visual Studio: Project File -> Properties -> C/C++ -> Code Generation -> Sturct member Alignment -> 1Byte (Zp1) GCC-ben: -fpack-struct=1 Most már megvan minden. Ha leakarod kérni a játékos életét, akkor csinálhatod a következőt:
Ha hozzáakarsz férni az összes classhoz a CNetGame-n belül, akkor lesd meg a YSF-t: https://github.com/kurta999/YSF/blob/YSF_/src/Structs.h#L734 RPC-k keresése Funkciókhoz SetGravity RPC megkereséséhez: 1.) Keress rá a \"SetGravity\"-ra a szövegek ablakban, aztán csináld ugyanazt, amit mondtam a hogyan navigáljunk a funkcióhoz előtt. 2.) Vizsgáld át az assembly/pszeudo kódot, csak egy funkció meghívás van és nem több. ( call sub_48E260 ) 3.) Navigáljunk erre a funkcióra, nyomjuk meg az F5-t - vizsgáld át a pszeudokódot hogyan néz ki - most már látod hogy több kód is van, tehát jó helyen járok - menj vissza assembly nézetbe. 4.) RPC lehet egy BYTE ( 0 - 255 ), ahol csak egy karakter, egy bájt. .text:0048E2FA push offset aT ; \"ĺ\" 5.) Kattints kétszer az aT-n és a következőt kell, hogy lásd: .rdata:004B592C aT db \'ĺ\',0 6.) Válaszd ki a(z) ĺ-t, válts át hex nézetben az eszköztár menüben, és ami kivan választva, az az RPC ID-d. 0x92 SetGravity-nak. callbackekhez 1.) Keress rá a(z) \"OnPlayerSpawn\"-ra a szövegek menüben, aztán csináld ugyanazt, amit mondtam a hogyan navigáljunk a funkcióhoz előtt. 2.) Vissza kell menned, AHOL ez a funkció meg lesz hívva: Ez az alap funkció, ami meghívja a pawn callbacket, amikor egy játékos spawnol. Nevezd át PAWN_OnPlayerSpawn-ra. .text:0046ADF0 sub_46ADF0 proc near ; CODE XREF: sub_48EA70+118p Kattints kétszer a memória címre CODE XREF után. Most átugortál egy funkcióhoz, ami a funkció RPC-je. Nevezd át INTERNAL_OnPlayerSpawn-ra. Ez a funkció mindig mindig meg fog hívódni, amikor a szerver megkapja az RPC-t az OnPlayerSpawn RPC ID-jével, majd meghívja a PAWN_OnPlayerSpawn-t, ami meghívja az OnPlayerSpawn-t a pawn scriptekben. Tehát menjünk vissza, van egy funkciók ami meghívódik RPC által. Kattintsunk a DATA XREF címre, majd nyomjunk F5-t. Valami hasonlót kell, hogy láss: (*(void (__thiscall **)(int, void *, char **(__cdecl *)(int)))(*(_DWORD *)v1 + 116))( v1, &unk_4B5E18, INTERNAL_OnPlayerSpawn); Visszamentél a RakServer::RegisterAsRemoteProcedureCall-okhoz. Ennek a funkciónak két paramétere van:
Ebből tudod az utolsót - ez az OnPlayerSpawn. Kattints a legelső paraméterre (unk_4B5E18), válaszd ki, válts át hex nézetbe és másold ki az RPC ID-t. Ez 0x34. https://github.com/kurta999/YSF/blob/YSF_/src/RPCs.cpp Gyakorlás Ajánlom, hogy próbálj meg olyan offsetek keresni, mint a játékos pozíció, játékos fegyver, jármű szín, stb, stb.. Használhatod a Structs.h-t YSFből, hogy ellenőrízd, hogy az offset helyes-e vagy sem. |