See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
CrackMe - Wikipedia, wolna encyklopedia

CrackMe

Z Wikipedii

CrackMe (dosłownie "złam mnie") to mały program stworzony tylko i wyłączne w celu złamania jego zabezpieczenia (lub zabezpieczeń), czyli odgadnięcie klucza, odpowiednie spreparowanie kodu wykonywalnego itp. Pisany najczęściej przez jednego crackera dla innych crackerów w celu sprawdzenia umiejętności reverse engineering.

Programy Crackme mają podobne zabezpieczenia do tych stosowanych w aplikacjach komercyjnych. Poprawne rozwiązanie danego crackme zwykle określa autor i dołącza tą informację w postaci pliku readme lub informacji w samym programie. Czasami pojawiają się zakazy co do używania konkretnego narzędzia, jednak respektowanie tych zasad zależy do crackera. Typ rozwiązania uzależniony jest od natury samego crackme przy czym można dokonać następującego podziału programów crackme ze względu na cel jaki postawił autor:

  • odnalezienie numeru seryjnego - co jest demonstracją zabezpieczenia "serial fishing",
  • napisanie keygena do crackme - ten typ crackme nazywany jest również mianem "KeygenMe",
  • stworzeniu cracka - czyli patcha zmieniający kod binarny crackme,
  • dopisaniu nowej funkcjonalności programu - typ nazywany jest także mianem "ReverseMe",

Część programów crackme zawiera kod wykrywający różne narzędzia, którymi często posługują się crackerzy (np. OllyDbg, SoftICE). Kod ten stosowany jest aby utrudnić analizę kodu crackme. Czasami należy zneutralizować taki kod, aby poprawnie rozwiązać dane crackme.

Przykładowo prosty program CrackMe może wyglądać następująco:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
  int serial = 123;
  int liczba;
  int i;

  cout << "Podaj serial:" << endl;
  for (int i = 0; i < 32; i++)
  {
    cin >> liczba;

    if (liczba == serial)
    {
      cout << "Gratuluję, podany numer jest prawidłowy!" << endl;
      cout << "Koniec programu." << endl;
      return 0;
    }
    else
    {
      cout << "Numer nieprawidłowy." << endl;
    }
  }
}

Po skompilowaniu i przeanalizowaniu programu np. narzędziem IDA widać, że aby obejść zabezpieczenie wystarczy zmienić instrukcję jnz (skocz jeżeli nie zero) na jz (skocz jeżeli zero) i program zaakceptuje każdy numer seryjny poza oryginalnym (w tym wypadku 123). Niescrackowany program skacze do funkcji wyświetlającej komunikat o dobrym numerze seryjnym, jeżeli wpisany numer jest identyczny z tym zapisanym w programie, natomiast program scrackowany w podany sposób działa odwrotnie.

Plik wygenerowany programem IDA pokazujący różnicę między wersją z zabezpieczeniem i zmodyfikowaną wersją bez zabezpieczeń może wyglądać w tym przypadku następująco:

This difference file is created by The Interactive Disassembler
crackme
00000797: 75 74

Dzięki temu wiadomo, że aby zcrackować to crackme wystarczy w skompilowanym pliku dowolnym hexedytorem znaleźć adres 00000797 i zmienić wartość bajtu z 75 na 74. To przykładowe crackme przedstawia oczywiście najprostsze możliwe zabezpieczenie. W przypadku tego programu można również w prosty sposób odczytać poprawny numer seryjny. Bardziej zaawansowane crackme generują fałszywe seriale, są skompresowane, zaszyfrowane lub wykorzystują skomplikowane algorytmy sprawdzające poprawność podanych danych, w związku z czym rozwiązanie ich wymaga dużo większego nakładu pracy.

[edytuj] Linki zewnętrzne

W innych językach


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -