En
primer lugar, hablemos sobre lo que realmente es un byte
...para muchos de vosotros esto no ser� nada nuevo, as�
que puedes saltar esta parte si deseas. Un byte consiste
en 8 bits que solo pueden contener un valor de 0 o 1. Por
ejemplo, as� es c�mo aparece la letra ' X' en forma
binaria:
X - 01011000
�C�mo s� yo esto? Puedes conseguir esta informaci�n
bastante r�pidamente... Primero necesitas el valor en
HEX de la letra ' X' o el valor en DEC. Una manera muy
c�moda de conseguir el valor est� usando nuestro
debugger querido - SoftICE. En primer lugar entra en
SoftICE (Ctrl-D) y en la l�nea de comandos introduce:
? 'X'
Ahora ver�s algo como ' 00000058 0000000088 '. Eso
significa que 58 es el valor en hex de la letra X y que
88 es el valor decimal. Tambi�n puedes conseguir esta
informaci�n de otras maneras, mir�ndolo en una tabla
ASCII es quiz�s la mejor manera. Ahora que sabes el
valor dec de la letra lo puedes cargar en la calculadora
que viene con Windows. Es uno de los pocos programas que
Microsoft ha desarrollado y que realmente puede ser
�til. As�, ahora que est�s en la calculadora,
aseg�rate de que tienes elegido la configuraci�n '
avanzada' en el men� y introduce el valor en dec que
conseguiste previamente - 88 en este caso. Ahora pulsa
sobre ' la casilla de verificaci�n' del bot�n bin .. y
voila - conseguiste la forma binaria de la letra ' X'...
�bonito, huh?
Ok, ahora sigamos a la parte que todos han estado
esperando - �las instrucciones de manipulaci�n de bits!
Hay un par de estas instrucciones, y ver�s muy a menudo
esto cuando est�s en la ' autopista' del cracking.
Nosotros hablaremos sobre lo m�s com�n, comienza con...
�XOR�
Esta instrucci�n es muy importante, y quiz�s la raz�n
m�s grande de por qu� he escrito este ensayo. �Qu�
tipo de informaci�n podemos conseguir sobre esto? En
primer lugar, echemos una mirada a lo que PcHelp tiene
que decir sobre eso:
' Realiza un OR exclusivo de los operandos y devuelve el
resultado en el destino. '
�Ok, ilumin� eso las cosas para ti? Bien, no todos
piensan as�, as� que intentar� explicarlo.
Remont�monos de nuevo a nuestro ejemplo y usa la letra '
X'. �Qu� piensas que har�a una instrucci�n como ' XOR
88,65 '? Como ya sabes - 88 es el valor en dec de la
letra ' X' y 65 es el valor en dec de la letra ' A'
(debes poder deducir eso ahora). Echemos una mirada a lo
que ocurre:
Car�cter Valor Dec Forma Binaria
X 88 01011000
A 65 01000001
Resultado despu�s de XOR 85, 65:
25 00011001
Ok,
enfoquemos en la parte binaria. Lo que XOR realmente hace
es que compara dos bit entre si. Si ellos son el mismo,
el bit del resultado se pone a 0, si son diferentes el
bit del resultado se pone a 1. En cambio podemos
mostrarlo as�:
0011
0101
----
0110
Ok, ahora que t� (esperanzadamente) entiendes c�mo
funciona, tu pr�xima pregunta probablemente ser� algo
como '� para qu� puede usarse? '. XOR se usa mucho
cuando se necesita de un encriptado simple. Te mostrar�
por qu� aqu�:
XOR 88,65 = 25 (desde nuestro ejemplo)
XOR 25,88 = 65
XOR 25,65 = 88
�Ves qu� f�cil es conseguir el valor original? Echa
una mirada a esto:
X "XOR'eado" con 57 es 89 (nota que X
simboliza ' la inc�gnita' aqu�)
Y ahora quieres saber lo que es X... entonces simplemente
puedes usar XOR 57,89 y conseguir�s el valor de X. Otra
cosa para lo que puede ser buena esta instrucci�n es si
quieres poner algo a cero... digamos que quieres vaciar
el registro EAX. Hay algunas maneras de hacer esto,
incluyendo,:
SUB EAX,EAX
MOV EAX,0
Efectivamente, las dos instrucciones funcionan bien, pero
podemos usar XOR en cambio. .. �pero c�mo y por qu�?
XOR EAX,EAX
Que tambi�n pone EAX al cero... la �nica diferencia es
que este m�todo es m�s r�pido ( tarda menos tiempo de
CPU) que los otros y eso es por lo que normalmente se
usa. As� que ahora cuando veas esto mientras estas
crackeando, sabr�s qu� est� pasando. Todas las otras
instrucciones de manipulaci�n de bits funcionan
similarmente, echa una mirada a...
�AND�
Ahora que sabes c�mo trabaja XOR, es f�cil entender
c�mo AND funciona... Usaremos nuestro ejemplo una vez
m�s:
Car�cter Valor Dec Forma Binaria
X 88 01011000
A 65 01000001
Resultado despu�s de AND 85, 65:
64 01000000
Tambi�n
AND compara todos los bits uno por uno.
Si los dos se ponen a 1, el bit del resultado tambi�n se
pone a 1, si no el bit del resultado se pone a 0. Ok,
r�pidamente sigamos a otra instrucci�n.
�OR�
Una vez m�s nuestro ejemplo se usa:
Car�cter Valor Dec Forma Binaria
X 88 01011000
A 65 01000001
Resultado despu�s de OR 85, 65,:
89 01011001
Como los
otros tambi�n, OR compara los bits uno por uno. Si ambos
bits son 0, pone al bit del resultado a 0, si no lo pone
a 1.
|