Szerző Téma: setElementData, Anticheat  (Megtekintve 2417 alkalommal)

setElementData, Anticheat
« Dátum: 2016. november 20. - 09:23:47 »
0 Show voters
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!

setElementData, Anticheat
« Válasz #1 Dátum: 2016. november 20. - 09:36:49 »
+1 Show voters
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 :(

setElementData, Anticheat
« Válasz #2 Dátum: 2016. november 20. - 09:40:19 »
0 Show voters
bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )

 
Én a \"synchronize\"-ra gondoltam

setElementData, Anticheat
« Válasz #3 Dátum: 2016. november 20. - 09:45:44 »
+2 Show voters
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)
« Utoljára szerkesztve: 2016. november 20. - 09:50:23 írta thegergo02 »

setElementData, Anticheat
« Válasz #4 Dátum: 2016. november 20. - 23:24:48 »
+1 Show voters
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)

Nem elérhető id100

  • 903
    • Profil megtekintése
setElementData, Anticheat
« Válasz #5 Dátum: 2016. november 21. - 19:44:08 »
+1 Show voters
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:
« Utoljára szerkesztve: 2016. november 21. - 19:50:13 írta id100 »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
setElementData, Anticheat
« Válasz #6 Dátum: 2016. november 21. - 20:26:21 »
+2 Show voters
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)
« Utoljára szerkesztve: 2016. november 23. - 13:56:15 írta anGeL »

setElementData, Anticheat
« Válasz #7 Dátum: 2016. november 21. - 21:50:18 »
+1 Show voters
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.

Nem elérhető id100

  • 903
    • Profil megtekintése
setElementData, Anticheat
« Válasz #8 Dátum: 2016. november 22. - 18:59:52 »
+1 Show voters
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.

setElementData, Anticheat
« Válasz #9 Dátum: 2016. november 22. - 20:14:37 »
+1 Show voters
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)
« Utoljára szerkesztve: 2016. november 22. - 20:22:07 írta dugasz1 »

setElementData, Anticheat
« Válasz #10 Dátum: 2016. november 22. - 20:55:52 »
0 Show voters
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?
« Utoljára szerkesztve: 2016. november 22. - 21:10:55 írta Hasirama »

setElementData, Anticheat
« Válasz #11 Dátum: 2016. november 22. - 22:45:19 »
+1 Show voters
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.

setElementData, Anticheat
« Válasz #12 Dátum: 2016. november 23. - 17:39:32 »
0 Show voters
Értem. Köszönöm szépe

setElementData, Anticheat
« Válasz #13 Dátum: 2016. november 23. - 19:25:43 »
0 Show voters
Nincs mit.

Nem elérhető Xenius

  • 668
    • Profil megtekintése
setElementData, Anticheat
« Válasz #14 Dátum: 2016. november 24. - 18:46:06 »
+1 Show voters
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

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal