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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Escribir en /dev/mem en: 10 Febrero 2011, 04:25 am
Necesito parchear un trozo de codigo de la memoria del kernel de linux (android).

Por el momento estoy con esto: (corriendo como root)

Código
  1. int fp = syscall(SYS_open,"/dev/mem",O_RDWR|O_SYNC,0);
  2. printf("ABIERTO\n");
  3. syscall(SYS_lseek,fp,0x70000000,SEEK_SET);
  4. syscall(SYS_lseek,fp,0x10000000,SEEK_CUR);
  5. syscall(SYS_lseek,fp,inet_bind-0xC0000000+0x80C00000-0x80000000+0xB0,SEEK_CUR);
  6. printf("POSICIONADO\n");
  7. ((unsigned int *)&path)[0] = 0xE3A00001;
  8. ((unsigned int *)&path)[1] = 0;
  9. syscall(SYS_write,fp,path,8);
  10. printf("PARCHEADO\n");

Esto me está generando algún kernel panic o algo, porque me reinicia el teléfono... Lo extraño es que, antes de reiniciar, la pantalla queda con "ABIERTO" y no en "POSICIONADO"... Sin embargo:

Código
  1. int fp = syscall(SYS_open,"/dev/mem",O_RDWR|O_SYNC,0);
  2. printf("ABIERTO\n");
  3. syscall(SYS_lseek,fp,0x70000000,SEEK_SET);
  4. syscall(SYS_lseek,fp,0x10000000,SEEK_CUR);
  5. syscall(SYS_lseek,fp,inet_bind-0xC0000000+0x80C00000-0x80000000+0xB0,SEEK_CUR);
  6. printf("POSICIONADO\n");
  7. syscall(SYS_read,fp,path,8);
  8. printf("LEIDO 0x%08X 0x%08X\n",((unsigned int *)&path)[0],((unsigned int *)&path)[1]);

Devuelve correctamente los bytecodes que necesito parchear.. O sea, la posición de memoria es la correcta...

Con kmem, es exactamente igual...

Vi muchos ejemplos en google y son parecidos a este... Pero, por supuesto, ami no me funciona...

Quería consultar, si alguien conoce del asunto y que me pueda dar una mano...

Gracias y Salu2
2  Programación / Programación General / Cambiar los "capabilities" de un proceso... en: 25 Enero 2011, 03:09 am
Hola comunidad

Estaba programando un app para android, cuando descubro que no se pueden usar los puertos 0-1023 como puerto local. Entonces, busqué el modo de solucionarlo y me encontré con el modo de ejecutar un programa compilado en C++ como Superusuario... Muy feliz, creo un simple programa que nada mas hace:

Código
  1. syscall(SYS_capget,&header,&data);
  2. data.effective |= CAP_TO_MASK(CAP_NET_BIND_SERVICE);
  3. data.permitted |= CAP_TO_MASK(CAP_NET_BIND_SERVICE);
  4. data.inheritable = 0;
  5. syscall(SYS_capset,&header,&data);

Ejecutando SYS_capget despues del SYS_capset descubro que los capabilities siguen siendo 0. No hubo efecto alguno :S

Googleando me encuentro con un patch que supuestamente impedirá que un proceso cambie los capabilities de otro... Supongo que esa es la razón... porque los syscalls devuelven 0 (no error)...

La pregunta es, ¿existe algún otro método que permita cambiar los capabilities de otro proceso en linux?.

Gracias!
3  Programación / Ingeniería Inversa / Ejecutables PE y su cabecera en: 28 Julio 2007, 20:25 pm
Bueno me encuentro estudiando un poco el ejecutable de windows. Y resulta que tengo un problema con la primera cabezera. Todos mis ejecutables compilados con del Dev-C++ tienen la primera cabezera exactamente igual (la de MZ). Sea cual sea el archivo, es exactamente igual. Lo mismo me pasa con el compilador del ensamblador. ¿Entonces? Que son estas cabezeras?
Intenté darle un valor de 0 a cada dato (excepto el de la clave magica MZ y el ultimo DWORD) y funciona de maravilla el programa... Intento darle otro valor como FF, FFFF o FFFFFFFF y el programa funciona como si no hubiece hecho nada...

¿De verdad funcionan estas cabezeras? ¿Son del DOS? ¿Por qué los programas de windows rellenan estas cabeceras, entonces?

Y otra pregunta. ¿Que es una pagina? Ya que el segundo dato pide la cantidad de bytes de la ultima página, pero como no puedo comprarar porque todos los ejecutables tienen el mismo valor, no entiendo.

La razón de esto es que quiero hacer un compilador sencillo... A lo mejor me ayude mucho un sencillo codigo fuente de un compilador sencillo en un lenguaje de mayor nivel que el ensamblador por favor :P...

Muchas gracias.
4  Programación / PHP / ¿Como cancelar conexión en PHP? en: 11 Mayo 2007, 22:13 pm
Solo quiero saber si es posible cancelar la conexion que se establece entre el servidor y el solicitante antes de que se envíen las cabeceras..
Algo parecido a EXIT; solo que éste envia las cabeceras en cuando yo no quiero que lo haga

Muchas gracias!
5  Programación / PHP / Problemas con las comillas en PHP en: 2 Mayo 2007, 23:20 pm
Usaré el siguiente codigo como ejemplo:
Código:
<?php echo $HTTP_GET_VARS['v']; ?>

Si yo pongo: "http://laweb.com/index.php?v=%22Hola%22" (que el %22 es la doble comilla (")) Lo que me aparece es:
\"Hola\"
En cuanto me debería aparecer
"Hola"

¡¡¡¿Porque tiene esas barras?!!! :S
Me pueden ayudar?
Gracias
6  Programación / Ingeniería Inversa / Ollydbg... ¿Como insertar un codigo? en: 26 Enero 2007, 20:19 pm
Probé muchas opciones del Olly Pero no logro insertar una orden ni nada... ¿Es posible, no?...
Si olly no puede... me recomiendan un buen debugger? :)

Gracias
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines