Autor
|
Tema: Duda sobre OPCODE (Leído 9,324 veces)
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion: .386 .model flat, stdcall .code main: db 03h, 0c3h ;add eax, ebx es insertado aca, como dos bytes dw 0c303h ;add eax, ebx es insertado aca, como una palabra ret 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
Mensajes: 2.021
Actualizate o muere!
|
0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion: .386 .model flat, stdcall .code main: db 03h, 0c3h ;add eax, ebx es insertado aca, como dos bytes dw 0c303h ;add eax, ebx es insertado aca, como una palabra ret 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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si, db, dw, dd, dq (no se si hay mas pero existe el operador dup para los arrays). ¿Como supiste en este caso? 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
Mensajes: 2.021
Actualizate o muere!
|
Leyendo xD Pero me resuelven mas uds. porque lo explican de manera menos técnica. Saludos
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Las equivalencias están definidas por el procesador, no es que sea equivalencia de las instrucciones nemotécnicas ni nada parecido. 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
Mensajes: 2.021
Actualizate o muere!
|
Las equivalencias están definidas por el procesador, no es que sea equivalencia de las instrucciones nemotécnicas ni nada parecido. 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
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario . Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario . 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
Mensajes: 168
|
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.htmclaro, 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 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
|
|
|
|
|
|