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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Duda sobre OPCODE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre OPCODE  (Leído 9,324 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Duda sobre OPCODE
« en: 1 Abril 2010, 17:06 pm »

Hola a todos, estoy aprendiendo asm, y para comprenderlo mejor y llegar a hacer virguerias que se ven por ahi, he decidido leerme la teoria completa de los procesadores y CPU, y como se codifican las instruciones de asm a opcode para ejecutar, por ejemplo:
La instrucion que suma los registros EAX y EBX y almacena el resultado en EAX (es add si no me equivoco), como es que luego se codifica a:
03 c3
y presupongo que si hago por ejemplo un payload que haga esa operacion con los registros seria algo asi a injectar:

\x03\xC3 que vendria a ser 0x03 y 0xC3
como se hace esa transformación?
Osea que la equivalencia de los valores ASCII en hexadecimal que encuentro cuando abro un programa con Text plano son los opcode?
Perdonad si quizás este diciendo burradas, pero son cosas que he querido saber siempre.
Otra pregunta, el operador db para que sirve? deduzco que es para alamacenar en memoria, pero no lo se seguro.

Saludos


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #1 en: 1 Abril 2010, 17:25 pm »

0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion:

Código
  1. .386
  2. .model flat, stdcall
  3.  
  4. .code
  5. main:
  6. db 03h, 0c3h ;add eax, ebx es insertado aca, como dos bytes
  7. dw 0c303h ;add eax, ebx es insertado aca, como una palabra
  8. ret
  9. end main


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #2 en: 1 Abril 2010, 17:37 pm »

0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion:

Código
  1. .386
  2. .model flat, stdcall
  3.  
  4. .code
  5. main:
  6. db 03h, 0c3h ;add eax, ebx es insertado aca, como dos bytes
  7. dw 0c303h ;add eax, ebx es insertado aca, como una palabra
  8. ret
  9. end main
osea que la segunda letra que acompaña quiere decir si es byte, word, double word, cuadruple y 10 bytes. No?
Y otra cosa, como se que 0c3 y 0xC3 quiere decir cierto codigo en asm?

Saludos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #3 en: 1 Abril 2010, 17:44 pm »

Si, db, dw, dd, dq (no se si hay mas pero existe el operador dup para los arrays).

¿Como supiste en este caso?  ;D

http://www.sandpile.org/ia32/index.htm
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #4 en: 1 Abril 2010, 17:47 pm »

Si, db, dw, dd, dq (no se si hay mas pero existe el operador dup para los arrays).

¿Como supiste en este caso?  ;D

http://www.sandpile.org/ia32/index.htm
Leyendo xD
Pero me resuelven mas uds. porque lo explican de manera menos técnica.

Saludos
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #5 en: 1 Abril 2010, 17:52 pm »

Las equivalencias están definidas por el procesador, no es que sea equivalencia de las instrucciones nemotécnicas ni nada parecido.

Código:
http://www.masm32.com/board/index.php?action=dlattach;topic=63.0;id=58

Con eso puedes ver comodamente las equivalencias.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #6 en: 1 Abril 2010, 18:14 pm »

Las equivalencias están definidas por el procesador, no es que sea equivalencia de las instrucciones nemotécnicas ni nada parecido.

Código:
http://www.masm32.com/board/index.php?action=dlattach;topic=63.0;id=58

Con eso puedes ver comodamente las equivalencias.

Saludos
Y como interpreta esas shellcode el procesador? xD segun tenia entendido el procesador entiende de calculos lógicos y no caracteres hexadecimales.

Saludos
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #7 en: 1 Abril 2010, 21:14 pm »

No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario  :P.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Duda sobre OPCODE
« Respuesta #8 en: 1 Abril 2010, 22:10 pm »

No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario  :P.

Saludos
claro, pero cada numero hexadecimal representa un caracter no?
Entonces lo que vemos al abrir un ejecutable con editor de texto, si pasamos los caracteres ascii a hexadecimal y este numero lo relacionamos en la tabla sale desensamblado?
Aunque si no me equivoco todo esto iba por proceso (en memoria) y no en DD.

Saludos
En línea

08l00D

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: Duda sobre OPCODE
« Respuesta #9 en: 1 Abril 2010, 22:17 pm »

Y como interpreta esas shellcode el procesador? xD segun tenia entendido el procesador entiende de calculos lógicos y no caracteres hexadecimales.
El procesador hace calculos logicos, lo que el procesador "entiende" son, remontandose a lo mas basico, señales electricas mediante niveles de voltaje las cuales son representadas en el sistema binario (0 y 1)..
Lo de hexadecimal no es mas que una representacion para facilitar la comprension..

http://www.pctechguide.com/21Architecture_Principles.htm

claro, pero cada numero hexadecimal representa un caracter no?
No, un numero es un numero, dependiendo de la implementacion y de la interpretacion puede representar algo mas..
vos te debes confundir pensando que las instrucciones que los procesadores entienden son los nmemonicos que se usan en assembly... pero eso no es correcto para nada.. las instrucciones que usan los procesadores son cadenas predefinidas de bits... las cuales en los manuales como por ejemplo de intel estas son representadas en hexadecimal pero esto no quiere decir que ese numero hexadecimal represente el nombre de la instruccion en ascii  :P
Sino fijate que hay ensambladores que cambian el juego de nmemotecnicos que el que propone Intel y el resultado es el mismo.. Eso siempre va a depender de la implantacion ya que no hay nada estandar
« Última modificación: 1 Abril 2010, 22:31 pm por 08l00D » En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con opcode sete bl
Ingeniería Inversa
.:UND3R:. 3 2,131 Último mensaje 9 Septiembre 2011, 23:03 pm
por apuromafo CLS
Dudas sobre el opcode 'ldc.i4'
Ingeniería Inversa
Eleкtro 1 1,996 Último mensaje 27 Diciembre 2014, 22:01 pm
por MCKSys Argentina
Ayuda con OPCODE en .NET (TRUE FALSE)
Ingeniería Inversa
nartmidias 1 2,445 Último mensaje 5 Diciembre 2015, 20:44 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines