elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  [Duda] Practica 1 y 2 de Taller de Cracking desde 0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] Practica 1 y 2 de Taller de Cracking desde 0  (Leído 4,576 veces)
LukaCrosszeria

Desconectado Desconectado

Mensajes: 79


Lets go baby~


Ver Perfil
[Duda] Practica 1 y 2 de Taller de Cracking desde 0
« en: 3 Octubre 2013, 14:20 pm »

Estos las practicas 1 y 2.

La 2 no la entendí mucho asi que si alguien podria explicarmela se lo agradeceria.



Código:
MOV EAX, 1530h
ADD EAX, 1000h
SUB EAX, 500h
MOV EBX, 100h
SUB EAX, EBX


Primero el registro EAX toma el valor de 1530h [ No entiendo por que la H, alguien me lo explica? ] segundo en el ADD paso a tener 2530h, por que se le sumo. Luego en el SUB se le resto 500h, teniendo ahora 2030h. Luego el registro EBX tomo el valor de 100h. Se le resto a EAX el valor de EBX. 2030 - 100 = 1930h.



Código:
MOV EAX, 00004932h
ADD AX, 45h
SUB AL, 0Ah

Este es el que no entiendo. Si EAX es de 32 Bits, AX 16 Bitx, y AL  y AH DE 8 Bits, que tiene que ver esto en la cantidad? No me quedo muy claro...

Saludos.
En línea

apuromafo CLS


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: [Duda] Practica 1 y 2 de Taller de Cracking desde 0
« Respuesta #1 en: 3 Octubre 2013, 14:49 pm »

h=hexadecimal
la 1= 00001F30

estamos claros que hay cosas que son faciles de mil, estoy de acuerdo con las operatorias en hexadecimal, pero idealmente veamos la parte decimal, donde ocurre el error:
2030hexadecimal= 8240 decimal
100hexadecimal= 256 decimal
resultado de la resta= 7984decimal=1F30 hexadecimal

viendolo de otra forma antes del 20, viene el 1F, es un sistema de 16 ,su principio de formación podemos explicarlo que  cada numero en la misma base es 10, osea en la posición 16 es 10 (pues la base es 16)  luego llegará de A a F para llegar otra vez a formar el 20  , por lo cual si resto 20-1 (mirando las centenas), tenemos 1F  y no 19 , pues estás restando en hexadecimal y el numero anterior de formación era la F y no el 9
 
en las sumas y restas anterior, los numeros no sobrepasaban el 10, en este caso agregar de 20 a 25 y 20 no hay mucha diferencia, pero si restar uno se nota de inmediato.   saludos




el sentido del segundo en cantidad??
 
Citar
es como irá variando el número o registro cuando cambias ciertos registros,
eax= 4932 hex  en decimal signed o unsigned=18738
AX=4932 h  =18738
AH=49 h    =73
AL=32 h    =50

al sumar ax 45h  sea 69decimal tenemos  18738+69, luego tenemos 18807decimal  y ahora ax= 4977
lo cual cambia el registro ah y al, pero ah ya era 49, pero al antes era 32, pero ahora de 32 ahora vale 77, pues ah=49h y al=77h

al restar a al 0a  es restar 10, osea de 77h que es 119d  le restamos el 0a osea 10d y queda 109 osea 6d


lo ideal o normal a pensar es que si modifico ax, los registros ah o al, no está directamente relacionado y la verdad es que si, de otra forma no me explico que estás intentando lograr.
« Última modificación: 3 Octubre 2013, 15:09 pm por apuromafo » En línea

Apuromafo
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: [Duda] Practica 1 y 2 de Taller de Cracking desde 0
« Respuesta #2 en: 3 Octubre 2013, 16:35 pm »

Intentaré explicar lo mismo que apuromafo pero de otra forma, a ver si queda más claro teniendo dos respuestas en vez de una  :xD.

Código
  1. MOV EAX, 1530h
  2. ADD EAX, 1000h
  3. SUB EAX, 500h
  4. MOV EBX, 100h
  5. SUB EAX, EBX

Los registros de propósito generales de 32 bits son:
Código
  1. EAX
  2. ECX
  3. EDX
  4. EBX
  5. ESI
  6. EDI
  7. ESP
  8. EIP

Cómo su nombre los dice son de 32 bits, pero estos también se subdividen por así decirlo, tomaré el caso de EAX

(aclarar que la h minúscula significa que el valor está expresado en hexadecimal, la d minúscula significa que está expresado en decimal, la b minúscula significa que está expresado en binario, cabe descatar que es una forma de representar un dato, por lo cual 2d es lo mismo que 10b y 2h).

EAX = registro de propósito general de 32 bits
AX = registro de propósito general de 16 bits
AH/AL = registro de propósito general de 16 bits

Le daremos un valor a EAX:

Código:
12 34 56 78
(4 bytes o 32 bits)

si consultas en commandbar ? EAX (barra inferior de OllyDbg), deberías ver
Código:
12 34 56 78
(que son los valores que muestra OllyDbg del registro EAX).

Si consultamos por el valor de AX, este sería:
Código:
56 78

Si te das cuenta obtienes los dos bytes inferiores de EAX, (2 bytes equivalen 16 bits).

Ahora si tomas el valor de AH (h = high byte, un byte equivale a 8 bits):
Código:
56

Si tomas el valor de AL (l = low byte, un byte equivale a 8 bits):
Código:
78

A lo que quiero llegar es que te des cuenta que se pueden tomar distintos valores de un registro, ahora entendiendo esto (y asumiendo que conoces las instrucciones MOV, ADD y SUB entenderás lo que viene a continuación):

Ejemplo 1

Código
  1. MOV EAX, 1530h ; mueve a EAX el valor 1530h (valor hexadecimal)
  2. ADD EAX, 1000h ; a EAX que es igual a 1530h o 5424d o 1010100110000b se le 1000h
  3. SUB EAX, 500h ; luego se le resta 500h
  4. MOV EBX, 100h ; EBX valdrá 100h
  5. SUB EAX, EBX ; el resultado total de todas las operaciones se le resta EBX que posee un valor de 100h

Ejemplo 2

Código
  1. MOV EAX, 00004932h ; EAX tendrá el valor de 00004932h
  2. ADD AX, 45h ; a AX (4932h) se le suma 45h
  3. SUB AL, 0Ah ; a 77h (valor que tendrá AL, se le resta 0Ah)

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
apuromafo CLS


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: [Duda] Practica 1 y 2 de Taller de Cracking desde 0
« Respuesta #3 en: 3 Octubre 2013, 17:07 pm »

ahora estos mismos códigos los puedes ver "ensamblando en ollydbg", actualmente no tengo ollydbg en este pc, pero de igual forma
puedes ensamblar todos esos códigos  de una vez con multiassembler de michael  o IDAFICATOR de at4re (es un plugin)

o bien linea a linea con espacio(ensamble) , en cualquier programa desde su entrypoint , cuando terminas lo cual puedes hacer un simple f7 y confirmar los valores en eax, de cada uno, luego irás al panel de registros, miras eax  y en edit, tienes todos los valores anteriores.

yo actualmente lo anterior lo hice con una calculadora de windows , mientras estaba en clases de didáctica de geometría.
En línea

Apuromafo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Taller de Cracking desde cero - (actualizado: 27.julio.2008)
Ingeniería Inversa
Shaddy 9 82,813 Último mensaje 27 Julio 2008, 14:03 pm
por karmany
Proyecto-Taller: Electrónica, desde cero. « 1 2 3 »
Electrónica
Firos 20 42,760 Último mensaje 30 Abril 2010, 05:04 am
por Mr.Blue
Archivo de la practica del taller de malware
Seguridad
skapunky 2 4,686 Último mensaje 2 Febrero 2012, 13:36 pm
por skapunky
¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?
Programación General
theluigy13etv 1 3,649 Último mensaje 13 Mayo 2013, 20:43 pm
por s00rk
Taller teoría y práctica: Medidor de humedad relativa.
Electrónica
r32 0 3,907 Último mensaje 22 Septiembre 2015, 01:07 am
por r32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines