GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: Hasirama - 2016. november 20. - 09:23:47

Cím: setElementData, Anticheat
Írta: Hasirama - 2016. november 20. - 09:23:47
Hali!
Sajnos ezt nem nagyon értem, szeretném, ha valaki elmagyarázná.
Sokan azt a szokásos anticheat-systemet használják. És ezzel állítanak elementData-t. Valaki elmondaná, hogy pontosan mi ellen véd, valamint hogy a harmadik értéke a setElementData-nak mi is pontosan?(setElementData(thePlayer, \"dbid\", true)) - Tehát a true/false. Nem vagyok túl jó angolos
Valamint hogy még ezen kívül milyen csalások ellen kellene a szervert megvédeni?
Előre is köszönöm!
Cím: setElementData, Anticheat
Írta: thegergo02 - 2016. november 20. - 09:36:49
a SetElementData 3. értéke az amire változtatod az értéket, az lehet integer, vagy String, vagy boolean :)
E: Én nem használom az anticheates cuccot, ezért abban nem tudok segiteni :(
Cím: setElementData, Anticheat
Írta: Hasirama - 2016. november 20. - 09:40:19
bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )

 
Én a \"synchronize\"-ra gondoltam
Cím: setElementData, Anticheat
Írta: thegergo02 - 2016. november 20. - 09:45:44
Ja, de az a 4.-ik argumentum, ha jól tudom akkor hogy szinkronizálja e kliens oldallal (vagy forditva) , de azt nem kötelező oda írni, simán müködik annélkül.
E:
setElementData(a tárgy/player akinek akarod az értékét változtatni,\"a változtandó dolog\",érték)
Cím: setElementData, Anticheat
Írta: dugasz1 - 2016. november 20. - 23:24:48
Azért működik nélküli mert van alapértelmezett értéke ami jelen esetben true (Minden ami nem kötelezően megadandó argumet az kapcsos zárójelben van és ha van alapértelmezett értéke akkor utána van írva mint pl itt hogy synchronize = true)
Annyira jó amit thegergo02 is írt, hogy szinkronizál tehát minden kliensen és a szerveren is abban az elementben az az érték lesz, ha egy helyen változtatod midnenhol változik.
Az element daták védése meg annyi(amennyire tudom), hogy a kliensen lehet nézni hogy megváltozik e az értéke és ha igen akkor állítsa vissza a régire. Mert az az alap, hogy ami adat jön a klienstől abban nem lehet bízni, mert lehet ő manipulálta az adatot. Pl.: halottam olyat, hogy valaki letölti az mta forráskódját ír bele egy parancsot amivel bármelyik elementdatát átírhatja és már csalhat is így. Vagy csak a memóriában kikeresi a megfelelő értéket és átírja. Persze ez nem ilyen egyszerű, mert amennyire tudom az MTA team védekezik ez ellen(nem lehet akármilyen kliensel felmenni egy szerverre, vannak nem open source részei amik védelmet biztosítanak)
Cím: setElementData, Anticheat
Írta: id100 - 2016. november 21. - 19:44:08
a net.dll-en és netc-n kívül tudtommal minden opensource.
A kliens hacket egyszerűbb elkészíteni mint sok ember gondolja, nem rossz rendelkezni egy anticheattel  :w00t:
Cím: setElementData, Anticheat
Írta: Xenius - 2016. november 21. - 20:26:21
Az alap valhallás anticheat egy hulladék, de védeni véd valamennyit az ellen hogy ne tudjon a kliens addolni magának bizonyos dolgokat. Erre létezik egy egyszerűbb megoldás, szerver oldalon kell változtatni az element datát és ez is tökéletesen funkcionál, felesleges túlbonyolítani.
 
local protectedElementDatas = {
[\"user:adminlevel\"] = true,
[\"char:Money\"] = true,
}
addEventHandler(\"onElementDataChange\", root, function(data, oldValue)
if getElementType(source) == \"player\" then
if protectedElementDatas[data] then
   if client then
      local newValue = tostring(getElementData(source, data))
      setElementData(source, data, oldValue)
      logAnticheat(\"[ANTICHEAT] \"..getPlayerName(source)..\" kliens element data váltás érzékelve: \"..data..\" -> \"..newValue..\" ==> \"..tostring(oldValue))
   end
end
end
end)
Cím: setElementData, Anticheat
Írta: dugasz1 - 2016. november 21. - 21:50:18
Idézetet írta: id100 date=1479753848\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63613\" data-ipsquote-contentclass=\"forums_Topic
a net.dll-en és netc-n kívül tudtommal minden opensource.
A kliens hacket egyszerűbb elkészíteni mint sok ember gondolja, nem rossz rendelkezni egy anticheattel  :w00t:
 
Még a luac encrypternek is annak kell lennie elvileg nem? Hisz azzal simán vissza tudnál fejteni bármilyen luac-t.
Arra én is kiváncsi lennék mennyire védve a módosított kliensek ellen (úgy halottam nem lehet felmenni rá akármelyik szeróra). Mert ha nincs akkor igazából nem sokat ér ez a fajta elementData védés (kliensen, ahogy Xenius írta szerveren jobb), meg akkor igazából akármit megtehetnél. Pl Monitorozod a triggereket és hamisakat küldözgetsz.
Cím: setElementData, Anticheat
Írta: id100 - 2016. november 22. - 18:59:52
A luac encrypt decrypt a net.dll-ben van.
Egyébként magában a luac (extra obfuscationnal) simán törhető, egy scripttel is akár :P
Kiadni nem fogom, de ennyit még a neten is megtalálsz.
Cím: setElementData, Anticheat
Írta: dugasz1 - 2016. november 22. - 20:14:37
Ja, hogy az abban van.
Láttam én is a videót de ha jól emlékszem 2 - More (From 1.5.2-9.07903)-ösre már nem lehet. (A pali mondta tán a videóban, hogy szerinte RSA-val van titkosítva)
(Nem hiányzik innen egy komment ? Ha jól emlékszem egy lackos nevű felhasználó kommentelt ide)
Cím: setElementData, Anticheat
Írta: Hasirama - 2016. november 22. - 20:55:52
Köszönöm mindenkinek a választ! Kezdem érteni, hogy is van ez összerakva:D
E.: még annyit szerettem volna, hogy nézegettem szerverek filejait, és hogy abba valamelyik le volt védve, valamelyik nem, ezzel az anticheat remdszerrel, amit használtak. Melyik elementdatákat lenne fontos levédeni, és melyiket felesleges? Egy pénz, élet, és ilyesmiket érdemes levédeni, egy munkához használt, ideigleneset meg felesleges?
Cím: setElementData, Anticheat
Írta: dugasz1 - 2016. november 22. - 22:45:19
Szerintem ha a megváltoztatása kárt okozna a szervernek (előnyhöz jut vele pl) vagy más játékosokat hátráltathatna/zavarhatna vele akkor mindenképp.
Bár én nem sokat használok elementDatát csak amihez fontos (pl.: element azonosítása mondjuk, player adatbázis beli id-je vagy kocsiké) de ha te így szereted csinálni akkor szerintem arra azért figyelj, hogy olyan adatot ne szinkronizáltass ami a többi játékosnak lényegtelen. Ezzel spórolhatsz az erőforrással.
Cím: setElementData, Anticheat
Írta: Hasirama - 2016. november 23. - 17:39:32
Értem. Köszönöm szépe
Cím: setElementData, Anticheat
Írta: dugasz1 - 2016. november 23. - 19:25:43
Nincs mit.
Cím: setElementData, Anticheat
Írta: Xenius - 2016. november 24. - 18:46:06
Az encrypt (luac) is kijátszható amúgy, egy külön fájlt betöltesz meta.xml-ben az elé aminek a tartalmára nagyjából kíváncsi vagy. FFS-en például le lehet kérni a webes dolgok linkjét, element data neveket stb, amik nagyban megkönnyíthetik az MTA Blue-val való ökörködést.
Példa (teszt.lua):
 
local _addEventHandler = addEventHandler
function addEventHandler(eventName, ...)
outputChatBox(\"addEventHandler -> \"..eventName)
return _addEventHandler(eventName, ...)
end
local _setElementData = setElementData
function setElementData(element, data, value, sync)
outputChatBox(\"setElementData -> \"..tostring(element)..\" -> \"..data..\" -> \"..value)
return _setElementData(element, data, value, sync)
end