Está en la página 1de 6

LECCION 2 :COMO COMENZAR A USAR EL SOFTICE Que es el SOFTICE exactamente?

El softice es exactamente un debugger o sea es una herramienta que usan los programadores para DEPURAR de errores sus programas, (DEBERIA A !E"E# U#AR$% &A# ' DEPURAR$%# BIE (, pero bueno, a nosotros los crac)ers nos sir*e para DEPURAR los programas de las protecciones+ CUALQUIER PROGRAMA SE PUE E CRAC!EAR CON SOFTICE? "ualquier programa puede ser destripado con softice, aunque ha, ciertos programas que *ienen con protecciones antisoftice, de cualquier manera esas protecciones generalmente pueden ser f-cilmente e*itadas utili.ando el programita /R%0#I"E que les hice ba1ar entre las herramientas, al haber e1ecutado el /R%0#I"E , estar este en la BARRA DE 2AREA# acti*ado, el softice es casi indetectable+ Despu3s el softice nos da la posibilidad de *er el programa funcionando , hacer pruebas , muchas cosas mas, queda en al habilidad del crac)er , tambi3n en la dificultad de la protecci4n la posibilidad de crac)earlo o no+ "A# PROGRAMAS INCRAC!EA$LES? 5a, ciertos programas que son demostraciones que no traen todas las opciones , o sea que funcionan parcialmente, si en la demostraci4n est-n deshabilitadas , se pueden habilitar no ha, problema, el tema es cuando ha, partes que directamente no *ienen en la demostraci4n o sea que el programa esta incompleto, ah6 la cosa se complica porque una cosa es crac)ear , otra completar un programa con cosas inexistentes+ 5a, crac)ers especialistas que escriben partes faltantes de programas pero creo que eso mas que I 0E IERIA RE!ER#IB$E es ,a otra ciencia+ $UENO COMENCEMOS # $ASTA E C"AC"ARA 5a, dos formas de entrar a un programa con el softice, *amos a aprender primero la mas f-cil, (AU 7UE 7UI8A# $A &E %# U#ADA(+ #i en el escritorio el programa cuando se instalo les puso un A""E#% DIRE"2% llamado solamente #'&B%$ $%ADER hagan clic) all6, si no, pueden ir a I I"I%9PR%0RA&A#9 U&E0A #%/2I"E9 #'&B%$ $%ADER ($E# RE"%&IE D% #I % $% 2IE E 5A"ER U A""E#% DIRE"2%(+ Antes de seguir por fa*or impriman esta lecci4n porque si no, *an a tener que estar entrando , saliendo de #%/2I"E a cada rato , se *an a marear+ Una *e. que e1ecutaron #'&B%$ $%ADER les *a a aparecer la *entana del #%/2I"E que se usa solo para arrancar desde aqu6 las *ictimas, por eso *amos a %PE , buscamos el "RA":&E+exe que no este crac)eado (#I % $% 2IE E BA;E $% DE UE!%( , lo abrimos entonces nos *a a aparecer el mensa1e< "<=>I D%>#=Escritorio="rac)me+exe opened successfull, o en su caso les aparecer- la carpeta donde esta , que esta abierto perfectamente+ Entonces comien.a el acto de magia, *amos a &%DU$E , clic)eamos $%AD , nos *a a aparecer un cartelito de error ( % #E PRE%"UPE E# U ERR%R PR%!%"AD% A PR%P%#I2% P%R E$ #%/2I"E PARA E 2RAR( pongan que #I , +++++++++++++++++ ADE 2R% &I A$&A+ ESTAMOS ENTRO EL SOFTICE %PRIMER PANTALLAZO& 7ue *emos aqu6 ahora que estamos dentro+ Un cuadradito titilando aba1o en la .ona de comandos (PARA E#"RIBIR( Un poco mas arriba una l6nea hori.ontal *erde con en el medio un nombre ("RA":&E ?++++( eso significa que estamos en la e1ecuci4n del archi*o crac)me+

% sea que all6 aparece el nombre del archi*o al cual pertenece la parte que estamos e1ecutando+ Despu3s un poco mas arriba aparece la parte donde se *a a desensamblar el programa, similar en forma a la que estamos acostumbrados a *er en el >DA#&, la primera columna son las posiciones de memoria, la segunda los n@meros hexadecimales , la tercera las sentencias en ensamblador+ #i recuerdan la primera lecci4n ,o les di1e que anotaran el punto de entrada del programa o E 2R' P%I 2 del crac)me aqu6 *emos que la l6nea blanca que indica la sentencia que se *a a e1ecutar esta en ABCBBB que era el punto de entrada del programa crac)me+ Al lado se *en por ahora en *e. de las sentencias de ensamblador todas I !A$ID I !A$ID , eso es porque el programa #%/2I"E genero un error para que el programa pare de golpe 1usto antes de empe.ar, pero eso no es nada+ $a tecla /CB es la que hace que e1ecutemos una sola sentencia ($A ABCBBB que es donde esta la ra,a blanca(, la tecleamos una sola *e.+ Ahora la l6nea blanca paso a ABCBBD al haberse e1ecutado la primera sentencia , ,a aparece el programa como corresponde en la segunda columna tenemos los n@meros 5EEADE"I&A$E# id3nticos que en el >DA#& (#I 2IE E DUDA# E 2RE A$ >DA#& ' !A'A A 0%2% E 2R' P%I 2 ' "%&PRUEBE ( , al lado las sentencias en idioma ensamblador, si alguno se fi1a el idioma que usa el #%/I"E no es exactamente igual que el del >DA#& pero las sentencias son las mismas , hacen lo mismo, es una pequeFa diferencia de notaci4n pero las sentencias importantes son iguales+ (5A' "A#%# E 7UE % #% I0UA$E# $%# U&ER%# 5EEADE"I&A$E# DE$ >DA#& ' E$ #%/2I"E ' E#% %"URRE "UA D% E$ E;E"U2AB$E E#2A "%&PRI&ID% , "% $% "UA$ E$ #%/2I"E E# E$ 7UE %# &AR"A $A !ERDAD DE $% 7UE 5A' E &E&%RIA ' PARA !ER $% &I#&% E E$ >DA#& DEBE&%# DE#"%&PRI&IR E$ E;E"U2AB$E $% 7UE #E E #EGARA E /U2URA# $E""I% E#( 7ue mas podemos *er aqu6H Apretamos /D , aparecen los *alores de todos los registros en este instante+ Algo mu, @til para cuando estemos en una sentencia "&P eax, ebx por e1emplo , queramos saber que esta comparando exactamente+ 2ambi3n apretando /A aparece congelada la pantalla de >I D%># en ese preciso instante, o1o que esta tecla no es para *ol*er a >I D%># sino para mirar si apareci4 alg@n cartel a algo en el escritorio cuando e1ecutamos alguna sentencia, *ol*emos al softice con /A de nue*o+ &as arriba aparece una banda hori.ontal que es el editor hexadecimal tiene posiciones de memoria , los bits en hexadecimal, con lo cual uno puede probar cambios en la memoria que despu3s puede hacer en el e1ecutable con el U$2RA EDI2+ 2odos los cambios que hacemos con el softice son en la memoria , nos sir*en para probar si al cambiar una cadena por otra en programa se comporta como nosotros queremos, pero si *ol*emos a cargar el programa de nue*o, nada cambio en el e1ecutable, entonces ha, que hacer los cambios que ,a probamos que sir*en en el #%/2I"E con el U$2RAEDI2+ El editor hexadecimal no indica la misma posicion de memoria que la que se esta e1ecutando , eso es porque ,o puedo querer cambiar algun numero que este mas adelante en el programa , que no se este e1ecutando en este momento exacto+ Adem-s en la misma l6nea hori.ontal a la derecha est-n los caracteres en modo texto (A#"II( por si queremos *er a que car-cter corresponde el numero hexadecimal+ #i alguno no puede *er alguna de las partes que acabo de mencionar, es probablemente por que en el >I I"E+dat no esta usando la misma l6nea I I2 que uso ,o, asi que me1or cambie la que tiene por la que ,o recomend3+( % 2A&BIE PUEDE A"2I!AR % DE#A"2I!AR PAR2E# "% $%# "%&A D%# >",>D,>/,>$,>R,>>,>#,>E al e1ecutar estos comandos se acti*an las distintas partes del #%/2I"E , si *ol*emos a e1ecutar el mismo comando se desacti*an nue*amente( Por otro lado si alguien prefiere *er en *e. de en este tipo de *isuali.aci4n, el #%/2I"E funcionando en una *entana de >I D%>#, tiene que ir a I I"I%9PR%0RA&A#9 U&E0A#%/2I"E9DI#P$A' ADAP2ER #E2UP , ah6 poner la tilde en U I!ER#A$ !IDE% ADAP2ER , despu3s clic)ear en test , salir de alli , reiniciar la maquina, por supuesto el funcionamiento es id3ntico, ha, que apretar la # exactamente igual al arrancar >I D%># , para entrar , salir ha, que teclear "2R$?D igual, a mi personalmente me cansa la *ista un poco esta forma de *isuali.ar pues la letra es mas chica, pero gustos son gustos+ Ademas si queremos con*ertir un numero de hexadecimal a decimal , *er tambien el car-cter en modo texto A#"II el comando utili.ado es<

H ( U&ER% 5EEA( por e1emplo si hacemos ? '( BBBBBAI BBBBBB IC J0J

% sea el AI 5EEA corresponde al IC decimal , al car-cter 0 en A#"II EMPECEMOS A "ACER ESASTRES Est-bamos dentro del archi*o crac)me , paraditos en la sentencia ABCBBD si hacemos /CB nue*amente *emos que e1ecuta el "A$$ que esta alli , sigue con la pr4xima sentencia, en realidad el comando /CB e1ecuta una sentencia pero no entra a *er dentro de los "A$$ cual es el contenido de la subrutina , e1ecutarla paso por paso si quisi3ramos entrar a e1ecutar paso por paso alguna rutina deber6amos teclear /K en *e. de /CB, pero como nosotros no queremos in*estigar el "A$$ no entramos , simplemente hago menci4n por si alguna *e. lo necesitamos, sepamos como hacer+ Podr6amos ir si quisi3ramos haciendo /CB, miles de *eces hasta que el programa arranque pero como chino no me quiero *ol*er, *amos a de1ar que siga e1ecut-ndose el programa , *amos a poner un punto de interrupci4n para que cuando el programa llegue a ese punto se detenga all6 , *uel*a al #%/2I"E+ "omo ,a sabemos por haber estudiado el >DA#& cual puede ser el salto sospechoso, *amos a poner un punto de interrupci4n all6+ De cualquier manera ,o puedo llegar a ese mismo salto sin haber utili.ado para nada el >DA#& pero como un crac)er se a,uda de todo lo que tiene a mano, *amos a probar el salto ese, mas adelante les *o, a enseFar como llegar a encontrar el salto directamente con el #%/2I"E+ Para poner un punto de interrupci4n se utili.a el comando BPE que quiere decir brea)point o sea tecleamos en la l6nea de comandos+ BPE ABCDAL que era el salto sospechoso , E 2ER (DE#DE A5%RA E &A# "UA D% DI0% 2E"$EAR U "%&A D% #E #%BREE 2IE DE 7UE 5A' 7UE 2E"$EAR E 2ER A$ /IA A$I8AR DE E#"RIBIR E$ &I#&%( , para que el programa continu3 e1ecut-ndose tecleo E , entonces el programa sigue funcionando , nos aparece la *entana del "RA":&E, donde entramos en 5E$P , luego RE0I#2ER , ponemos un nombre compuesto de todas letras por ahora , un numero de serie cualquiera, , le damos a %) , entonces el #%/2I"E interrumpe el programa gracias al brea)point que hemos puesto, entonces ahora la l6nea blanca esta en ABCDAL IA BI 1. BBABCDAc % ;U&PM

aqu6 el salto que en el >DA#& era 1e, es llamado 1. que es lo mismo en realidad, porque ;E quiere decir que saltan si son iguales , ;8 que salta si la diferencia entre los dos es cero lo que ocurre cuando son iguales, es diferencia de notaci4n pero los n@meros hexadecimales son los mismos IA BI , al lado aparece la decisi4n que tomo el programa con respecto a la comparaci4n , al salto o sea % ;U&P ( % !A A #A$2AR( *emos que la secuencia de n@meros hexadecimales que hab6amos encontrado en el >DA#&

IA BI EK CK BC BB BB EB NA
aqu6 es la misma tambi3n ,a que si seguimos copiando los n@meros que est-n al lado de las sentencias siguientes *emos que despu3s de IA BI *iene el "A$$ ABCLOD cu,os n@meros heaxdecimales son EK CK BC BB BB

"% $% 7UE U IE D% $%# D%# E$ (' )( DE$ #A$2% ' E$ E* +* )+ )) )) DE$ "A$$ 2E E&%# $A "ADE A "A#I "%&P$E2A (podemos seguir unos n@meros mas por si acaso mirando la pr4xima sentencia( #i queremos que en el editor hexadecimal apare.ca la cadena a modificar usamos el comando E seguido de la direcci4n de memoria a partir de la cual queremos que se *isualicen los n@meros 5EEA tecleamos entonces E ABCDAL , el cursor quedara titilando 1usto encima del IA que ha, que cambiar, si ah6 tecleamos EB , despu3s E 2ER *emos que autom-ticamente la sentencia ;8 cambio por ;U&P , ahora cambio la decisi4n del programa % ;U&PM por ;U&PM o sea que *a a saltar , *a a hacer en la memoria la prueba de lo que suceder6a si nosotros cambi-ramos los bits con el U$2RAEDI2 en el e1ecutable+ tecleamos E , entonces 0REA2 >%R: &A2EM 7uiere decir que la prueba fue exitosa , nos registra, entonces podemos ir al ultraedit buscar la cadena , cambiarla en el E;E"U2AB$E para que quede definiti*o, igual por ahora no lo hagan+ "ierren el "RA":&E , cierren la *entana del #'&B%$ $%ADER+ E1ecuten el crac)me normalmente sin abrirlo desde el #'&B%$ $%ADER , cuando apare.ca la pantalla de registro pongan un nombre de letras , la cla*e de numeros+ Pongan %) , listo, otra *e. el softice detiene el programa en la misma sentencia, ,a que como el BPE quedo en la memoria sigue funcionando , *a a parar el programa ah6 siempre, a menos que lo borremos+ Por ahora de13moslo, igual el comando que borra los BREA:P%I 2# es B" con eso se borran todos los brea)points que pusimos, mas adelante lo haremos+ 5a, otra forma tambi3n simple de probar si el salto al cambiarlo funciona , se usa generalmente cuando ha, programas que tienen *arios saltos dudosos , para no perder tiempo editando nada+ En la *entana superior de los registros se encuentra el registro EIP, este registro es mu, importante porque es el que muestra cual es la proxima sentencia que *a a e1ecutar el programa+que en nuestro caso es la de la linea blanca o sea ABCDAL+ #e puede editar el registro EIP para que el programa salte adonde ,o quieroH 7ue no se puede hacer con #%/2I"EH El comando para editar un registro es R seguido del registro que quiero cambiar , el signo igual , el nue*o *alor que le quiero dar+ % sea R EIPPABCDAc que es el lugar adonde quiero que salte, de esa forma salto sin cambiar la sentencia a *er que pasa , 7UE PA#AH+ 0RA2 >%R: &A2EM %tra forma de cambiar el salto es editar directamente la sentencia ensamblador eso se hace con el comando A A ABCDAL , cuando aparece el cursor titilando escribo la sentencia que reemplace al salto ;8 escribo ;&P ABCDAc

, cuando me aparece para escribir la sentencia siguiente tecleo E#" para salir del editor de sentencias+ "on esto editamos directamente la sentencia (&U' U2I$ "UA D% U % % "% %"E E$ "%DI0% 5EEADE"I&A$ DE U A #E 2E "IA( #i no se que numero corresponde a ;&P LBCDAc al usar el comando A lo cambio directamente aunque no sepa que numero debe reempla.arse , despu3s me fi1o que numero hexadecimal quedo en el lugar de ;&P , es EB como sabemos+ Bueno ,a sabemos los m3todos para reempla.ar un salto en la memoria , probar si es correcto antes de hacer los cambios con el U$2RAEDI2+ El otro salto es igual, una *e. que para en ABCDAL, pongo otro BPE en el otro salto pero para estudiarlo un poco mas pongo el BPE un poco antes o sea en ABCLKD BPE ABCLKD Una *e. que pongo el nombre (U#E&%# PEPE( , el numero de serie (NKNKNK( el programa para en ABCLKD !emos que esta usando algo en el registro E#I, para *er si ha, algun texto alli tecleamos D E#I , en la *entana de texto A#"II nos aparece la palabra PEPE , los numeros hexadecimales que corresponden a ese texto son QB AQ QB AQ, es e*idente que *a a testear como di1imos si todos los caracteres que tecleamos son letras, como haceH 2ecleo /CB para e1ecutar la sentencia+ $a pr4xima sentencia &%! A$, RE#IS mue*e el primer car-cter del contenido de E#I hacia A$ o sea que una *e. que tecleo /CB puedo fi1arme el *alor que toma A$+ H A$ , toma el *alor QB que corresponde a la letra P+ $uego testea 2E#2 A$, A$ si es cero , como no es cero en el salto subsiguiente pone % ;U&P+ $uego compara A$ con AC para *er que letras son ambos tecleamos H A$ me dice que es JPJ H AC me dice que es TJAJ o sea que esa comparando si la letra es ma,or que A (#I E# &E %R 2E 2IRA A % $U": 25ERE &A2E( , si es ma,or sigue compara si es menor que 8 , si es ma,or la transforma en &A'U#"U$A , #I0UE+ Aqu6 tambi3n podemos probar el salto *emos que sin cambiar nada cuando pusimos una letra la llegar al salto critico nos aparece % ;U&P en cambio cuando ponemos un numero (E E$ %&BRE( nos aparece ;U&P o sea que nos *a a tirar a % $U": 25RE &A2E+ Parcheando el salto con el editor hexadecimal, cambi-ndolo por NB NB , o poniendo R EIPPABCLKd que es la sentencia siguiente o poniendo A ABCLKb %P (E 2ER( , nue*amente %P (E 2ER( parchearemos este salto , e*itaremos este % $U": 25ERE &A2E por poner numeros en *e. de letras + %;% 7UE DE#PUE# $E# !A A APARE"ER E$ %2R% ' 2IE E 7UE "A&BIAR$% 2A&BIE PARA E!I2AR E$ %2R% "AR2E$I2%+

E#2E E# $A PRI&ERA PAR2E DE $A $E""I% DE #%/2I"E (U PRI&ER PA 2A$$A8% PARA 7UE $% !A'A U#A D%(, %B!IA&E 2E E# U PR%0RA&A 7UE 2IE E 2A 2A# P%#IBI$IDADE# 7UE E# &U' DI/I"I$ E U A #%$A $E""I% EEP$I"AR$A# P%R $% 7UE #E0UIRE&%# E U A #E0U DA PAR2E D% DE $E# EEP$I"ARE "%&% "RA:EAR #%$% "% #%/2I"E ' E$ RE#2% DE $A# P%#IBI$IDADE# DE I 2ERRUP"I% 7UE 2IE E E#2E &ARA!I$$%#% PR%0RA&A ' $A /%R&A DE 5A$$AR U&ER%# DE #ERIE "% #%/2I"E+ PRA"2I7UE I !ER2IR $%# #A$2%# E E$ &IEIIIxa, b-1enlo de nue*o, la *ersi4n sin parchear inst-lenlo de nue*o , prueben in*ertir los saltos con los tres m3todos conocidos+ $A PR%EI&A PAR2E DE $A $E""I% DE #%/2I"E E$ !IER E# 7UE !IE E+ AU RE!%IR RI"ARD% AR!A;A

También podría gustarte