You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
S<strong>of</strong>tICE detectionEvo jednog primera za Delphi programere. Ovaj deo koda je zasebnafunkcija koja se koristi za detekciju aktivnog S<strong>of</strong>tICEa. Ovo je standardnadetekcija S<strong>of</strong>tICEa i kao ovakva se nalazi u 90% programa koji koristetakozvanu Anti-S<strong>of</strong>tICE funkciju.function S<strong>of</strong>tIce95: boolean;var hfile: Thandle;beginresult:=false;hFile:=CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ orFILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);if(hfileINVALID_HANDLE_VALUE) thenbeginCloseHandle(hfile);result:=true;end;end;Prisustvo debuggera mozete proveriti uz pomoc malog Delphi programa kojise nalazi ovde …\Casovi\Cas7\Debugger check.exe. Posto znamo kako se zastitaimplementira u neki program stoga znamo kako i da zaobidjemo ovuproveru. Zastita koju u ovom primeru hocemo da zaobidjemo je proveraaktivnog S<strong>of</strong>tICEa i S<strong>of</strong>tICEa na NTu. Neznatna je razlika izmedju ove dveprovere i one uvek u programima idu zajedno. Jedina razlika izmedju NT iostalih windowsa je u tome sto je prvi parametar za CreateFileA API\\.\NTICE umesto \\.\SICE. Posto su ovde u pitanju dva string parametrakoja se prosledjuju API funkciji stoga se one sigurno u fajlu nalaze kaostringovi i mogu se naci uz pomoc String Reference prozora u W32Dsamu ilipomocu odgovarajuce komande u Olly-u. Dakle provericemo ovu teoriju upraksi. Otvorite ovu “metu” u Olly-u, pronadjite pomenute stringove ipostavite break-pointove na njih. Sa F9 st<strong>art</strong>ujte program i pritisnite S<strong>of</strong>tICENT dugme. Ono sto vidite je sledeca004523C4 /$ 53PUSH EBX004523C5 |. 33DB XOR EBX,EBX004523C7 |. 6A 00 PUSH 0 ; /hTemplateFile = NULL004523C9 |. 68 80000000 PUSH 80 ; |Attributes = NORMAL004523CE |. 6A 03 PUSH 3 ; |Mode = OPEN_EXISTING004523D0 |. 6A 00 PUSH 0 ; |pSecurity = NULL004523D2 |. 6A 03 PUSH 3 ; |ShareMode = ...004523D4 |. 68 000000C0 PUSH C0000000 ; |Access = ...004523D9 |. 68 F4234500 PUSH Debugger.004523F4 ; |FileName = "\\.\NTSICE"004523DE |. E8 4543FBFF CALL CreateFileA ; \CreateFileA004523E3 |. 83F8 FF CMP EAX,-1004523E6 |. 74 08 JE SHORT Debugger.004523F0004523E8 |. 50 PUSH EAX ; /hObject004523E9 |. E8 1A43FBF CALL CloseHandle ; \CloseHandle004523EE |. B3 01 MOV BL,1004523F0 |> 8BC3 MOV EAX,EBX004523F2 |. 5BPOP EBX004523F3 \. C3RETfunkcija koja proverava da li je SoiftICE aktivan. Ono sto vidimo jejednostavna funkcija koja vraca 1 (true) ako je SICE detektovan ili 0 (false)<strong>The</strong> Art <strong>of</strong> Cracking by Ap0x Page 69 <strong>of</strong> 165