Malo da pojasnim...
Pristupio sam prvom sloju resavanja problema tako sto sam napravio enkripciju izvrsne datoteke koju desifrujem na disku i pokrenem. Mana ovoga je sto (koliko god je ja zavukao duboko u neki temp) ozbiljniji korisnik moze da je pronadje.
Sa druge strane, mogao bih da zakljucam datoteku kao sistemsku, i dozvolim da samo ona bude aktivna (recimo koristeci paralelne niti - jednu koja ce je desifrovati i zakljucati, zatim na kratko odkljucati i pokrenuti drugu nit, a zatim pokrenuti program,druga nit ce uporno zakljucavati datoteku,... bez obzira koliko se aktivno koristio unlocker...)
Druga ideja bi bila da je pokrenem kao zasticeni kernelov modul u ram-u (ili nadogradnja ove ideje), ...
samo ne znam koliko je to opet efikasno i da li je stvarno potrebno...
Code:
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
/* The following line is needed to
compile using the Microsoft visual C compiler */
#include <sys/locking.h>
/* Uncomment For Concurrent Write Test */
/* #include <dos.h> */
char write_buffer[] = { "Purl Gurl Rocks And Rolls!" };
int main (int argc, char *argv[])
{
int file_handle;
int data_size;
/* Open Or Create New File For Write - Truncates Existing File */
file_handle = open (argv[1], O_WRONLY | O_CREAT | O_TRUNC);
if (file_handle != -1)
{
/* Lock Error Check */
/* Please uncomment for Visual C */
if (_locking (file_handle, LK_NBLCK, 20L))
/* uncomment for other compilers */
/* if (lock (file_handle, 0L, 20L)) */
{ printf ("File Lock For %s Failed\n", argv[1]); }
else
{
printf ("File %s Is Locked\n", argv[1]);
/* Write File */
data_size = write (file_handle, write_buffer, sizeof (write_buffer));
/* Write Error Check */
if (data_size != sizeof (write_buffer))
{ printf ("Write To %s Failed\n", argv[1]); }
else
{ printf ("Write To %s Successful\n", argv[1]); }
/* Uncomment To Allow Time For Concurrent Write Test */
/* sleep (30); */
/* Unlock File */
/* Please uncomment for Visual C */
_locking (file_handle, LK_UNLCK, 20L);
/* uncomment this line for other compilers */
/* unlock (file_handle, 0L, 20L); */
/* Close File */
close (file_handle);
}
}
return 0;
}
^Ovo je skolski primer, ali ovo obican Unlocker razbija
http://www.brothersoft.com/sec...k_dll_device_driver_44509.html
^ovo je malo ozbiljnije
http://www.brothersoft.com/uti...down_-_free_edition_34614.html
^ Ovo je takodje zanimljivo
Dajte vi neki primer koda za zakljucavanje, bio bih vam veoma zahvalan...
I ideje su dobrodosle ...
P.S. Izvinjavam se zbog konfuznosti svojih odgovora, prilicno sam bio angazovan ovih dana na nekim drugim temema...
Marko