Vous êtes sur la page 1sur 7

IMPORTANTE !!!

Si no tienes claro el crack en DOS incluidas las instrucciones


en ensamblador vas a perder el tiempo leyendo esta pgina, te
aconsejo que comiences la casa por los cimientos. No se
puede construir un tejado donde no hay algo que lo sujete.
Una ve que se tienen los conocimientos necesarios para
crackear en DOS, resulta muy !cil hacerlo en "indo"s
#aunque pareca una paradoja$, ya que disponemos de
herramientas ms potentes que nos !acilitan y reducen
mogoll%n el trabajo. &n cambio, es imposible crackear en
"indo"s sin conocimientos bsicos de 'S(. No creas que
esto del crackeo es cosa de unos minutos ni que siempre se
localia lo que andamos buscando. )en siempre una copia de
seguridad de tus datos ms importantes, los cuelgues son
habituales y despu*s de unos cuantos siempre se pierde algo
importante por el camino.
+amos a lo que nos interesa...
UN' NO)' ,U-.OS'
Sab*is que para crackear en DOS es imprescindible estar !amiliariado con
las interrupciones #o tener un buen manual de consulta$, bien pues
olvidaros de ellas en "indo"s. &l crackeo en este entorno requiere del
conocimiento de las '/.0s #o un buen manual de consulta$. S%lo cuando se
rueda un programa de dos en "indo"s es 1til el tema de las
interrupciones.
,uando desensambl*is el c%digo de lo que sea en "indo"s observar*is
que siendo un entorno de 23 bits la memoria continua estando
segmentada. No se a que es debido *sto, pero supongo que ser en
previsi%n a la demanda de memoria que tendrn los programas dentro de
poco tiempo. De todos modos podr*is comprobar que los segmentos son
increiblemente grandes, 4indo"s asigna a cada aplicaci%n en ejecuci%n la
!riolera de 5 gigabytes. 'unque no se disponga de tanta memoria, el
entorno hace uso de la memoria virtual para ello, de tal modo que si
rodamos 67 aplicaciones es como si tuvieramos 57 8igas de ram.
)ambi*n podr*is observar que algunos registros llevan una & delante, este
es el caso de
AX-BX-CX-DX-SI-DI-BP-SP-IP
que se convierten en
EAX-EBX-ECX-EDX-ESI-EDI-EBP-ESP-EIP
9os registros son los mismos solo que en lugar de ser de 6: bites son de
23 y, por supuesto, podemos utiliarlos como ms nos convenga.
SOFTICE... (nuestra arma ms poderosa. Alguien lo denomin !"a
Bestia!#
,on este programa se hacen maravillas que hace unos a;os eran
inimaginables cuando se crackeaba en DOS. 'ntes, para crackear una
protecci%n no demasiado complicada, era necesario tracear el c%digo
durante d<as entreros, saltando mil y una instrucci%n anti=traceo #int 2 a
punta pala, modi!icacion de las direcciones de retorno, etc$. 'hora y con la
ayuda de este poderoso programa se puede interrumpir la ejecuci%n de
cualquier cosa en el momento que nos interese. /ara ello es necesario
saber en qu* lugar o momento hay que poner un >/ #break point o punto
de ruptura$.
Si has llegado hasta aqu<, pensar* que tienes los conocimientos
necesarios para poder saltarme la e?plicaci%n de algunas cosas #de lo
contrario necesitar<a muchisimo espacio "eb y mogoll%n de curro para
poder e?plicarlo todo$. /or este motivo centrar* esta pgina en el uso de
so!tice, y que mejor !orma de empear que con una correcta...
,ON@.8U-',.ON D& SO@).,&
El primer paso$ despu%s de la instala&in es editar el ar&'i(o )"inice.dat) *
+uitarle el punto * &oma al menos a las siguientes lineas
&A/BcCD"indo"sDsystemDkernel23.dll
&A/BcCD"indo"sDsystemDuser23.dll
&A/BcCD"indo"sDsystemDgdi23.dll
Esto nos permitir inter&eptar las llamadas de las ,un&iones mas importantes.
En la linea /EFS(>BAA &am-iar XX por el n.mero de mega-*tes de memoria
ram +ue tengais disponi-le.
En la l/nea D-'4S.G&BAAAA &am-iar XXXX por el n.mero de 0-. de memoria
de (ideo +ue tengais.
En esta otra .N.)BHAIH podr%is personali1ar el arran+ue del so,ti&e inter&alando
entre .N.)BH * AIH lo siguiente
9.N&S JI
donde )2) es el n.mero de lineas +ue +ueremos +ue tenga la pantalla (34 es una
-uena &antidad#
,OD& ONI
esto permite +ue a la i1+uierda del &digo podamos (er$ en modo 'e5ade&imal$
los -*tes +ue &omponen &ada instru&&in
4, J
)2) 6 n.mero de lineas +ue +ueremos +ue muestre el &digo.
4-
nos mostrara el el estado de los registros.
"a linea de-eria de +uedar as/ (ms o menos#7
.N.)BHcode onIlines :7I"rI"lI"c 27IAIH
Winice.dat debera quedar ms o menos as
NMI=ON SIWVIDRANGE=ON OWER!ASE=O"" MO#SE=ON NOEDS=O""
NO$AGE=O"" $EN%I#M=ON %&READ$=ON VER'OSE=ON $&(SM'=)*+
S(M=),*- &S%=*./ DRAWSI0E=+)1* %RA=+ INI%=2!ODE ON3INES /,3W!
4,3WD *,3 WW ),3WA%!& EA53WA%!& 6EA53WA%!& E'53WA%!& 6E'532
INI%=2WA%!& ED53WA%!& 6ED53 532 ")=2732 "*=289r32 "4=28src32 "-=28rs32
".=28:32 "/=28ec32 ";=287ere32 "+=28t32 "1=28b<:32 "),=28<32 "))=28G =SS>ES$32
")*=28< ret32 S"4=28?ormat32 !"+=285%32 !"1=2%RA!E O""32 !"),=285$32
!"))=2S&OW '32 !")*=2%RA!E '32 A")=289r32 A"*=289d32 A"4=289c32
A"-=289932 A".=2!S32 A"+=285% R32 A"))=28dd dataaddr@A,32 A")*=28dd
dataaddr@A-32 !")=2aBtscr o??3 Bines /,3 9c 4*3 9d +32 !"*=289r389d389c32
E5$=c>C9indo9sCsDstemCEerneB4*.dBB E5$=c>C9indo9sCsDstemCuser4*.dBB
E5$=c>C9indo9sCsDstemCFdi4*.dBB E5$=c>C9indo9sCsDstemCcomdBF4*.dBB
E5$=c>C9indo9sCsDstemCs7eBB4*.dBB E5$=c>C9indo9sCsDstemCadGa<i4*.dBB
E5$=c>C9indo9sCsDstemCmsGbm.,.dBB WDME5$OR%S=O"" MONI%OR=, 3
WINI!E.DA% 3 HSIW1.CWINI!E.DA%I 3 ?or use 9it7 So?tI!E Version 4.* HWindo9s 1.I
3 )- JuBD )11; 3
66666666666666666666666666666666666666666666666666666666666666666666666
66 3 I? Dour 7aGe MORE t7an 4*M' o? <7DsicaB memorD instaBBedK c7anFe 3 t7e
$&(SM' Bine to t7e correct L o? MeFabDtes. 3 I? Dou 7aGe ESS t7an 4*M' Dou can
saGe a bit o? memorD bD 3 s<eci?DinF t7e correct L o? MeFabDtes 3 E:am<Be>
$&(SM'=4* 3
66666666666666666666666666666666666666666666666666666666666666666666666
66 3 66666 E:am<Bes o? sDm ?iBes t7at can be incBuded i? Dou 7aGe t7e SDM 66666 3
!7anFe t7e <at7 to t7e a<<ro<riate driGe and directorD
3OAD=c>C9indo9sCsDstemCuser.e:e 3OAD=c>C9indo9sCsDstemCFdi.e:e
3OAD=c>C9indo9sCsDstemCErnB4+/.e:e 3OAD=c>C9indo9sCsDstemCmmsDstem.dBB
3OAD=c>C9indo9sCsDstemC9in4+/.e:e 3 66666 E:am<Bes o? e:<ort sDmboBs t7at can be
incBuded 66666 3 !7anFe t7e <at7 to t7e a<<ro<riate driGe and directorD
3E5$=c>C9indo9sCsDstemCGFa.drG 3E5$=c>C9indo9sCsDstemCGFa.4Fr
3E5$=c>C9indo9sCsDstemCsound.drG 3E5$=c>C9indo9sCsDstemCmouse.drG
3E5$=c>C9indo9sCsDstemCnet9are.drG 3E5$=c>C9indo9sCsDstemCsDstem.drG
3E5$=c>C9indo9sCsDstemCEeDboard.drG 3E5$=c>C9indo9sCsDstemCtooB7eB<.dBB
3E5$=c>C9indo9sCsDstemCs7eBB.dBB 3E5$=c>C9indo9sCsDstemCcommdBF.dBB
3E5$=c>C9indo9sCsDstemCoBesGr.dBB 3E5$=c>C9indo9sCsDstemCoBecBi.dBB
3E5$=c>C9indo9sCsDstemCmmsDstem.dBB 3E5$=c>C9indo9sCsDstemC9inoBda<.mod
3E5$=c>C9indo9sC<roFman.e:e 3E5$=c>C9indo9sCdr9atson.e:e 3 66666 E:am<Bes o?
e:<ort sDmboBs t7at can be incBuded ?or Windo9s 1. 66666 3 !7anFe t7e <at7 to t7e
a<<ro<riate driGe and directorD 3E5$=c>C9indo9sCsDstemCs7eBB*4*.dBB
3E5$=c>C9indo9sCsDstemCcomctB4*.dBB 3E5$=c>C9indo9sCsDstemCcrtdBB.dBB
3E5$=c>C9indo9sCsDstemCGersion.dBB 3E5$=c>C9indo9sCsDstemCnetBib4*.dBB
3E5$=c>C9indo9sCsDstemCmss7rui.dBB 3E5$=c>C9indo9sCsDstemCmsnet4*.dBB
3E5$=c>C9indo9sCsDstemCms<9B4*.dBB 3E5$=c>C9indo9sCsDstemCm<r.dBB
Con esta pe+ue8a modi,i&a&in *a estamos preparados para utili1arlo. 9esetea
el ordenador para +ue la nue(a &on,igura&in tenga e,e&to.
Si *a lo tenemos instalado$ el siguiente paso es pro-arlo$ as/ +ue Ctrl:D para
entrar * F; para salir... +ue... <,un&iona2... -ien a'ora (amos a aprender a
utili1arlo
Observar los registros
Entrar en so,t&ite Ctrl:D * es&ri-ir )D EAX). En la (entana de datos apare&er el
&ontenido en as&ii del registro EAX. =a&er la misma prue-a &on el resto de
registros * o-ser(areis +ue la (entana &am-ia indi&andonos lo +ue 'a* en &ada
uno de ellos pero o>o$ no nos ense8a lo +ue 'a* en EAX sino lo +ue 'a* en el
lugar al +ue apunta EAX$ si EAX64?4?@;3A estaremos (iendo los datos +ue 'a*
en la posi&in de memoria 4?4?@;3A.
Si 'a&emos )D BEAX) so,t&ite &o>er el (alor de los primeros ? -*tes a los +ue
apunta EAX * nos ense8ar lo +ue 'a* en esa dire&&in. Se +ue es un po&o
lioso pero 'a&er prue-as 'asta +ue &omprendis lo +ue est su&ediendo.
Ceamos un e>emplo pr&ti&o7
Supongamos +ue en la (entana de registros o-ser(amos +ue EAX 6 44;4F34D
enton&e$ si 'a&emos )D EAX) (eremos +ue la (entana de datos apunta a la
dire&&in 44;4F34D * (eremos los -*tes +ue &ontiene. Estos pueden ser por
e>emplo EE-4E-44-44-FF-FF-FF-FF et&...
A'ora (amos a 'a&er )D BEAX) < +ue 'a&e so,ti&e 2 pues &arga los primeros
&uatro -*tes (EE-4E-44-44#$ los &olo&a en orden in(erso (44-44-4E-EE# * nos
muestra el &ontenido de esta dire&&in (44444EEE#. < lo 'a-eis entendido 2. Este
dato es mu* importante *a +ue las ,un&iones son llamadas pasandoles &omo
parmetros una dire&&in &on&reta * otras (e&es son llamadas di&iendoles en
+u% dire&&in se en&uentra la dire&&in donde estn los datos. Ser/a &omo de&ir
)la dire&&in es 44444EEE) * )la dire&&in se en&uentra donde apunta EAX)
Se +ue es un po&o &ompli&ado pero pra&ti&ar &on esto 'asta +ue entendis este
detalle * no pas%is a otro punto 'asta tenerlo -ien &laro.
>reak /oint
El -reaF point (-p# 'a* +ue entenderlo &omo un lugar (el +ue a nosotros nos
interese# donde 'aremos +ue el programa se detenga * so,ti&e nos de el &ontrol
ense8andonos el &digo desensam-lado o des&ompilado. Para 'a&er una
prue-a so-re esto 'a&er lo siguiente7
E.- Dentro de GindoGs pulsar Ctrl : D para entrar en so,ti&e
H.- Es&ri-ir )BPX IETJIKDOJTEXTA)
a&a-amos de de&irle +ue &uando se e>e&ute la ,un&in de &apturar el te5to de
una (entana interrumpa ese programa * nos de el &ontrol.
@.- Salir de so,ti&e &on F;
?.- E>e&utar &ual+uier programa +ue tenga una (entana donde se es&ri-a alguna
&osa (digamos$ por e>emplo$ la introdu&&in de un n.mero de serie#
;.- Es&ri-ir lo +ue sea * pulsar a&eptar.
3.- Si en este momento estis dentro de so,ti&e es +ue (uestro -p 'a ,un&ionado$
si no es as/ es +ue el programa +ue 'a-eis arran&ado no utili1a )getGindoGte5ta)
para la &aptura de te5to$ as/ +ue pro-ar &on )getGindoGte5t)$ )getgdlgitemte5ta)
o )getdlgitemte5t).
A.- Estamos antes de +ue el programa &apture el te5to +ue 'emos introdu&ido$
para +ue termine la ,un&in * sa-er +uien la 'a llamado pulsar FEH * FEH otra
(e1.
D.- A'ora estamos despu%s del &digo +ue 'a &apturado el te5to introdu&ido... *
a partir de este momento 'a* +ue tra-a>arselo.
L.- A partir de a+u/$ el programa 'ar una serie de &ompro-a&iones de la &adena
introdu&ida. Esta &ompro-a&in (ar/a dependiendo del programador +ue 'a
'e&'o la apli&a&in. Es posi-le +ue reali&e (arias opera&iones &on el (alor de
&ada -*te +ue &ompone la &adena (sumas$ restas$ multipli&a&iones$ opera&iones
XO9$ Et&.# * lo &ompare &on el n.mero +ue se supone es el ade&uado (de a+u/
+ue (arios n.meros de serie sean (alidos para registrar un mismo programa#.
Tam-i%n es posi-le (aun+ue rara (e1 su&ede# +ue se &omprue-e la &adena &on
otra &adena (la -uena# en &u*o &aso (eremos la -uena * la introdu&ida por
nosotros en la memoria$ no estarn mu* ale>adas la una de la otra. En &ual+uier
&aso$ despues de la &ompara&in siempre 'a* una instru&&in +ue nos en(/a al
&digo +ue &ontinua la e>e&u&in normal del programa o nos tira a la &alle en
&aso de +ue la &ompara&in no sea la ade&uada. Estas instru&&iones son mas o
menos as/7
&mp dGord ptr talM*M&ual$ pas&ual &ompara un n.mero &on otro
>e 44EH@?;3 salta al &digo -ueno si es igual
>mp 44@?;3AD salta al &digo de tirarnos a la &alle
Es lgi&o pensar +ue si (ariamos la instru&&in je 776325K: por jne 776325K:
jmp 776325K: el &digo se e>e&utar &omo si el programa ,uera legal o
registrado * no importa el tipo de prote&&in +ue tenga$ nos da lo mismo +ue sea
un dis&o lla(e$ una mo&'ila o un n.mero de serie. Da lo mismo el tipo de
prote&&in +ue utili&e el programador * lo so,isti&ada +ue %sta sea$ a nosotros
nos importa un pepino$ tan solo tenemos +ue dar &on la instru&&in +ue la
&omprue-a * par&'earla.
Podemos poner un BP en &ual+uier ,un&in de las API!s de JindoGs. "as +ue
&apturan el te5to introdu&ido en una (entana son7
>/A 8&)4.NDO4)&A)
>/A 8&)4.NDO4)&A)' #para la versi%n de 23 bites$
>/A 8&)D98.)&()&A)
>/A 8&)D98.)&()&A)' #para la versi%n de 23 bites$
=a* +ue tener en &uenta +ue &uando so,ti&e detiene la e>e&u&in del programa
por el BPX nos en&ontraremos AKTES DE NOE ESTA FOKCIOK SE EPECOTE$
as/ +ue tendremos +ue pulsar FEH para e>e&utarla * (er +uien la 'a llamado *a
+ue la &ompara&in se e,e&tuar despu%s. Este ,undamento es la -ase para
destripar &ual+uier prote&&in del tipo nQ de serie. Os aseguro +ue una (e1
&omprendido el me&anismo es mu* ,&il saltarse la ma*or/a de estas
prote&&iones$ tan slo tendremos +ue dar &on el ,ragmento de &digo +ue reali1a
esta tarea..
/untos de ruptura importantes
Adems de los puntos de ruptura *a &omentados * dependiendo del
&omportamiento de la apli&a&in$ podemos pro-ar los siguientes7
Supongamos +ue despues de introdu&ir un n.mero de serie no (lido nos sale
una (entan ad(irtiendonos de ello$ -ien pues de-eremos detener el programa en
alg.n sitio$ as/ +ue por-aremos &on alguna de estas ,un&iones7
(&SS'8&>&&/
S&ND(&SS'8&
(&SS'8&>OA
SEO44.NDO4
8&)/-.+')&/-O@.9&S)-.N8
8&)/-.+')&/-O@.9&.N)
E(&(,/F
Es importante o-ser(ar el &omportamiento de &ada programa para meterle mano
por un sitio u otro. Colo&ando un BPX en la ,un&in +ue utili&e el programador
para mostrarnos el mensa>e de error (tendremos +ue pro-arlas todas# estaremos
en la parte del &digo +ue *a =A =EC=O la &ompro-a&in de la prote&&in$ &on
lo +ue estaremos mu* &er&a del &digo +ue de-eremos par&'ear$ slo
tendremos +ue tener en &uenta +ue %ste &digo est detras de lo +ue estamos
tra&eando. Para no perdernos so-re un milln de paradas +ue nos 'ar So,ti&e
so-re las ,un&iones inter&eptadas$ 'a* +ue &olo&ar los BPX SO"AREKTE antes
de +ue el &digo llame a la ,un&in en el momento oportuno$ o sea$ +ue no 'a*
+ue &olo&ar los BPX antes de rodar la apli&a&in$ 'a* +ue ponerlos en el pre&iso
instante en el +ue sa-emos +ue (a a ser llamada para &ompro-arla.
Supongamos +ue rodamos la apli&a&in * estamos so-re la (entana de
introdu&&in del numerito$ pues introdu&imos el numerito * antes de pulsar so-re
el -otn de a&eptar es &uando &olo&amos el BPX$ de esta ,orma sa-emos +ue
so,ti&e dentendr la apli&a&in en el momento +ue a nosotros nos interesa.
,omandos del So!t.ce
BREAK POINTS (puntos de ruptura)
!OMANDO E"E!%O N#E $ROVO!A EJEM$O
'$MK '$M'K '$MWK '$MD 'reaE<oint de acceso a memoria '$M )*;>,,,-,),,
'$R 'reaE<oint de ranFo de memoria
'$IO 'reaE<oint de acceso a <uerto IOO '$IO RW *;+
'$IN% 'reaE<oint de interru<ciPn'$IN% )/
'$5 'reaE<oint de eQecuciPn '$5 RESSAIEBEEP
'MSG 'reaE<oint de mensaQe de Windo9s
'S%A% 'reaE<oint estadsticas
!SI$ SeBecciona !S>EI$ ranFo caBi?icado
MANIPULACIN BREAK POINTS
!OMANDO E"E!%O N#E $ROVO!A EJEM$O
'$E Edita breaE<oint
'$% #sa breaE<oint como <BantiBBa
' ista Bos breaE<oints actuaBes
'! 'orrar breaE<oint
'D DesactiGa breaE<oint
'E ActiGa breaE<oint
'& 'reaE<oint 7istoriaB
MOSTRARCAMBIAR MEMORIA
!OMANDO E"E!%O N#E $ROVO!A EJEM$O
R MuestraOcambia eB contenido de Bos reFistros
# DesemsambBa instrucciones
DK D'K DWK DDK DSK DK D% Muestra memoria
EK E'K EWK EDK ESK EK E% Edita memoria
$EEM ee de direcciPn ?sica
$OME Escribe a direcciPn ?sica
$AGEIN!arFa un <Fina en Ba memoria ?sica Hnota> no siem<reI
& ADuda sobre una ?unciPn es<eci?ica
R EGaBua una e:<resiPn
VER VersiPn de So?tI!E
WA%!&ASade reBoQ
"ORMA% !ambia eB ?ormato de datos de Ba Gentana
DA%A !ambia datos de Ba Gentana
MOSTRAR IN!ORMACIN "EL SISTEMA
!OMANDO E"E!%O N#E $ROVO!A EJEM$O
GD% Muestra tabBa de descri<ciPn FeneraB
D% Muestra tabBa de descri<ciPn BocaB
ID% Muestra tabBa de descri<ciPn de interru<ciones
%SS Muestra eB estado de Bos seFmento de Ba tarea
!$# Muestra in?ormaciPn de Bos reFistros de Ba !$#
$!I Muestra in?ormaciPn de Bos dis<ositiGos $!I
MOD Muestra Ba Gentana de Bista de moduBos
&EA$ Muestra Ba Gentana de memoria FBobaB
&EA$ Muestra Ba Gentana de Ba memoria BocaB
V5D Muestra Gentana deB ma<a V:D
%ASM Muestra Ba Gentana de Bista de tareas
V!A Muestra Bas BBamadas V:D
WMSG Muestra Ba Gentana de mensaQes
$AGE Muestra in?ormaciPn de tabBa de <aFina
$&(S Muestra todas Bas direciones GirtuaBes de direcciones ?sicas
S%A!M Muestra BBamadas a Ba <iBa
5"RAME Muestra Bos marcos de Ba e:ce<ciPn actiGos
MA$V+/ Muestra ma<a de memoria G+/
&WND Muestra Gentana de in?ormaciPn 7andBe
!ASS Muestra Gentana de in?ormaciPn de cBases
VM Muestra in?ormaciPn de Ba mquina GirtuaB
%&READ Muestra in?ormaciPn t7read
ADDR MuestraOcambia eB conte:to de direcciPn
MA$4* Muestra ma<a de secciPn de 4* bits
$RO! Muestra in?ormaciPn deB <roceso
N#ER(Muestra Bos <rocesos deB ma<a de direciones GirtuaBes
W&A% Identi?ica eB ti<o de una e:<resiPn
O'JDIRMuestra in?ormaciPn sobre eB directorio obQeto
DEVI!E Muestra in?ormaciPn sobre un dis<ositiGo
DRIVER Muestra in?ormaciPn sobre un driGer
"O'J Muestra in?ormaciPn sobre un arc7iGo obQecto
IR$ Muestra in?ormaciPn sobre un IR$
COMAN"OS "E PUERTOS IO
IK I'K IWK ID Introducir datos de un <uerto IOO @ I: H: es eB tamaSo deB datoI> @ ' =A 'DteK W =A WordK
D =A DobBe Word
OK O'K OWK OD Manda datos a un <uerto IOO
COMAN"OS "E CONTROL "E !LU#O
5 ReFresa aB administrador debuFFer o <roFrama
G Ir a direcciPn
% SoBo <asa una instrucciPn
$ $asa saBtando BBamadasK interru<cionesK etc.
&ERE Ir a Ba actuaB <osiciPn deB cursor
E5I% "orTar D saBir aB actuaB DOSOWindo9s <roFrama
GENIN% Generar una interru<ciPn
&'OO%Resetea eB sistema Hreseteo totaBI
CONTROLES "E MO"O
I)&EREDiriQe IN%) aB So?tI!E
I4&EREDiriQe IN%4 aB So?tI!E
0A$ DesinteFre incBuido en IN%) o IN%4
"A#%S ActiGaODesactiGa Ba ?aBta entram<ando So?tIce
SE% !ambia una GariabBe interna
OPTIMI$AR COMAN"OS
$A#SE @ Muestra Bos contr

Vous aimerez peut-être aussi