[ colke77 @ 22.11.2006. 07:41 ] @
| Potrebno mi je da jedan moj program zastitim od kopiranja. Znam da totalna zastita nije moguca (i Windows Vista je razbijen), ali neki vid zastite bi trebalo da onemnoguci obicnim korisnicima, koji neznaju tehnike hackeringa, kopiranje.
Sad imam ja neke ideje, ali pretpostavljam da postoje neke standardne tehnike za resenje ovog problema. Ako neko ima iskustva....
P.S. Takodje me zanimaju tehnike kako da program napravim da bude trial, tj. da radi neko vreme, a posle ne. |
[ west_herc @ 22.11.2006. 15:04 ] @
Po meni ti je ovo jedno rješenje:
Napraviš neki timer, i napraviš neku ključnu riječ. Kad daš korisniku tu ključnu riječ na papiru (kao neki ugovor) onda on otkluča taj program na recimo 100 dana. Nakon 100 dana on ti se javi i ti mu daš novu verziju za instaliranje sa nekom novom ključnom rijeći. Naravno da taj tajmer odbrojava 30 dana, kad ukucaš taj kod onda krene od 100 dana.
Mislim malo je glupo, ali nekako jednostavno. Nije ovo neka novost, ali dobro je da si uprav dao ovakvu temu. Nadam se da će netko dat odgovor koji će i meni jako valjat.
Pozdrav svima
[ Dejan Vesic @ 22.11.2006. 15:45 ] @
Teško da solidan odgovor može da stane u ovaj textbox ;-)
Postoji više strategija, koje jako zavise od toga kakvog je tipa program. Recimo:
0. Velik i komplikovan program, vrlo skup, isplati ti se da:
0.0 Kreiraš tvoj privatni i public RSA ključ (DEV-PRIV, DEV-PUB)
0.1 Za samu aplikaciju napraviš privatni i public RSA ključ (APP1-PRIV, APP1-PUB)
0.1 Napraviš installer za njega
0.2 Ti odeš kod klijenta, upališ installer, on instalira program i ti odneseš installer, ne ostane kod klijenta
Instaler radi sledeću stvar:
- napravi signaturu mašine (iz najmanje 3 dela: serijski broj diska, matične ploče, video karte itd) - SIG
- uzme tvoj privatni ključ DEV-PRIV, uzme public ključ od aplikacije APP1-PUB, šifruje SIG i dobiješ S-SIG koji se snimi ili u registru ili u neki konfig fajl od mašine
Program prilikom podizanja:
- napravi signaturu mašine - SIG2
- otključa S-SIG koristeći APP1-PRIV i DEV-PUB
- Uporedi SIG i SIG2 i ako nisu isti, odbije da radi.
1. Srednji program:
1.0 Napraviš signaturu mašine
1.1 Iskoristiš ovo kao šifru za šifrovanje podataka u bazi
Ako se signatura promeni, podaci će postati neupotrebljivi - samo pažnja! da ne uništiš legitimne podatke kod legitimnog klijenta
2. Mali program:
2.1 Postaviš na internet server za registraciju
2.2 Program prilikom instalacije pravi signaturu mašine i šalje je na server za registraciju: (Username, regNum, signatura) gde je u RegNum minglovan username
2.3 Ako mu server vrati da već postoji par (Username, regNum, druga-signatura), odbije da radi
2.4 Ako nema internet konekcije (firewall), program polako smanjuje funkcionalnost, dok se ne ugasi sve dok mu se ne da internet konekcija
itd, itd, itd.
[ colke77 @ 23.11.2006. 08:25 ] @
OK, to sa tajmerom je za trial, ali ponovno instaliranje pa..., mislim da nije bas najbolje resenje.
Dejane, hvala na iscrpnom odgovoru.
Ja sam razmisljao da je najbolja aktivacija preko interneta, ali znas kako vec stvari stoje: mozda neko nema pristup internetu (malo verovatno, ali moguce), a i meni bi bio potreban neki server preko kog bi se registracija vrsila, a nemam ga...
Vec sam cuo za tehnike gde se uzima signatura masine i sifrovanje podataka signaturom. Mislim da bi u mom slucaju takvo resenje bilo sasvim dovoljno.
A da neznas mozda kako bi se pokupili ti serijski brojevi hardvera iz .NET-a (C#)? Postoje li neke specijalne klase za to?
[ dusty @ 23.11.2006. 08:39 ] @
Mozes da pokupis sav info o harderu preko WMI-a is System.Management namespace-a, mada mislim da nije dobro resenje vezati se za hardver. Jedna aplikacija (nisam je sa pisao) je koristila taj pristup i nastao je haos kada je firma zamenila na 30 lokacija komponente (mislim da se vezao za MAC adresu).
[ colke77 @ 23.11.2006. 09:08 ] @
Da, da, o tome nisam razmisljao (promena hardvera). Zanimljiv problem, sta drugi forumasi misle o ovome? Thanks dusty.
[ ivan jeremic @ 23.11.2006. 09:36 ] @
Ne znam cemu ti sluzi ta aplikacija ali cim hoces da je zastitis pretpostavljam da je u pitanju neka oblast gde nema mnogo promena u nacinu rada tako da ocekujes da ce trenutna verzija biti aktuelna dug vremenski period.
U tom slucaju moj savet ti je da angazujes 1-2 pomocnika ... studenta, srednjoskolca... penzionera (citaj: ljude sa dosta slobodnog vremena) i napravis im aplikaciju koja generise registracioni kod. Tvoja aplikacija kada se instalira trazice taj kod da bi radila. Kod se generise recimo na osnovu nekog unetog teksta, datuma i nekog podatka o hardveru koji ce kupac izdiktirati tom tvom pomocniku. On ce to lepo uneti u tvoj programcic i dobiti rezultat ... izdiktirati ga korisniku i aplikacija ce proraditi a on ce za tu uslugu dobiti % od cene proizvoda ... ili spusti cenu pa naplacuj aktivacije .. pojma nemam ... samo slanje kopija kupcima radi ti ... a ako imas vremena i mogucnosti radi i ti aktivaciju cisto da ih malo kontrolises.
Uglavnom ideja ti je do sada vec jasna.
Mislim ... ako neko 'oce razbice ti algoritam za kljuc ali pitanje je koliko se nekome isplati da ti razbija algoritam posebno ako posaljes malo krnju verziju pa mora da se malo sredi ovo (usput promenis i algoritam), pa ono (usput promenis i algoritam) pa i ono i ovo (usput promenis i algoritam) i tako im pokazes da mozda nisi previse pametan ali si uporan za medalju :)
Mislim mozda nije skroz fer prema kupcu ali na kraju krajeva mozda ce i lepse da se oseca ukoliko vidi da se aplikacija stalno unapredjuje tako da ... moj savet ti je... zaboravi hi-tech zastite i osloni se na ljude kojima je u interesu da ti programe ne kopiraju vec prodaju .... a kada smo vec kod toga za procenat cu i ja da ti prodajem aplikaciju :)
[ colke77 @ 23.11.2006. 10:26 ] @
Ajd please, mali kod (C#) kako da pokupim serial HDD-a, ne snalazim se bas najbolje.
[ Dejan Vesic @ 23.11.2006. 10:48 ] @
Mislim da se zaštiti programa daje prevelika pažnja.
Ono što većini aplikacija nedostaje to je biznis plan - kako misliš da zaradiš od te aplikacije? Od tog plana zavisi da li će zaštite uopšte biti.
Recimo:
1. Mala simpatična aplikacija za koju programer nije utrošio previše vremena:
- najbolje je da bude besplatna i da se skida sa interneta
- ponuditi mogućnost donacije zadovoljnim korisnicima
- otvoriti pristup novim beta verzijama aplikacije korisnicima koji su dali donaciju kao i mogućnost da učestvuju u izboru nove funkcionalnosti (kroz forume)
2. Srednja aplikacija za ozbiljnije poslove:
- deo funkcionalnosti besplatan; skida se sa interneta
- registracija otključava napredne mogućnosti; ovde u igru ulazi registracioni (aktivacioni) server:
2.1 Prodaješ registracioni ključ za aplikaciju preko recimo RegSoft-a
2.2 Svaki ključ je upisan u MySQL bazu i markiran kao neaktivan
2.3 Jednom unet u aplikaciju, pokreće proces aktivacije (kao kod XP-a): obraćanje tvom serveru.
2.4 Tvoj server za dati ključ i signaturu mašine izgeneriše aktivacioni, vrati ga programu i označi registracioni kao "potrošen".
2.5 Program se aktivira
3. Velika aplikacija za usko tržište
- nema ništa na Mreži, sem opisa i screenshotova
- prodaje se u malom broju primeraka i velikom cenom
- održavanje uključeno prve godine, posle toga se naplaćuje
So, praktično ti zaštita nije ni potrebna; što se registracionog servera tiče, to je PHP sajt + algoritam + MySQL baza što možeš da dobiješ kod bilo kog ozbiljnijeg provajdera.
Znači, prvo plan pa tek onda vidi da li ti treba šifrovanje.
[ colke77 @ 23.11.2006. 10:54 ] @
Ma sve to stoji sto si ti rekao, ali cilj je i nauciti nesto novo sto moze biti i korisno, a zasto ne i u praksi primenjivo.
[ Dejan Vesic @ 23.11.2006. 11:17 ] @
Dobro, ali verujem da ti je više vremena trebalo da napišeš pitanje no da nađeš odgovor na Google-tu.
Nema veze, evo:
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
namespace Org.Vesic.ES.WMI.Example
{
class Program
{
static void Main(string[] args)
{
ManagementObject myDisk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\"");
PropertyData myDiskProp = myDisk.Properties["VolumeSerialNumber"];
Console.WriteLine("HDD Serial: {0}", myDiskProp.Value);
Console.ReadLine();
}
}
}
[ colke77 @ 23.11.2006. 11:27 ] @
hvala puno, svi moji problemi su reseni 
[ Dejan Vesic @ 23.11.2006. 12:00 ] @
[ colke77 @ 23.11.2006. 12:35 ] @
Uzgred, svaka ti cast za sajt. Posecivao sam ga ja i ranije, ali ovo nisam zagledao.
[ Bope @ 24.01.2007. 16:00 ] @
Mislim da protiv programa koji se zove Reflector (i koji je besplatan) nema pomoci!
Ne samo da pruza uvid u sors kod vec daje i imena funkcija,klasa,koriscenih resursa i sl...
Do sad nisam naisao ni na jedan .net program koji nisam uspeo da 'pregledam' pomocu Reflectora (da se razumemo-to sam radio radoznalosti radi,ni jedan program nisam prepravljao ili sl)
[ Fedya @ 25.01.2007. 14:22 ] @
Citat: Bope: Mislim da protiv programa koji se zove Reflector (i koji je besplatan) nema pomoci!
Ne samo da pruza uvid u sors kod vec daje i imena funkcija,klasa,koriscenih resursa i sl...
Do sad nisam naisao ni na jedan .net program koji nisam uspeo da 'pregledam' pomocu Reflectora (da se razumemo-to sam radio radoznalosti radi,ni jedan program nisam prepravljao ili sl)
Naravno da ima pomoci :)
Uz VS ide mali programcic Dotfuscator koji koji enkodira IL kod, tako da se vise ne moze pogledati takvim alatima.
[ icobh @ 25.01.2007. 14:45 ] @
Citat: Fedya: Naravno da ima pomoci :)
Uz VS ide mali programcic Dotfuscator koji koji enkodira IL kod, tako da se vise ne moze pogledati takvim alatima.
Ali opet postoje neki drugi alati... Potraži e-book: Reversing .NET by LaFarge
[ Dejan Vesic @ 25.01.2007. 14:46 ] @
Naravno da nema pomoći.
Dotfuscator samo menja imena procedura/clasa/promenljivih u nešto nečitljivo, ne sprečava analizu samog IL koda.
Moguć je reversni engineering, a onda uzmeš neki program za refaktoring i uradiš preimenovanje najvažnijih delova koda.
[ spartak @ 25.01.2007. 15:40 ] @
Ja se generalno toga ne "plasim" i ne opterecujem se previse zastitom.
Ko zna da po assembly fajlovima nadje sta mu treba, da prepozna sta kako radi, taj to sve zna da napravi i ne krade.
[ miki78ns @ 01.06.2009. 22:45 ] @
Ima li u Visual Studio 2008 neka komponenta slicno kao sto ima u Delphi-ju mxprotector pomocu koga se lako podesava trial verzija programa, registracija programa i slicno?
[ Djoks @ 02.06.2009. 15:14 ] @
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|