Diskuze: Jak zabezpečit soubor?

C# .NET .NET (C# a Visual Basic) Jak zabezpečit soubor? American English version English version

Avatar
Petr Valigura
Redaktor
Avatar
Petr Valigura:

Zdravím, předělávám si zdejší Arenu z tutoriálů do WPF a přidávám tam pár drobností, jedna z nich je ta, že tam dávám možnost vytvořit si vlastní postavu a přidělit ji určitý počet bodů do "schopností", to není problém. Postavu bych chtěl potom uložit, aby se mohla načíst při zapnutí a jelikož to chci ukládat na disk a ne do nějaké databáze, tak mě zajímá otázka, jak nejlépe zabránit tomu aby uživatel otevřel ten soubor a přepsal si ho podle toho jak chce? Co se proto nejlépe hodí? Či jak by jste to řešili vy, díky :)

Napadá mě to jen nějak "zašifrovat" či uložit jako binární soubor. Ale rád bych věděl, co jsou ještě za možnosti

Odpovědět 27. června 14:28
Občas je to tady dobrá klauniáda...
Avatar
pocitac770
Redaktor
Avatar
pocitac770:

Teoreticky nejde nic 100% zabezpečit, co běží celé (nebo alespoň logika zpracovávání dat programu) na straně klienta. To šifrování/binární soubor je asi jediné řešení proti tomu, aby uživatel přepsal staty v uloženém souboru. Ale ono to jde obejít ještě jinak. Konkrétně myslím nástroje jako Cheat Engine, díky kterým ani nemusíš zasahovat do uložených souborů, hra ti je přepíše následně sama hra při ukládání :)

Editováno 27. června 16:13
 
Nahoru Odpovědět  +2 27. června 16:10
Avatar
pocitac770
Redaktor
Avatar
pocitac770:

*v tý poslendí větě jsem se nějak zamotal, ignoruj jazyk mého kmene :D

 
Nahoru Odpovědět 27. června 16:16
Avatar
Petr Valigura
Redaktor
Avatar
Odpovídá na pocitac770
Petr Valigura:

Díky, na ten Cheat Engine se podívám, už jen kvůli zvědavosti :)

Nahoru Odpovědět 27. června 23:00
Občas je to tady dobrá klauniáda...
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Osobně to řeším tak, že hodnoty nějak nesmyslně spatlam dohromady do jednoho stringu(ten si pak zase rozkrájim, to už je předem určený jak to bude vypadat) a pak to zašifruju(stačí nečim jednoduchym a ani nijak neřešim klíče, napevno jeden nastavim v kódu a je tam), výsledný soubor s daty připomíná kočku na klávesnici, uživatel je bez šance něco změnit, a i kdyby to rozšifroval, tak mu stejně data nedávají smysl.

Ale jak už bylo řečeno, pokud se napíchneš na proces a upravíš hodnoty za chodu, tak ti tohle nepomůže. Chce to třeba mít životy v jedné proměnné, ale pak i souběžně v další, ve které je hodnota životy*2, v další životy + náboje... Uživatel ti s CheatEngine odhalí proměnnou životy a změní ji, ale program si to pořád kontroluje a zjistí, že v těch dalších dvou to nesedí a např. vyhodí uživateli hlášku, nebo si to napozadí vyřeší (skutečné životy si dopočítá z toho ostatního). Tohle mi přijde jednodušší než nějak zařizovat, aby se proces programu nedal napíchnout a měnit v něm hodnoty.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +5 27. června 23:28
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Petr Valigura
Redaktor
Avatar
Petr Valigura:

Děkuji oběma za rady a vysvětlení :)

Nahoru Odpovědět 28. června 22:00
Občas je to tady dobrá klauniáda...
Avatar
Odpovídá na Petr Valigura
Josef Kuchař (Pepa489):

Taky záleží v čem je to napsané pokud je to například Java nebo C#, tak se s tím nebudu mazat a prostě ten program dekompiluju, v tom případě doporučuji obfuskovat ;)

Nahoru Odpovědět  +1 28. června 22:07
2x piš, jednou debuguj
Avatar
Odpovídá na Adam Ježek
Josef Kuchař (Pepa489):

Pokud jsi velký master, tak změníš hodnotu, zamrazíš program, JMP do "ukládací sekvence" a hotovo

Editováno 28. června 22:14
Nahoru Odpovědět 28. června 22:13
2x piš, jednou debuguj
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Petr Valigura
Petr Stastny:

Ja to delam tak, ze zmenim posledni cas upravy souboru na rok treba 1986 (po kazdem zapisu do souboru). Tak zjistim, jestli se mi v tom nekdo hrabal. Uzivatele nenapadne si tohle overit. Jeste to zkombinuj s tim, co psal Adam Jezek a mas to.

 
Nahoru Odpovědět  +1 29. června 9:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.