Cum de a proteja jocul de artmoney

Odată, m-am întrebat de asemenea cum să protejez datele jocului de hacking-ul lui Artmoney. De obicei, protecția este redusă la faptul că jocul refuză să curgă când rulează Artmoney, această decizie nu mi sa părut prea elegantă. Am decis să-mi găsesc calea.







Ca un șarpe platformă experimentală utilizată (joc samopisnaya, clasic, nu va da sursa, din moment ce a pierdut, va avea ca rezultat doar codul responsabil pentru protecția ArtMoney), în cazul în care jucătorul ar putea fi interesat doar în numărul de vieți șarpe.

Prima a fost criptarea xor a valorii variabilei, dar a căzut la folosirea parametrilor de căutare "Valoare necunoscută" și "Coded Value". Ie criptarea simplu nu este suficientă. Apoi mi-a dat seama că era necesar să schimbi definitiv cheia de criptare, indiferent dacă valoarea variabilei sa schimbat sau nu.







În loc de o variabilă


introducem două variabile

în timp ce valoarea reală a variabilei de viață este viața xor cheie (orice alt algoritm de criptare poate fi utilizat).
Pentru ca ecranul să nu funcționeze, trebuie să schimbați în mod constant cheia de criptare și să re-criptați variabila (de exemplu, puneți un cronometru care modifică cheia la fiecare 100 de milisecunde)

Schimbarea valorii apare aproape prin același algoritm.


Această metodă de protecție poate fi implementată în orice limbaj de programare. Principalul lucru este să respectați principiul: modificați în mod constant cheia de criptare.
Upd: puțin mai târziu voi posta un demo dacă sunt îndoielnici.

În opinia mea este chiar același Artmoney este ușor de prins, atunci se va schimba doar atunci când schimbi viața, nu un octet, ci două. Pur și simplu nu este în mod explicit trasată în program, dar pentru a estima, calcula și înțelege ce se întâmplă într-o astfel de performanță trivială nu este deloc o problemă, IMHO.

Nu este cea mai bună soluție pentru un joc minunat. Unde este mai practic să faceți un wrap-int, float, șir dublu etc.
Și dacă aveți nevoie cât mai repede posibil și pentru câteva variabile, atunci voi multiplica valorile inițiale cu 1000 și în gui va ieși viața / 1000







Trimiteți-le prietenilor: