Diskuze: Ochrana aplikacie.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 22 zpráv z 22.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Asi bych to řešil nějakým licenčním klíčem, který by byl unikátní a kontrolou tohoto klíče přes DB někde na webu...
Diky Michal, riesil si podobny problem, alebo len typujes? Ak si riesil, daj link na sposob riesenia. Diky.
Zatím jsem nic takového neřešil. Asi existuje účinnější způsob, ale
zjednodušeně řečeno bych to řešil nějak takto:
Použil bych asi nějaký zápis do registru. Při spuštění by se aplikace
"koukla" někam (to je jedno kam) do registru, pokud by nenalezla klíč (při
prvním spuštění), vygenerovala by nějaké číslo "osolené" třeba názvem
PC, uložila by záznam do registru a zároveň na web do DB. Při nalezení
záznamu v registru by se appka mrkla na web a porovnala záznamy.
Samozřejmě se to dá obejít přepsáním toho záznamu v registrech, ale lze
ztížit nalezení toho záznamu třeba tím, že název toho klíče bude
úplně jiný než by uživatel mohl předpokládat (aby se těžko dala
vydedukovat souvislost s tou appkou). Zároveň bych si při tom generování
nechal poslat nějaké info (z toho webu) o instalaci na mail. "Nelegálně"
instalované appce bys mohl zrušit to číslo na webu, tím pádem by se při
kontrole neověřilo a appka by nešla spustit...
Ale jak říkám je to jen takový amatérský nástřel...
To by stacilo. Len by bol dobry navod. No nic, nieco vymyslim.
Diky
Nebo mě napadlo, že by se dal třeba jen vytvořit hash něčeho, co by bylo unikátní a mělo to souvislost s tím konkrétním počítačem (aby ten hash z toho stejného PC byl vždycky stejný => třeba nějaký string osolený názvem PC s MAC adresou), ten uložit na web a porovnávat. Při instalaci na jiné PC by se vytvořil jiný hash a tím by pak neprošel kontrolou...
Predstav si forum v nejakej oblasti, je jedno v akej mimo IT. Ponuknem im apku, ktora im ulahci pracu v danej oblasti. Ukazem stranku s uputavkou. Potom im tochcem predat. Nemam sajn, kto ma aky pc a dalsie komponenty. Proste len chcem predat apku, ktora moze by pouzita len jednym klientom, tu istu dalsiemu a dalsiemu, ale tak, aby nebola moznost len si ju medzi nimi poslat a pouzivat. V takom pripade pridem o odmenu za pracu.
Ja tych ludi a ich pc nikdy neuvidim.
Ještě mě napadlo toto: Vyloženě vytvoříš nějaký klíč, který si
dáš někam na web do DB a u něj bude počet možných licencí (v tomto
případě by byla ke každému klíči třeba jen jedna licence). Při
instalaci by se klíč zadal, ověřil by se na webu a uložil záznam o
použití. Při instalaci na další PC by se již "použitý klíč"
neověřil...
Nicméně bys musel stejně nějak zajistit "nutnost instalace", protože .NET
aplikace fungují i když se jen zkopíruje obsah adresáře s appkou...
Nebylo by třeba je vidět, není problém v appce zjistit programově název PC, jméno uživatele, IP adresy, nebo MAC adresy a použít je pro vygenerování čehokoliv...
Vsetko.
Bol by fajn tutorial pre vsetkych.
třeba název PC a uživatel
string pcname = System.Environment.MachineName;
string uzivjmeno = Environment.UserName;
Tady na síti je někde článek o aktualizacích aplikace z webu, tam by se
dal trochu poupravit a použít ten návod a poměrně dost informací je i na
jiných webech. Já asi nejsem ten pravý, abych psal články a někoho
učil...
Sám se pořád učím a ani zdaleka nemůžu o sobě říct, že to
umím...
A hlavně to, co jsem ti tady psal, mě napadalo průběžně a nemám to
odzkoušené...
V podstatě s tebou souhlasím, navrhuješ funkční řešení, jen mě k tomu napadá pár drobností.
Název počítače se dá uživatelsky snadno změnit a
Environment.UserName vrací jméno právě přihlášeného uživatele což
nemusí být ten samý, který program instaloval. Nemohl by to být třeba
problém?
Při požadavku vázat licenci na konkrétní pc bych asi vybral nějaké
trvalejší identifikátory.
Napadá mě třeba navázání na hash sériového čísla základní desky v
kombinaci s dalšími id hardwaru a ověřování platnosti oproti serveru jak
jsi psal.
Máš pravdu, psal jsem, že to je jen amatérský a hlavně neodzkoušený nástřel toho, jakou mám představu o jakémsi fungování licenčního klíče...
Jak je ti asi jasné, pokud aplikace pracuje offline, nemůžeš kopírování reálně uhlídat. Můžeš jen stavět překážky (např. spojení kopie tvé aplikace s konkrétním hardwarem); když ale budou moc vysoké, začneš tím poškozovat legitimní uživatele (odejde jim HW, vymění počítač za lepší/jiný).
Pokud tvoje appka vyžaduje připojení k internetu, je situace trošku lepší. Můžeš si nechat reportovat, jaké stroje aplikaci používají, takže rozpoznáš i případy, kdy ji někdo má na více strojích a zda ji na ni používá průběžně. Je ale fakt, že tento sledovací přístup se u některých skupin uživatelů (a zvláště v dnešní době) nesetká s velkých pochopením.
když ale budou moc vysoké, začneš tím poškozovat legitimní uživatele (odejde jim HW, vymění počítač za lepší/jiný). = v tomto případě by kontaktovali autora a zažádali o smazání hwid, nejlépe nějakým formulářem
Na internetu na to jsou tutoriály.
Např:
https://www.youtube.com/watch?…
Ačkoliv je tu spousta řešení, praxe je taková, že pořádně aplikace na .NETu neochráníš (roky praxe). Stačí Ti trochu šikovnější člověk, ILSpy a trochu zkušeností s Reverse Engineering. Pak si stačí otevřít DLL nebo EXE, vyčíst co tam používáš za mechanismus ověřování a ten pak aplikaci podstrčit.
V reálu jsem viděl i takové aplikace, kdy se generoval klíč (od Tebe) a na PC se ověřoval. No, stačí si projít zdrojáky, kde se ověřuje klíč, udělat si opačnou funkci (kódování na místo dekódování) a napíšeš si k appce KeyGen a je to.
Běžný uživatel na to nepřijde, ale zkušený to má za chvilku hotové.
Zobrazeno 22 zpráv z 22.