Título: Duda sobre OPCODE Publicado por: Debci 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 Título: Re: Duda sobre OPCODE Publicado por: Eternal Idol en 1 Abril 2010, 17:25 pm 0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion:
Código
Título: Re: Duda sobre OPCODE Publicado por: Debci en 1 Abril 2010, 17:37 pm 0x3 y 0xC3 ya estan en hexadecimal, en MASM se usa la siguiente notacion: osea que la segunda letra que acompaña quiere decir si es byte, word, double word, cuadruple y 10 bytes. No?Código
Y otra cosa, como se que 0c3 y 0xC3 quiere decir cierto codigo en asm? Saludos Título: Re: Duda sobre OPCODE Publicado por: Eternal Idol 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 Título: Re: Duda sobre OPCODE Publicado por: Debci 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). Leyendo xD¿Como supiste en este caso? ;D http://www.sandpile.org/ia32/index.htm Pero me resuelven mas uds. porque lo explican de manera menos técnica. Saludos Título: Re: Duda sobre OPCODE Publicado por: [Zero] 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 Título: Re: Duda sobre OPCODE Publicado por: Debci 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. Y como interpreta esas shellcode el procesador? xD segun tenia entendido el procesador entiende de calculos lógicos y no caracteres hexadecimales.Código: http://www.masm32.com/board/index.php?action=dlattach;topic=63.0;id=58 Con eso puedes ver comodamente las equivalencias. Saludos Saludos Título: Re: Duda sobre OPCODE Publicado por: [Zero] en 1 Abril 2010, 21:14 pm No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario :P.
Saludos Título: Re: Duda sobre OPCODE Publicado por: Debci en 1 Abril 2010, 22:10 pm No son caracteres hexadecimales, son numeros hexadecimales, que se pasan a binario :P. claro, pero cada numero hexadecimal representa un caracter no?Saludos 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 Título: Re: Duda sobre OPCODE Publicado por: 08l00D 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 Título: Re: Duda sobre OPCODE Publicado por: Debci en 1 Abril 2010, 22:52 pm Gracias me habeis aclarado muchas cosas.
Saludos |