Close
Faqja 0 prej 4 FillimFillim 12 ... FunditFundit
Duke shfaqur rezultatin -9 deri 0 prej 35
  1. #1
    i/e regjistruar
    Anëtarësuar
    17-11-2006
    Postime
    81
    Moderatori: Shkëputur nga tema Përkthyes i faqeve të Internetit
    ---------------------------

    U be ca kohe qe nuk jam pergjigjur, por midis punes per programin e ri, kurseve qe jap, dhe oreve pa drita, nuk kam gjetur shume kohe te lire. Per ta riparuar kete, dhe meqe ne fund te fundit ndodhemi ne ate pjese te forumit qe quhet "Arti i Programimit", po pershkruaj ndonje variant (ne menyre skematike) se si mund te mbrohet nje program.

    Kodi:
    void	FunksioniPare(void)
    {
    	...
    };
    
    ...
    
    void	FunksionInicializimi (...)
    {
    	...
    };
    
    
    void	TestRegjistrimi (...)
    {
    	...
    };
    
    ...
    
    void	FunksionCrack(...)
    {
    };
    
    void	FunksioniFundit(void)
    {
    };

    Ta zeme se FunksionInicializimi() eshte nje nga funksionet jetik per programin tone, ndersa TestRegjistrimi() eshte nje nga funksionet ku testohet nese programi eshte i regjistruar/aktivizuar, eshte ne periudhe demostrimi, apo edhe kjo e fundit ka skaduar. Pra ky eshte njeri nga funksionet qe duhet te mbrojme, sepse ketu rrjedha e ekzekutimit te programit degezohet ne varesi te testimit te disa kushteve.

    Qe programi te mund te kontrolloje vetveten per te pare se mos eshte modifikuar, mjafton qe qe nga imazhi ne memorje i programit, te gjenerojme nje numer (hash), te cilin me pas e krahasojme me nje vlere te parallogaritur, me nje fjale nese programi eshte modifikuar, vlera e gjeneruar ka per te qene e ndryshme nga vlera e parallogaritur.

    Diku ne nje funksion tjeter, te pozicionuar larg prej bllokut te mesiperm, ne mund ta bejme kete test ne kete menyre:

    Kodi:
    	DWORD	*p1, *p2;
    
    	p1 = (DWORD*)FunksioniPare;	// ne C emri i funksionit perfaqeson adresen ne 
    	p2 = (DWORD*)FunksioniFundit;	// memorje ku gjendet ai
    
    	DWORD	dwHash = 29472;	// vlere fillestare
    	
    	while (p1 < p2)	{
    		dwHash ^= *p1++;
    	};
    Ne kete pike do mjaftonte nje krahasim i thjeshte if (dwHash != dwPreLlogariturHash) dhe ne varesi te tij te ekzekutonim ose jo funksionin FunksionInicializimi(). Por meqe eshte fare e lehte te gjurmohen instruksionet cmp ne asembler, fragmenti me poshte jep te njejtin rezultat pa perdorur nje if (cmp)

    Kodi:
    	typedef	void (*TFunc1) (...);
    
    	TFunc1	TabelePtrFunc[2] = {FunksionInicializimi, FunksionCrack};
    
    	Tabele[!(dwHash - dwPreLlogariturHash)];
    Pra ne nje tabele me dy qeliza kemi ruajtur adresat perkatesisht te funksionit jetik per programin (FunksionInicializimi) dhe te nje funksioni tjeter i cili ekzekutohet vetem ne rast se programi eshte i crackuar (FunksionCrack)
    Direferenca dwHash - dwPreLlogariturHash eshte 0 nese programi eshte i pa crackuar, dhe nje numer i ndryshem nga zero ne rast te kundert. Operatori i mohimit "!" e konverton c'do vlere te ndryshme nga zero ne 0, dhe vleren zero e konverton ne 1. Numrin e perftuar e perdorim si indeks ne tabelen e mesiperme per the thirrur ne menyre te kushtezuar (po pa perdorur ndonje cmp) ose funksionin FunksionInicializimi, ose funksionin FunksionCrack.

    Ne brendesi te FunksionCrac mund te bejme c'te duam, ky funksion ka per tu ekzekutuar vetem ne rast se programi eshte i krakuar, pra mund t'i lejojme vetes edhe tundimin per te fshire (apo mbishkruar) filet jetike te windowsit.

    Ka edhe nje efekt anesor interesant ne kete skeme, programit nuk i ben dot as debug, sepse debugeri e modifikon kodin ne memorje (kur vendos breackpoint int 3) duke aktivizuar funksionin FunksonCrack().

    Skema mesiper eshte ndoshta me e thjeshta e mundshme. Skema me te sofistikuara perfshijne cryptimin e nje pjese te programit, apo vete-modifikimin e programit ne memorje. Pra asnjehere nuk eshte e mundur ta shohesh dot te gjithe programin ne asm, pasi programi mund ta ndryshoje vetveten ne ekzekutim e siper.
    Meqe procesoret modern, ne funksion te performances i bejne nje kopje ne cache-n e brendshem te procesorit kodit na memorja, pasi imazhi ne memorje modifikohet (apo decryptohet, apo krijohet), duhet thirrur funksioni FlushInstructionCache() i cili i ben nje update cache-it te procesorit me ndrysimet e bera ne memorje. Per rrjedhoje, per te gjetur me shume informacion mbi kete subjekt ne internet, mjafton te kerkoni per fjalen "FlushInstrucionCache".


    Per sa i perket nje programi funksional dhe te mbrojtur, une s'mund ta krijoj dot nje te tille (funksional) brenda dites, por aktualisht une jam duke krijuar nje program, i cili jo vetem do mbroje veten e tij, por edhe dokumentat (html) me te cilat ai punon. Ndoshta mbas ndonja nje muaji do kem dicka per te demostruar te cilen do ta vendos ne sitin tim, dhe do postoj ne kete forum ndonje mesazh per t'ju njoftuar qe ta provoni a e thyeni dot.
    Ndryshuar për herë të fundit nga edspace : 09-02-2007 më 20:11

  2. #2
    i/e regjistruar
    Anëtarësuar
    21-04-2006
    Postime
    51

    Wink Interesante !

    Interesante !

    Me mendimin se ti mund ta lexosh kete postim timin, se mua me kane shume qejf dhe mi fshijne postimet ( s'di ne e ke lexuar postimin tim qe ma fshine ... :-( )

    Si teori me duket interesante .... Por une them se me nje inline patcher, pikerisht ajo 0 ne 1 qe kthen mbrapsht funksioni mund te modifikohet !

    Sa per rrjeshtin e fundit te postimit tend ... ky me poshte !!!

    >>>>>>>

    Ndoshta mbas ndonja nje muaji do kem dicka per te demostruar te cilen do ta vendos ne sitin tim, dhe do postoj ne kete forum ndonje mesazh per t'ju njoftuar qe ta provoni a e thyeni dot ?

    >>>>>>>>>>

    ...them se sfida ka mbaruar apo jo ?

    Te pakten askush se konsideroi si sfide !
    Ndryshuar për herë të fundit nga edspace : 06-02-2007 më 20:50

  3. #3
    i/e regjistruar
    Anëtarësuar
    17-11-2006
    Postime
    81
    Nuk e kam lexuar mesazhin tend te pare, por nese ta kane fshire, nuk besoj se kam humbur ndonje gje te madhe.

    Per sa i perket modifikimit me nje "inline-patcher", padyshim. Madje edhe me nje debuger/dis-asembler skema mund te modifikohet fare lehte. Kjo eshte arsyeja qe une e konsiderova si skemen me te thjeshte te mundshme (ndersa skema me te sofistikuara perfshijne cryptimin e funksioneve jetike, apo vete-modifikimin e tyre).
    Nga ana tjeter, edhe kjo skeme e thjeshte eshte shume me funksionale se sa produktet e gatshme.
    Besoj fjala mbrojtje krijoi pak konfuzion. Konkretisht kemi dy mbrojtje, qe me marreveshje fjale po i quajme "mbrojtje nga kopjimi" dhe "mbrojte nga krakimi".
    Normalisht nje kraker do perpiqet te identifikoje "mbrojtjen nga kopjimi" dhe ta "thyeje" ate duke modifikuar instruksionet ne asm. Por qe ne proven e pare per te pare efektet e veprimit te tij mbi "brojtjen nga kopjimi", "mbrojtja nga krakimi" ka per tu aktivizuar dhe fare lehte mund t'i nxjerri jashte perdorimit instalimin e windowsit, duke e detyruar te humbase jo vetem "rezultatet e punes se tij" por edhe shume minuta me instalimin e windowsit dhe programeve te tjere.

    Morali eshte ky:

    Te veshesh "uniformen" e programatorit nuk do te thote te veshesh uniformen e nje njeriu "impotent", ne meshire te fatit (apo "zemergjeresise" se krakuesve).

    Eshte krejt e kunderta!

    Nje programator, permes programeve te tij mund te beje c'do gje ne c'do kompjuter, shume me shume se vete te zoterit e atyre kompjuterave mund te bejne permes "user interface" te aplikavioneve te gatshme.

    Nese te kesh ne dore "OllyDbg" apo ndonje tool tjeter ju duket se keni arme "shkaterrimtare", duhet te dini qe c'do inxhinier ka ne dispozicion mbi 10,000 funksione te gatshme (perfshire gjithe funksionet qe perdor OllyDbg), dhe me pak talent e fantazi mund te krijoje funksione qe askush s'i ka krijuar me pare (me siguri skema qe paraqita une njihet nga shumekush, megjithat une nuk e kam pare kurrkund, eshte thjesht produkt i fantazise time).


    Shenim: Nuk e mora vesh se c'fare sfide ka mbaruar, apo nuk u konsideroka sfide!

  4. #4
    Team UARE
    Anëtarësuar
    23-11-2006
    Vendndodhja
    Bathore
    Postime
    19
    Citim Postuar më parë nga Neritan Hyso
    Besoj fjala mbrojtje krijoi pak konfuzion. Konkretisht kemi dy mbrojtje, qe me marreveshje fjale po i quajme "mbrojtje nga kopjimi" dhe "mbrojte nga krakimi".
    Normalisht nje kraker do perpiqet te identifikoje "mbrojtjen nga kopjimi" dhe ta "thyeje" ate duke modifikuar instruksionet ne asm. Por qe ne proven e pare per te pare efektet e veprimit te tij mbi "brojtjen nga kopjimi", "mbrojtja nga krakimi" ka per tu aktivizuar dhe fare lehte mund t'i nxjerri jashte perdorimit instalimin e windowsit, duke e detyruar te humbase jo vetem "rezultatet e punes se tij" por edhe shume minuta me instalimin e windowsit dhe programeve te tjere.
    Me ka hasur nje mbrojtje e tille me Magic Utilities 2006. Exe-ja ishte e pakuar me PeCompact.Pasi e cpakova manualisht programi me njoftoi se ekzistonte nje version i ri dhe me ofroi update.Une e pranova me qellim qe te thyeja versionin e fundit.Update-i ishte faktikisht nje virus qe me bllokoi pothuajse 100% komjuterin.Nuk me prishi ndonje pune te madhe sepse rregullisht i bej backup particionit te Windowsit me Acronis dhe mu deshen vetem 3 min per rikthyer ne gjendjen e meparshme.Gjithashtu mund te perdor DeepFreeze ose ndonje program ekuivalent dhe ne kete menyre, mbrojtje te tilla nuk kane asnje rezultat.

    Citim Postuar më parë nga Neritan Hyso
    Morali eshte ky:

    Te veshesh "uniformen" e programatorit nuk do te thote te veshesh uniformen e nje njeriu "impotent", ne meshire te fatit (apo "zemergjeresise" se krakuesve).

    Eshte krejt e kunderta!

    Nje programator, permes programeve te tij mund te beje c'do gje ne c'do kompjuter, shume me shume se vete te zoterit e atyre kompjuterave mund te bejne permes "user interface" te aplikavioneve te gatshme.
    Sinqerisht qe te respektoj si nje programator te zotin por mesa shoh ke nje delir madheshtie te papare. Si qenka krejt e kunderta kur ne internet mund te gjesh krak pothuajse per cdo program? Si qenka krejt e kunderta kur vete ti dhe programi yt jeni viktima te krakut? Nejse e shoh qe egoja jote nuk ta le ta pranosh kete fakt prandaj nuk do debatoj me me ty ne lidhje me kete ceshtje.
    Ndryshuar për herë të fundit nga edspace : 09-02-2007 më 21:43
    Team UARE

  5. #5
    i/e regjistruar
    Anëtarësuar
    17-11-2006
    Postime
    81
    Kam pershtypjen se ky seksion i forumit ka te beje me programimin, dhe jo me psikoanalizen. Une nuk di t'i kem bere ndonje vleresim psiqik ndonje anetari te forumit deri tani, ndersa ty ne c'do 2 shkrime, te shoh ne pozicionin e "psikologut popullor" (nje here me "diagnostikove" si "naiv", tani si "te semure nga deliri i madheshtise". Jam kurioz te shoh si do "evuloje" semundja ime ne recetat e tua te ardhshme).

    Ne shkruajme ato qe mendojme, e per pasoje shkrimet tona reflektojne njohjen qe kemi ne mbi subjekte te ndryshme. Une ve re qe ti ke me shume njohuri se une per sa u perket aplikacioneve apo utilitive te gatshme, e per pasoje pa dyshim je nje perdorues kompjuteri me ekspert se une.
    Thene kjo, gjithashtu ve re se ke nje mungese informacioni per sa i perket teknologjive qe ekzistonje "mbrapa" "user-interfeisit" te aplikacioneve te gatshme. KJo eshte dhe arsyeja qe zgjidhjen e c'do problemi e shikon tek nje program i gatshem, dhe mos-ekzistencen e nje programi te gatshem e konsideron si pamudesi zgjidhje.

    Per sa i perket krakimit te fjalorit tim, te pakten ne nje internet kafe kam vene re se e perdorin pa kod qe prej nje viti (duke perdorur nje program i cili e "c'ben" totalisht instalimin" duke e ri-intaluar rregullisht c'do 1 apo dy muaj). Ndryshe nga kraku juaj i sakatosur, ata e perdorin programin me te gjitha funksionet e tij.

    Mbrojtja e programit tim reflekton nivelin tim te njohjes ketu e 5 vjet me pare. Nga ana tjeter, duhet ta pranoj se perpara 5 vjetesh nuk besoja se kish Shqiptare te zote te krakonin nje program si ky. Ne ate kohe nuk besoj se e kisha gabim.
    I vetmi gabim i imi (nese mund te quhet keshtu) eshte se nuk ma mori mendja se programi im do konkuronte me dinjitet edhe 5 vjete mbasi u krijua (jetegjatesia e nje programi tipik eshte reth 2-3 vjet).

    Une e kam lane mbrapa me kohe kompleksitetin e te qenit Shqiptar. Per mua zotesia eshte nje atribut individual qe s'ka te beje fare me perkatesine etnike, dhe nuk e justifikoj kurre pamundesine per te realizuar dicka me faktin "se une jam Shqiptar", por "me siguri te jashtmit mund ta realizojne filan gje".

    Gjen apo s'gjen krake per te gjitha programet ne internet, nuk e konsideroj fare si argument lidhur me subjektin qe po diskutojme.
    Ne "mbrojtje" te skemes qe paraqita ne fillim te kesaj kollone, do krijoj keto dite nje program te vogel demo, i cili do jete krejtesisht i pa demshem nese ekzekutohet normalisht, ndersa do rezervoje surpriza te pakendshme nese modifikohet. Do ta postoj diku dhe do ju njoftoj.
    Mund te provoni ta krakoni vete, apo mund t'ua jepni "kolegeve" tuaj "te jashtem" (meqe ata jane me te zote), puna juaj.

    Ajo qe do perpiqem une te demostroj eshte se "kur nuk je nen angazimin per t'u ofruar konsumatoreve produkte komode dhe te thjeshta per tu instaluar, eshte fare e lehte per t'i bere absolutisht te pa-thyeshem!". - Ju provoni te argumentoni te kundertetn.

  6. #6
    Team UARE
    Anëtarësuar
    23-11-2006
    Vendndodhja
    Bathore
    Postime
    19
    Citim Postuar më parë nga Neritan Hyso
    KJo eshte dhe arsyeja qe zgjidhjen e c'do problemi e shikon tek nje program i gatshem, dhe mos-ekzistencen e nje programi te gatshem e konsideron si pamudesi zgjidhje.
    Kjo s'ka kuptim! Ok jam dakort nqs. nuk kam ne duar nje program te gatshem si psh.Olly sigurisht nuk do kem mundesi te analizoj kodin dhe si rrjedhim nuk do mund ta modifikoj.Por e njejta gje vlen dhe per ty.Nqs.ti nuk do kishe ne dore nje program te gatshem si psh.C++ me cfare do ta ndertoje fjalorin? me kazem dhe lopate?

    Citim Postuar më parë nga Neritan Hyso
    Per sa i perket krakimit te fjalorit tim, te pakten ne nje internet kafe kam vene re se e perdorin pa kod qe prej nje viti (duke perdorur nje program i cili e "c'ben" totalisht instalimin" duke e ri-intaluar rregullisht c'do 1 apo dy muaj). Ndryshe nga kraku juaj i sakatosur, ata e perdorin programin me te gjitha funksionet e tij.
    Kjo menyre nuk mund te konsiderohet nje krak dhe programe te tilla ka plot net.Duke qene se vendosem qe mos ta botonim fjalorin tend ne net,atehere nuk u munduam shume per te bere nje thyerje perfekte.Duke qene se kemi hequr servisin fetsrv42.exe dhe evt.dll programi ka keto te meta:

    1 - Nuk monitoron dopjo klikun dhe clipboard-in
    2 - Nuk duken fjalet qe shkruhen ne textbox

    Ndersa mund te perkthesh sa te duash nga interneti dhe nga wordi pa asnje problem.Besoj se userat do preferonin me mire krakun tone "te sakatosur" qe mund ta instalojne ne sa kompjutera te duan sesa te paguanin 3500 leke per nje kopje te vetme te fjalorit.Megjithate meqe te paska ngelur merak te premtoj qe do ta thyejme me mire.

    Citim Postuar më parë nga Neritan Hyso
    Ne "mbrojtje" te skemes qe paraqita ne fillim te kesaj kollone, do krijoj keto dite nje program te vogel demo, i cili do jete krejtesisht i pa demshem nese ekzekutohet normalisht, ndersa do rezervoje surpriza te pakendshme nese modifikohet. Do ta postoj diku dhe do ju njoftoj.
    Mund te provoni ta krakoni vete, apo mund t'ua jepni "kolegeve" tuaj "te jashtem" (meqe ata jane me te zote), puna juaj.
    Ajo qe do perpiqem une te demostroj eshte se "kur nuk je nen angazimin per t'u ofruar konsumatoreve produkte komode dhe te thjeshta per tu instaluar, eshte fare e lehte per t'i bere absolutisht te pa-thyeshem!". - Ju provoni te argumentoni te kundertetn.
    Po ta them qe tani qe as qe kam ndermend te merrem me te nese e nderton ne menyre qe te demtoje OS. Nuk kam kohe te tepert per te humbur me nje program demo qe s'vlen per asgje. Kur te krijosh nje program komercial atehere do te te demostrojme te kunderten.
    Team UARE

  7. #7
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Pershendetje,

    Fillimisht urime per temen. Ka kohe qe ne forum nuk sheh tema te tilla te interesante.

    Tema qe ti trajton, eshte teme interesante dhe pjeserisht ka elemente te arsyeshem. Ajo qe mua nuk me duket me vend eshte pika ku ti, direkt ose indirekt, flet per nje program te pathyeshem.

    'Programe te pathyeshme nuk ka.' -- me poshte do ta riformoj kete shprehje.

    Flas ne baze te njohurive te mija si student viti i fundit ne degen 'Inxhinieri Kompjuterash'.

    Te flasim teorikisht, duke e pare nje program si nje tufe algoritmash (ku algoritm nenkuptoj cdo implementim te nje makine Turingu qe pranon/refuzon ne kohe finite), eshte e qarte se duhet te kemi nje gjendje fillestare dhe ndryshime te gjendjes fillestare nepermjet inputeve deri ne gjendjen perfundimtare, aty ku nje algoritem i tufes perfundon, dhe thirret nje tjeter per te vazhduar e keshtu me rradhe ...

    Pra ti je i detyruar te besh publike gjendjen fillestare te programit tend, (initial state), qe mund te jete procesi ne ram i startuar prej programit ne disk, ose cfaredolloj bashkesi instruksionesh e gatshme per tu egzekutuar.

    Plus kesaj ti duhet te besh publike edhe bashkesine e inputeve qe shkaktojne ndryshimin e gjendjes fillestare dhe fillimin e pjeses se instruksioneve qe sherbejne si 'handler'-a per keto inpute.

    Per te qene me i qarte, ti duhet te percaktosh rrjedhen e programit, kondicionalisht ne baze te disa verifikimeve si ne post-in tend. P.Sh: diferenca e vleres se nxjerre nga kodi hash eshte nje input per te kaluar gjendjen e procesit nga 'FunksioniPare' ne 'FunksionCrack' ne rast se differenca > 0.

    Ti nuk mund te mos e besh publike kete pjese. Edhe nese programi menjehere fillon te ndryshoje veten, edhe nese e ben kete menjehere pa input, perseri ka nje input 'lambda', ne kuptimin bosh, qe do te thote se gjendja ndryshon pa nevoje te nje inputi explicit. Pra ti serish je i detyruar te thuash se ku fillon ndryshimi, perndryshe algoritmi nuk do te dije ku te avancoje.

    Pra, teorikisht, per sa kohe ti ke te qarte gjendjen fillestare dhe inputet (kushtet) qe ndryshojne kete gjendje, ke mundesine qe programit tia kuptosh rrjedhen. Kur them rrjedhen, nenkuptoj bashkesine e mundesive te ndryshimit te gjendjes.

    Pjesa qe sapo shkoi ishte thjesht prezantimi i zhargonit. Ajo qe nje thyes i programit eshte i interesuar eshte fakti se ti je i detyruar qe te japesh edhe pjesen e 'handler'-ave per cdo input. Pra ti je i detyruar ti tregosh funsionet 'FunksionCrack' ose 'FunsionInicializimi'. Edhe nese ti perdor ndryshimin dinamik te
    kodit ti perseri duhet ti tregosh intruksionet e para te ndryshimit dhe hackeri mund ti ndjeke ato dhe te ta kuptoje se cfare mekanizmi perdor ti.

    Pra me sakte : 'Ti mund tia veshtiresosh jeten nje hackeri, por teorikisht rreziku i ndryshimit ekziston.'

    Gjithe te mirat!

    P.S: Ne kete post une flas ne baze te arkitekturave qe une njoh Von Neuman dhe Harvard. Te me falesh nese ka ndonje arkitekture tjeter qe ben te mundur te kunderten e kesaj teorie :-)

    Citim Postuar më parë nga Neritan Hyso
    Moderatori: Shkëputur nga tema Përkthyes i faqeve të Internetit
    ---------------------------

    U be ca kohe qe nuk jam pergjigjur, por midis punes per programin e ri, kurseve qe jap, dhe oreve pa drita, nuk kam gjetur shume kohe te lire. Per ta riparuar kete, dhe meqe ne fund te fundit ndodhemi ne ate pjese te forumit qe quhet "Arti i Programimit", po pershkruaj ndonje variant (ne menyre skematike) se si mund te mbrohet nje program.

    .... (fshire per arsye hapesire) ....
    He walks among us, but He is not one of us ...

  8. #8
    Analog Brain Maska e josif
    Anëtarësuar
    26-02-2004
    Vendndodhja
    madagaskar
    Postime
    245
    Per sa i perket perdorimi te ndonje teknike kunder hackerave, paraziteve, apo cdolloj bakterie tjeter :-), me vijne ne mend keto ide :

    1 - kursesi mos e bej publik kodin hash, pra vleren prej ku ti inicializon 'dwPreLlogariturHash' ruaje ne nje vend te sigurt. Mund te perdoresh nje DBMS serioz, ose ta therrasesh nepermjet networkut prej nje serveri. Perndryshe hackeri ta modifikon programin dhe ta shndrerron shumen e vlerave te cdo word-i duke shtuar ca instruksione diku, e hequr disa instruksione diku tjeter, ne menyre qe totali te jete serish = dwPreLlogariturHash.

    2 - je i sigurt se (p2-p1) eshte e barabarte ne te gjitha versionet e MS Windows. Pershembull ne 'windows vista' MUND te kete ndryshuar stili i ruajtjes se funksioneve. Nese 'FunksioniFundit' ruhet i pari dhe 'FunksioniPare' ruhet i fundit, atehere while (p1 < p2) kthehet ne loop infinit.
    Ndryshuar për herë të fundit nga josif : 17-02-2007 më 18:18
    He walks among us, but He is not one of us ...

  9. #9
    i/e regjistruar
    Anëtarësuar
    17-11-2006
    Postime
    81
    Nuk di sa normale është, që kur hap një temë të re, qoftë dhe në mënyrë të pavullnetshme (siç është rasti i kësaj teme ku edhe moderatori ka pjesën e tij), duhet të replikosh me të gjithë duke shkruar efektivisht më shumë se gjysmën e gjithë kollonës.
    Ndoshta dikujt i duket “eufori”, por unë i kam justifikuar ndërhyrjet e mia me faktin që të tjerët, në shkrimet e tyre më citonin mua (madje citimet zinin më shumë vend se ajo ç’ka shkruanin), e për pasojë më është dukur se prisnin një përgjigje nga unë.
    Sidoqoftë, meqë këto kohë është në modë mbajtja e një “profili të ulët” (ok, termin e “piratova” nga qëndrimet post-fushatë), ky është dhe mesazhi im i fundit për këtë temë, ndaj dhe ndoshta do zgjatem pak për t’ju përgjigjur të dy para-shkruesve (që sërisht më citojnë mua).

    Natyrisht programet nuk krijohen me “kazëm dhe lopatë”, por edhe sikur të krijoheshin, edhe kazma me lopatën janë mjete (tools) që i kanë krijuar të tjerët, pra në ç’do rast nuk “shpëton” dot nga “mjetet e gatshëm”. Por ajo që po thosha unë ishte se, duke e marrë si të mirëqënë se si ai që përdor C++ dhe ai që përdor OllyDbg janë njëlloj të mirë-informuar (dhe talentuar), mjete të tilla si gjuhët e programimit të vënë në dispozicion shumë më tepër mjete shprehëse për të shprehur talentin apo njohuritë se sa aplikacione të tilla si OllyDbg.

    Fakti që ekzistojnë shumë programe të krakuar, si dhe fakti që Shqiptarët përdorin vetëm programe të tilla (pra vetëm ato njohin), të çon në konkluzionin e gabuar se ç’do program mund të krakohet.
    E vërteta është se ndonëse ka shumë programe të “mbrojtur nga kopjimi”, mbrojtja e të cilëve është thyer, programet që “mbrohen edhe nga krakimi” zënë një përqindje shumë të vogël, dhe përgjithësisht programe të tilla nuk thyhen (ok, dikush mund të krijojë një KeyGen, por kjo është tjetër histori, jo rrallëherë sekreti mbi algoritmin e kodeve del nga vetë firma – korrupsionin s’e shpikën Shqiptarët!).
    Do thoni ju -“po kur qënka kështu, atëherë përse nuk mbrohen të gjithë nga krakimi?”. – Unë mund t’i përgjigjem me kopetencë kësaj pyetje vetëm për rastin tim, ndërsa për rastin e përgjithshëm vetëm mund të hamendësoj.

    Vetëm pak vite më parë, unë kisha vështirësi të nxirrja në treg një “Kurs Kompjuteri Multimedial & Interaktiv”, 100% me zë, 100% Shqip, e gjithë teoria me video dhe animacione, me një simulator të DOS-it në Shqip, lojra për të praktikuar përdorimin e mausit dhe tastierës, si dhe “hapësira interaktive” për të praktikuar gjithë teorinë mbi Windowsin - një nga programet më të mirë në Botë në llojin e tij. Vështirësia ime qëndronte në faktin se, në Shqipëri nuk ishin krijuar kurrë më parë produkte teknologike të një cilësie të krahasueshme me Botën (e lëre pastaj më të arrirë), e për pasojë konsumatori me të drejtë mund të mos kishte besim tek një produkt Shqiptar, kështu që tregtarët nuk donin as t’i hidhnin sytë. Mua mu desh të shpikja një “partner imagjinar”, t’i jepja atij gjithë meritat duke thënë “është një bashkëpunim Shqiptaro-Italian, ku Italinanët kanë bërë pjesën dërrmuese të punës, kurse Shqiptarët janë marrë kryesisht me përkthimin” – vetëm kështu munda “t’ua prish mendjen” disa tregtarëve. Ky është skenari më i keq i mundshëm – pamundësia të dalësh në treg në mënyrë që të tjerët të vlerësojnë atë çka ke për tu ofruar.

    Një skenar përsëri i pakëndshëm, por shumë më i mirë se i pari, është kur ti del në treg me një produkt, por dikush tjetër del me diçka më të mirë, e për pasojë produkti yt nuk vlerësohet. Të paktën në këtë rast e pate shansin për ta provuar veten. Në fund të fundit ky është një skenar normal, që herët a vonë i ndodh gjithkujt, ndaj dhe nuk ja vlen të shqetësohesh për të.

    Një skenar tjetër, sërisht i pakëndshëm, por akoma më i mirë se i dyti, është kur “programi tjetër”, s’është veçse programi yt i krakuar. Ndërsa në skenarin e dytë nuk merrje as të ardhura as reklamë, në këtë skenar të paktën publiciteti është i garantuar.

    Kur ti thua se “userat” do preferonin më mirë krakun tuaj me funksionalitet të cunguar, se sa versionin tim të plotë, kjo do të thotë se ata gjithashtu do preferonin më mirë krakun tuaj se sa versionin “pa para” të Ectacos apo Livingsoftit. Pra nëse ti po thua se programi im, i krijuar disa vite para versionit të fundit të Livingsoft, edhe vetëm me një pjesë të funksionalitetit të tij është më i mirë se ky i fundit, atëherë unë sinqerisht të falenderoj, sepse një publicitet të tillë unë vetë s’kam guxuar kurrë ta bëj.

    Kur ti më quan mua “viktimë”, edhe pse unë s’jam ndjerë i tillë as në skenarin e parë që përshkrova më lart, unë besoj se kjo fjalë në fakt të përshkruan më mirë ty. Unë nuk arrij të sjell në mend ndonjë punë, ku po të punosh aq kohë sa keni “punuar” ju mbi krakimin e programit tim, të fitohet më pak se 3500L. Pra në fakt ju e keni paguar programin tim më shtrenjtë se kushdo tjetër.

    Para ca kohësh lexova një artikull teknik mbi bug-et dhe teknikat për eliminimin e tyre. Ndër të tjera autori bënte edhe një analizë interesante se pse “ka kaq shumë bug-e në programet e sotme”. Me pak fjalë konkluzioni i analizës së tij ishte ky:
    - Dikur ishte shumë e vështirë të krijoje një program (psh. në asembler), e për pasojë vetë shkalla e vështirësisë ishte një “filtër” i fortë, të cilin pak kush arrinte ta kalonte, dhe ata që ja dilnin ishin mjaftueshmërisht kopetentë në atë që bënin.
    Sot ekzistojnë një mori “tool-sash” RAD (Rapid Application Developement) si Delphi, Borland C++ Builder, MFC, etj., të cilët i lejojnë thuajse kujtdo të krijojë një program brenda pak sekondash (në një pjesë të tyre mjafton të shtypësh vetëm një buton, dhe kaq mjafton që “tool-si” të të bëjë peshqesh një Notepad apo Wordpad aty për aty). Pra sot “filtri” është shumë i “butë”, shumëkush mund të bëjë një program, e për pasojë mesatarja e aftësive të krijuesve të tyre është më e ulët – për pasojë bug-et e shumta.

    Unë po e huazoj analizën e këtij autori, për të thënë se dy nga arsyet pse shumica e programeve nuk janë “të mbrojtur nga krakimi” janë:
    - E para, teknikat për mbrojtjen nga krakimi nuk janë dhe aq të lehta për t’u implementuar, pra përbëjnë një “filtër” ca më të vështirë, që jo të gjithë ata që krijojnë programe sot arrijnë ta kalojnë.
    - E dyta, RAD-et apo framework-et shërbejnë pikërisht për ta izoluar programatorin nga detajet teknike, por skemat e mbrojtjes kërkojnë pikërisht të jesh “në kontakt” me këto detaje teknike. Pra ndërsa këto platforma e bëjnë programimin më të lehtë, ato e bëjnë implementimin e mbrojtjes akoma më të vështirë.

    Gjithashtu në një artikull tjetër, ku analizoheshin RAD-et apo framework-et, thuhej diçka e tillë: “Ok, mbase me këto platforma është e vështirë të manaxhosh një projekt për një kohë të gjatë, pra projekti të evulojë për të krijuar disa versione të programit (për shkak të vetë “evolimit” të platformës), por kjo është ok, sepse me këto platforma mund të krijohet me shpejtësi një program nga e para, dhe programe të tilla janë gjithësesi programe me kosto të ulët, që përgjithësisht kanë një jetëgjatësi të shkurtër”.
    Pikërisht jetëgjatësia e shkrurtër është një tjetër argument pse një pjesë e programeve nuk kanë nevojë për mbrojtje të tilla të sofistikuara, ku implementimi i mbrojtjes mund të jetë më i vështirë se vetë krijimi i programit.

    Dhe si një argument të fundit po ju sjell në vëmendje se kjo është industria më e madhe në Botë. Jo rastësisht disa nga kompanitë e softwerëve janë edhe kompanitë me xhiron më të madhe të të ardhurave, ç’ka do të thotë se mbrojtjet aktuale teknike kombinuar me mbrojtjet ligjore, sot për sot rezultojnë të mjaftueshme.

    .................................................. .......................

    Për sa i përket analizës teorike të parashkruesit, pasojë e së cilës është dhe konkluzioni se “programe të pa-thyeshëm nuk ka!”, unë mendoj se analizës së tij i ka shpëtuar një detaj – “krakimi nuk është akt teorik, është krejt e kundërta!”
    Para se ta shtjelloj këtë, le të bëjmë një marrëveshje fjale për të përkufizuar se kur një program konsiderohet i pa-thyeshëm.
    Unë mendoj se përkufizimi më i saktë do ishte ky: “Një program konsiderohet i pa-thyeshëm, nëse për ta thyer atë, do duhej më shumë punë (apo kohë) se sa do duhej për ta krijuar nga e para”.
    Pikërisht mbrapa këtij përkufizimi qëndron motivimi praktik për të thyer një program – “programet thyhen pikërisht sepse është më e lehtë të thyhen se sa të krijohen nga e para”.

    Le të marrim një shembull me numra:
    Ta zëmë se për të krijuar një program duhen 100 ditë punë, nga të cilat mbrojtja na “hëngri” 1 ditë.
    Normalisht mjetet që përdoren për të krijuar një program janë shumë më komode dhe efektive se sa ato që përdoren për ta krakuar, pra duhet më shumë kohë për ta thyer mbrojtjen nga sa u desh për ta krijuar atë. Në shembullin tonë po themi se duhen 10 ditë për ta thyer.
    10 ditë për ta thyer mbrojtjen janë më shumë se 1 ditë që u desh për ta krijuar atë, por 10 ditë janë shumë më pak se 100 ditët që u deshën për të krijuar gjithë programin, pra gjithësesi ato 10 ditë e kanë justifikuar veten.

    Analiza teorike e parashkruesit mbi inputet, autputet, dhe monitorimin hap mbas hapi të instruksioneve qëndron, por a e keni vënë re se disa programeve, edhe kur ekzekutohen në kompjutera shumë të shpejtë, u duhet më shumë se 1 sekondë për tu hapur.
    Duke gjykuar nga numri i instruksioneve për sekondë që janë në gjendje të ekzekutojnë procesorët modern, me një llogaritje të përafërt mund të thuhet se përgjithësisht programet ekzekutojnë nga disa miliona në dhjetëra miliarda instruksione gjatë sekuencës së tyre të hapjes.
    Pavarësisht se një pjesë e mirë e tyre janë “loop-e”, prap se prap, koha që i duhet një njeriu për të lexuar/kuptuar hap mbas hapi ç’do instruksion, ndërsa programi ngarkohet, me një dis-asembler ku nuk ke gjëra të tilla si “FunksionKrak” apo “dwPreLlogariturHash”, por vetëm numra (offset-et) në hekzadecimal, mund të jetë e tillë që një njeriu mund të mos i mjaftojë e tërë jeta.
    Pa dyshim ekzistojnë teknika për ta reduktuar ndjeshëm këtë kohë, teknika që “nxirren në sipërfaqe” me anë të “user interface” të programeve të tilla si OllyDbg apo ndonjë tool tjetër.

    Ajo që unë u përpoqa të them më parë, është se ekzistojnë gjithashtu teknika të tjera për të “sabotuar” teknikat e mësipërme – duke i detyruar efektivisht krakerat në një sipërmarrje teorikisht të mundshmë, por ndoshta më afatgjatë se vetë jeta e tyre (dhe në ç’do rast më afatgjatë se jeta e subjektit (programit)).

    Skema që unë paraqita në fillim të kësaj kollone, ndonëse e thjeshtë, ilustronte pikërisht këtë koncept. Imagjinoni një program të mbrojtur me një skemë të tillë, ju e hapni me një debuger, vendosni një breakpoint, e ekzekutoni, dhe krejt pa pritur gjendeni përballë punës për të “ri-vendosur” disa Gb të humbura në kompjuterin tuaj (në rastin më të mirë, kur i keni bërë backup), dhe ndërkohë nuk arritët të “mblidhni” ndonjë të dhënë të rëndësishme nga “debugbreak-u” i rrezikshëm.
    Natyrisht dëmi është i riparueshëm, unë nuk thashë se mbrojtja konsiston në një bombë me sahat, por fakti është se koha që duhet për ta vrojtuar hap mbas hapi një program të tillë shumëfishohet ndjeshëm (vrojtimi i programit të dis-asembluar, por jo në ekzekutim, sado i zoti të jesh, nuk të jep shumë informacion nëse programi e ka të kryptuar një pjesë të funksioneve të tij, apo i modifikon ato në ekzekutim e sipër).
    Kështu që 10 ditëshi i shembullit të mësipërm fare lehtë mund të bëhet 300, shumë më tepër se 100 ditëshi që u desh për ta krijuar programin, e për pasojë kostoja e krakut mund të dalë edhe më e lartë se ajo e programit origjinal.

    Një program të tillë unë e konsideroj të pa-thyeshëm, dhe s’ka asgjë të pamundur për një realizim të tillë.

    Ka edhe një faktor psikologjik këtu. Kur krijon një program, qoftë edhe voluminoz, ti e shikon ç’do ditë tek sa ai “hedh shtat”, e për pasojë e di që puna që po bën herët a vonë do shpërblehet. Ndërsa kur je duke krakuar një program, i cili orë e çast të detyron t’i bësh backup kompjuterit, dhe nuk ka asnjë mënyrë për të kuptuar se edhe sa kohë ka për të zgjatur kjo punë, nuk di se sa javë, muaj, apo vite do insistonte dikush para se të dorëzohej.

    Për sa i përket merakut se mos Windows Vista mund të ndryshojë rradhën e vendosjes së funksioneve në memorje duke shkaktuar një loop pafund, ky është një merak i kotë. Nëse Windowsi do ishte aq i “marrë” sa të “guxonte” jo t’u ndryshonte rradhën, por qoftë edhe të “fuste” një funksion tjetër midis tyre, skema nuk do funksiononte gjithësesi (do ndryshonte hashi).
    Konkretisht programet kompilohen/linkohen në një format që quhet PE (Portable Executable – mbi këtë subjekt kam përshtypjen se krakerat e mi, ndonëse mund të jenë pa shkollë, mund të dinë më shumë).
    Fjala “Portable” e PE-së do të thotë të paktën 3 gjëra:
    - e para, pavarësisht nga tipi i modulit (exe, dll, apo driver) formati është i njëjtë.
    - e dyta, imazhi në memorje është konsistent (nuk po them identik) me imazhin e files në disk.
    - dhe e treta, i njëjti format për OS të ndryshëm.

    Një rradhitje e mirë e funksioneve në memorje, mund të bëjë që programi të ekzekutohet më shpejtë (psh. nëse disa funksione që ekzekutohen gjatë një momenti të caktuar të programit vendosen pranë njëri-tjetrit, shanset janë që ata të përfundojnë në “chache” e brendshëm të procesorit), për pasojë fjalën e fundit “se ku do përfundojnë funksionet në memorje” e ka hartuesi i programit – as kompilatori/linkeri dhe ca më pak Sistemi i Operimit mund të dalë mbi vullnetin e tij.
    Gjithësesi, nëse në ndonjë OS të caktuar ndryshon “alignment” i kodit në memorje (edhe një gjë e tillë mund ta ndryshonte hash-in), përsëri ka plot mënyra për t’i bërë “derman”. Pa u zgjatur në teknika më të vështira, unë do thosha se një programator mjafton thjesht ta testojë programin në të gjitha OS që ai do të suportojë. Nëse në ndonjë prej tyre manifestohet ndonjë problem, dy alternativa të thjeshta do ishin: ose një kompilim enkas për OS “problematik” dhe një program instalimi që instalon versionin e duhur për ç’do OS, ose nëse gjykohet se klientela që përdor këtë OS është fare e pakët, e për pasojë e neglizhueshme, thjeshtë e bën programin që të mos punojë në këtë OS (është fare e lehtë të zbulosh në mënyrë programatike versionin e Windowsit në të cilin programi po ekzekutohet).

    Për sa i përket arkitekturës “Von Neuman”, edhe mikro-ordinatori më i hershëm që kam parë unë (dhe që ishte me “manivelë”) ishte i po kësaj arkitekture, kështu që ndonjë arkitekturë tjetër nuk di. Nga ana tjetër, mënyra se si risorset e hardwerit ndahen (apo grupohen), pra arkitektura, s’ka të bëjë fare me subjektin.

    Për sa i përket ruajtjes së “dwPreLlogariturHash” në një server, me siguri në një të ardhme kur açesi në internet të jetë më i shpejtë dhe më i kudo-gjendur, skenari ku një pjesë e aplikacionit ekzekutohet në server ka për të qënë mbizotërues, gjithësesi, sot për sot nuk ka pse ta kushtëzojmë ekzekutimin e programit vetëm në kompjutera që kanë açes në internet (vetëm për hir të një “dwPreLlogariturHash”) – ka zgjidhje më të thjeshta.
    Duke ditur që në kompjuter ç’do informacion, në fund të fundit përfaqësohet nga numra, çfarë më pengon mua ta “sakrifikoj” një pixel të një prej bitmap-eve që shoqërojnë programin, për të ruajtur pikërisht vlerën e hashit.

    Arsyeja pse ekzistojnë file me format standart (një strukturë e brendshme – header – që shpreh domethënien e numrave që përbëjnë “trupin” e files) si dhe “ekstensione” standarte (bmp, wav, mp3, etj, etj), është pikërisht që domethënia e këtyre numrave të mund të lexohet/shfrytëzohet nga programe/përdorues të ndryshëm.
    Nëse ne duam të kundërtën, pra që domethënien e një blloku numrash të mos e kuptojnë dot programe/njerëz të tjerë, apo më mirë akoma ta keqkuptojnë atë, bëjmë pikërisht këtë gjë:
    Psh. një funksion të kompiluar (që s’është veçse një varg numrash) mund ta “fusim” në mes të një bitmap-i. Kur programi e ngarkon bitmap-in në memorje (për qëllimet e tij), fare lehtë (duke përdorur një offset) mund ta instruktojmë procesorin që një bllok të caktuar nga byte-t që përbëjnë bitmap-in ta trajtojë si instruksione (sepse të tilla janë - dhe këtë fakt e dimë vetëm ne).

    Tani, sa kohë i duhet një krakeri (sado të zotë), i cili ka para syve vetëm offsete në hxm, të mund të zbulojë “djallëzi” të tilla që s’duan më shumë se nja dy orë për t’u realizuar. Dhe ka skema (apo “djallëzi”) që edhe kur tjetri t’i shpjegon me fjalë s’është e lehtë t’i kuptosh, e lëre pastaj t’i “deduktosh” teksa “kullot” sytë para disa qindra mijëra instruksione në asm.

    Thuhet se në kompjuter s’ka asgjë të pamundur. Dikush mund ta lidhi këtë pohim ekskluzivisht me krakimin, dikush me programimin, me sa duket është çështje kënd-vështrimi.

    Përfundimisht për mua një debat nuk është një luftë, ku nëse argumentat e tua nuk “triumfojnë” mbi ato të kundërshtarit, “s’duhet të kthehesh i gjallë në shtëpi”. Unë e shoh një debat më shumë si një pikë-takimi, ku gjithkush sjell eksperiencën apo botëkuptimin e tij, dhe meqënëse lidhur me temën unë e ezaurova “botëkuptimin” tim, nuk kam për të shkruar më mbi këtë temë (ca gjëra më duhet t’i mbaj për vete).

  10. #10
    mos e luaj; I DEBUAR! Maska e qoska
    Anëtarësuar
    17-05-2004
    Vendndodhja
    tirane
    Postime
    837
    Nese duhet te shprehim botekuptimin tone ne kete teme ja ku eshte i imi:
    "Nje program mund te manipulohet(crakohet) pasi eshte thjesht arkitektura, apo duhet ta quaj funksionaliteti, qe te jep mundesine kete."

    Kjo rrjedh nga fakti, sic eshte permendur me siper, nje programues nuk mund te jete perfekt ai ben gabime dhe keto duhen testuar dhe per momentin e vetmja menyre efektive eshte te krijohet ambienti i testimit deri ne nivelin me te ulet. Problemi eshte qe kjo hap rruge per te bere keto manipulime!
    Nje zgjidhje do te ishte krijimi i dy lloj kompjuterash atyre qe te lejojne te kesh kete funksionalitet ose jo?! Por a m und te percaktohet kush do ta perdori kete funksionalietet apo jo eshte i nje parameter i papercaktuar.

    Per sa i perket replikes se kostoja e harxhuar ne thyerjen/modifikimin e programeve eshte kosto e tepruar, them se nuk qendron pasi biznesi me fitim prures ne kohet tona eshte siguria dhe ka te njejten mos themi me shume qarkullim te ardhurash me krijimin e programeve!

    Per ti rene shkurt a mund te krijojme programe te pathyeshme pergjigja eshte evidente: "JO!"(jo si fakt se nuk mund te shkruhet, qe ska lidhje me arkitekturen e permendur nga Josif, por nga fakti se e njejta arkitekture te jep mundesine te kthehesh mbraphst ose te "emulosh" nje gje te marre si te mirqene nga programuesi me dicka tenden.

    Josif,
    persa i perket arkitekturave Von Newman ka dhe nje arkitekture tjeter fatkeqesisht te paperfunduar qe do te kishte sjelle kompjuterin "e vertete" paralel qe sot po tentohet te arrihet nga disa modele te "quantum computers".
    gjithsesi nuk do te thote qe ne arkitekturat e sotme ti je i detyruar ta besh publike gjendjen fillestare te programit tend, kjo eshte nje zgjedhje e programuesit!

    Se fundmi, dua te theksoj dicka qe Neritani e merr te mireqene per mua nuk ka ndarje ndermjet nje modifikuesi programesh dhe nje prorgramuesi sepse ne fund te fundit te dy bejne te njejten gje ndryshojne gjendjen e makines sipas interesit te tyre ne nje moment te caktuar.
    Dallimi eshte tek njohurite/nivelin qe ata perdorin, i cili do shume pune te perfeksionohet kohet e sotme per shume arsye.
    Ndryshuar për herë të fundit nga edspace : 25-02-2007 më 02:23

Faqja 0 prej 4 FillimFillim 12 ... FunditFundit

Tema të Ngjashme

  1. Sheikh Muhamed Nasuridin Albani
    Nga forum126 në forumin Komuniteti musliman
    Përgjigje: 20
    Postimi i Fundit: 19-08-2009, 11:01
  2. Shenja ne Rruge!?
    Nga ORIONI në forumin Komuniteti musliman
    Përgjigje: 11
    Postimi i Fundit: 17-06-2009, 08:47
  3. Roli i Famullisë së Tiranës në mbrojtjen e hebrenjve
    Nga Brari në forumin Historia shqiptare
    Përgjigje: 0
    Postimi i Fundit: 31-01-2009, 02:55
  4. Zyra për Mbrojtjen e Qytetarëve: Armando Duka në konflikt interesi
    Nga Albo në forumin Tema e shtypit të ditës
    Përgjigje: 0
    Postimi i Fundit: 03-09-2006, 22:33
  5. Radio Maria ne gjuhen shqipe
    Nga NoName në forumin Komuniteti katolik
    Përgjigje: 3
    Postimi i Fundit: 09-08-2006, 03:47

Regullat e Postimit

  • Ju nuk mund të hapni tema të reja.
  • Ju nuk mund të postoni në tema.
  • Ju nuk mund të bashkëngjitni skedarë.
  • Ju nuk mund të ndryshoni postimet tuaja.
  •