Hola a todos estoy creando un exploit para aprender el uso de los buffer overflow y me encontre con un problema sobre la programacion del mismo.
Resulta que tengo una variable llenarla de el caracter \x91, mas exacto poner 76 veces ese caracter.
Lo que hago es lo siguiente...
INICIO DE CODIGO
char nops[76];
memset(nops,'\x90',76);
El problema es que agrega al final de la variable tres caracteres mas que necesito que no esten, estos son los caracteres ↑♥>
Alguna idea sobre la solucion?
Gracias...
Ja Ja Ja :laugh:
El problema ya lo encontre resulta que me olvide que las variables en c++ se miden por bytes la cosa era poner
char nops[228];
antes de
char nops[76];
Ahora funciona bien...
¿? Por que 228? No tiene ningun sentido... :P
Mira asi, porque no le veo sentido... A ver que usas para ver los nops... :¬¬
#include <string.h>
int main ()
{
char nops [76];
memset (nops, '\x90', 76);
puts (nops);
}
Tu declaras dos veces nops, eso daria error, no se entiende nada....
¿Que funcion usas para imprimir?
Mejor usa sizeof en lugar del tamaño.
Cierto sera siempre mas correcto, pero yo prefiriria usar cuantas menos llamadas a otras funciones mejor no? En este caso no importa, pero en otras cosas si podria cambiar :P
Aun asi sigo con la duda...
Cita de: Blackhawk222 en 15 Enero 2011, 08:21 AM
char nops[228];
antes de
char nops[76];
Ahora funciona bien...
Pues no deberia...
sizeof es un operador y (practicamente siempre) se resuelve en tiempo de compilacion.
Ahh oks pues entonces habra que cambiar la practica :P pero como he dicho antes en este caso no importa...
Y ahora como es mi duda?