Cracking (softvér)

Cracking (z anglického "crack"- lámať; iné slovenské názvy pozri v článku cracking) je skúmanie, upravovanie, alebo úplné odstraňovanie ochranných mechanizmov proprietárneho softvéru použitím metód reverzného inžinierstva. Názov osoby odstraňujúcej tieto ochrany pozri v článku cracking. 
Prelamovanie softvérových ochrán je vo väčšine krajín protizákonné, pretože aj na softvér sa vzťahujú zákony o autorských právach (copyright), rovnako ako na iný druh autorských diel. Takto modifikovaný softvér sa nazýva warez a zväčša je šírený internetom prostredníctvom zdielacích serverov alebo P2P sietí (napr. torrent).
Programátori sa zvyčajne snažia minimalizovať možnosť crackovania ich softvéru použitím rôznych obranných techník, ako sú napr. obfuscator, šifrovanie, automodifikačný kód, atď..
Metódy.
Cracking používa prevažne metódy a postupy "reverzného inžinierstva", pretože ku komerčnému softvéru obvykle nie sú dostupné zdrojové kódy, vďaka ktorým by sa "útočník" v programe zorientoval a ktoré by umožňovali modifikáciu binárnych súborov štandardnými vývojárskymi (programátorskými) postupmi. Úlohou "crackera" je využiť techník reverzného inžinierstva k lokalizovaniu bezpečnostného mechanizmu(-ov) v programe a následne k jeho(-ich) neutralizácii. Vo všeobecnosti môžeme tieto metódy rozdeliť na pasívne a aktívne.
Medzi najpoužívanejšie "pasívne metódy" patrí disassembling, pri ktorom "cracker" získa s pomocou programu disassembleru z binárneho súboru spätne zdrojový kód (reverzia), a to obvykle v jazyku symbolických inštrukcií (tzv. assembleri) alebo v inom nízko-úrovňovom jazyku. Následnou analýzou získaného kódu sa v ňom snaží lokalizovať a potom pochopiť obranný mechanizmus, alebo napr. algoritmus pre vytváranie a kontrolu sériového čísla, potrebného k plnému fungovaniu daného programu. Ako ďalší krok môže pomocou hexadecimálneho editoru túto časť kódu napr. pozmeniť, odstrániť, či iným spôsobom modifikovať. Inými pasívnymi metódami reverzného inžinierstva je napr. skúmanie binárneho súboru z hľadiska importovaných funkcií, teda funkcií z externých knižníc, ktoré program používa. Útočníci sa často zameriavajú aj na monitorovanie prejavov programu v operačnom systéme. Sledujú sa napr. súbory, s ktorými program manipuluje, ukladanie a získavanie dát zo systémového registru Windows, či používanie iných zdrojov operačného systému.
Medzi najpoužívanejšie "aktívne metódy" patrí debugging, pri ktorom "cracker" pomocou programu - debuggeru môže kód v kontrolovanom prostredí spúšťať a v reálnom čase sledovať hodnoty, pamäť, registre procesoru a podobne. V prípade potreby môže za chodu modifikovať časť kódu a sledovať vplyv na chod celého programu.
Crack.
Crack je relatívne malý program, slúžiaci na odstránenie, alebo obmedzenie funkčnosti ochranných prvkov iného programu alebo softvérového balíku. Obvyklým mechanizmom fungovania je modifikovanie tej časti binárneho spustiteľného súboru, ktorá obsahuje kontrolný algoritmus pre používateľom zadané sériové číslo, prípadne jej úplné odstránenie, ak je to pre útočníka jednoduchšie. Často sa však stáva, že je možné algoritmus pre overenie sériového čísla použitím základných techník reverzného inžinierstva jednoducho napodobniť a v takomto prípade je bežnou praxou vytvorenie programu typu Keygen (generátor kľúčov). Ten na základe logiky overovania sériových čísel takéto čísla priamo pre užívateľa vytvára. Nie je tak potrebné zasahovať do súborov pôvodného proprietárneho softvéru. Užívateľ iba zadá vygenerované číslo do programu, ktorý chce nelegálne používať. Niekedy je možné takto vygenerované sériové čísla nájsť v bohatých internetových zdrojoch.
Riziká pre používateľov.
Medzi užívateľmi je neraz ignorovanou skutočnosťou častá prítomnosť škodlivého kódu (malvéru) v takýchto crackoch a keygenoch. Ďalším zdrojom ohrozenia môžu byť aj webové stránky, z ktorých je možné cracky sťahovať. Tieto riziká podstupuje mnoho používateľov aj napriek priamym varovaniam a výstrahám ich bezpečnostného a antivírového softvéru.