Hogyan védheti meg a játékot az artmoney-tól?

Egyszer is arra gondoltam, hogyan védhetem a játékadatokat az Artmoney hackelésétől. Általában a védelem csökkenti azt a tényt, hogy a játék nem hajlandó futni, amikor Artmoney fut, ez a döntés úgy tűnt nekem nem túl elegáns. Úgy döntöttem, hogy megtalálom az utat.







A kísérlethez használt platformot kígyó (samopisnaya játék, klasszikus, nem adja a forrást, mert elveszett, azt eredményezi, hogy csak a kódot felelős védelmére ArtMoney), ahol a játékos, hogy érdekes lehet csak az életek száma kígyó.

Az első a változó értékének xor titkosítása volt, de az "Unknown Value" és a "Coded Value" keresési paraméterek használatával csökkent. Ie az egyszerű titkosítás nyilvánvalóan nem elegendő. Aztán rájöttem, hogy állandóan változtatni kell a titkosítási kulcsot, függetlenül attól, hogy megváltozott-e a változó értéke vagy sem.







Egy változó helyett


két változót mutatunk be

míg az élet változó valós értéke az élet xor kulcs (bármely más titkosító algoritmus használható).
Kiesnek nem működik úgy kell állandóan változtatni a titkosító kulcsot, és újratitkosítjuk változó (például, hogy egy időzítőt, amely után minden 100 mlsekund változás gomb)

Az érték módosítása majdnem ugyanaz az algoritmus következik be.


Ezt a védelmi módot bármely programnyelvben megvalósíthatja. A legfontosabb az, hogy ragaszkodjunk az elvhez: folyamatosan változtassuk meg a titkosítási kulcsot.
Frissítés: egy kicsit később egy demót teszek közzé, ha vannak kétesek.

Véleményem szerint ugyanolyan Artmoney-t könnyű elkapni, akkor csak akkor válik megváltozik, ha életet változtat, nem csak egy bájtot, hanem kettőt. Csak nem kifejezetten felhívja a program, de megbecsülni, kiszámítja és megérteni, mi folyik egy ilyen triviális teljesítmény nem jelent problémát, IMHO.

Nem a legjobb megoldás a nagyszerű játékhoz. Ha praktikusabb a csomagolás - az int, az úszó, a dupla karakterlánc stb.
És ha a lehető leggyorsabban és egy pár változóra van szükséged, akkor az eredeti értékeket 1000-gyel szoroznám, és a gui kimeneti élettartama / 1000