kojeg se program “obraca” ovoj kontroli. Kada otvorimo crackme pomocuResHackera imacemo ovo:900 DIALOG 0, 0, 240, 191STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION |WS_SYSMENUCAPTION "NAG-SCREEN"LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRALFONT 8, "MS Sans Serif"{CONTROL "&Continue", 1, BUTTON, BS_PUSHBUTTON | BS_CENTER | WS_CHILD |WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 92, 172, 50, 14CONTROL "NAG", 101, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE, 20, 48, 200, 10CONTROL "This nag stays here for 10 seconds, because", 102, STATIC, SS_CENTER |WS_CHILD | WS_VISIBLE, 20, 120, 192, 8CONTROL "you did not pay for this program !", 103, STATIC, SS_CENTER | WS_CHILD |WS_VISIBLE, 20, 132, 200, 9CONTROL "NAG, NAG, NAG ;))", 104, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE, 40,146, 148, 13...}iz cega smo saznali mnogo... Saznali smo da je ID cele forme koja sepojavljuje na ekranu 900 (decimalno) i saznali smo da je ID dugmetaContinue jednak 1. Ovo je bitno jer kada program na ASM nivou zeli da uradinesto sa nekim objektom on prvo mora da zna na koji objekat se datakomanda odnosi. Dakle ono sto je sigurno je da ce se kao jedan odparametara API funkciji koja ukljucuje dugme sigurno proslediti i IDdugmeta. To bi moglo da izgleda bas ovako:PUSH ukljuci_dugmePUSH Id_controlePUSH neki_drugi_parametriCALL UkljuciDugmeAPIKao sto vidimo moraju se koristiti PUSH komande, a PUSH 1 kako bi trebaloda izgleda prosledjivanje IDa dugmeta bi u HEX obliku izgledalo ovako 6A01.Sada samo treba da potrazimo ovaj binarni string u fajlu i videcemo odaklese to poziva API za ukljucivanje dugmeta. Pritisnite CTRL + B u CPU prozoruOllya da nadjete ovaj string. Kada unesete 6A01 prozor koji se pojavio trebada izgleda ovako:Pritiskom na dugme OKprogram ce nas odvestina adresu 0040111B aocigledno je da je topogresna adresa jerCreateFileA sluzi za nestodrugo. Pritisnucemo ondaCTRL+L (search again) izavrsicemo na adresi0040125A gde se nalazipar zanimljivih redova:PUSH 1 // enable = true,red PUSH 1 // ControlID i red CALL EnableWindow pa je ocigledno da se APIEnableWindow koristi za ukljucivanje dugmeta a da su mu parametri handlekontrole i true ili false switch.<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 84 <strong>of</strong> 165
ReEnable buttons - ResHackerOva neverovatno lame vrsta “crackovanja” je veoma zastupljena kodpocetnika i onih koji jednostavno ne zele da se “zamaraju” kopanjem po ASMkodu. Daleko od toga da ReSHacker nije koristan i pravim crackerima i da sene ustrucavaju da ga koriste. Naravno pravi crackeri upotrebljavaju ovajizuzetan program za kreiranje RES fajlova za modifikaciju sopstvenihprograma a ne za beznacajno ukljucivanje ukljucenih dugmica. Bez obzira nasve ovo naucicu vas kako da koristite ovaj program za resavanje NAGproblema. Kada otvorite Datenov program (pogledaj prosli deo poglavlja) ipreko njega otvorite nasu metu videcete sledece drvo u levoj strani ekrana:Naravno jasno je sta sve ovo znaci... U .res sekciji .exefajla postoji jedan Meni i jedan Dialog. Ako selektujemo./Menu/MAINMENU/0 videmo glavni meni programa kojise pojavljuje kada se iskljuci NAG screen. Jedini dialogkoji se nalazi u .res sekciji je bas taj NAG screen kojizelimo ili da uklonimo ili da dugme Continue u njemuuvek bude ukljuceno. Da bi smo ovo uradili otvoricemo./Dialog/900/0 i pogledacemo sta se nalazi tamo:900 DIALOG 0, 0, 240, 191STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION |WS_SYSMENUCAPTION "NAG-SCREEN"LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRALFONT 8, "MS Sans Serif"{CONTROL "&Continue", 1, BUTTON, BS_PUSHBUTTON | BS_CENTER | WS_CHILD |WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 92, 172, 50, 14CONTROL "NAG", 101, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE, 20, 48, 200, 10CONTROL "This nag stays here for 10 seconds, because", 102, STATIC, SS_CENTER |WS_CHILD | WS_VISIBLE, 20, 120, 192, 8CONTROL "you did not pay for this program !", 103, STATIC, SS_CENTER | WS_CHILD |WS_VISIBLE, 20, 132, 200, 9CONTROL "NAG, NAG, NAG ;))", 104, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE, 40,146, 148, 13CONTROL "Frame1", 105, STATIC, SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 8, 4, 224,164...}Ovo sto tu pise nam je skroz nebitno posto sve mozemo da odradimopomocu samog programa ResHacker, bez imalo kucanja. Ako NAG dialog nijeprikazan pritisnite Show Dialog dugme. Potom selektujete iskljuceno dugme,pritisnite desno dugme misa na njemu i selektujete Edit Control. U novootvorenomprozoru pronadjite WS_DISABLED i iskljucite ga. Pre nego stosnimite promene potrebno je da kliknete na OK a onda na Compile Script dabi program ucitao promene u memoriju. Sada mozete pritisnuti Save...Ovako ce dugme uvek biti ukljuceno jer program ne proverava stanjedugmeta pre nego sto mu posalje komandu da se ukljuci.Sam NAG Dialog se moze ukloniti na par nacina: Mozete selektovati./Dialog/900/0 i klikom na desno dugme ili reimenovati Dialog 900 u nestodrugo ili da jednostavno obrisati. Tako se NAG dialog nece nikada visepojavljivati. NAPOMENA: Brisanje ili reimenovanje dialoga nije preporucljivo au vecini slucajeve nece ni raditi kako treba pa ce se program srusiti.<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 85 <strong>of</strong> 165