• Jueves 2 de Mayo de 2024, 21:43

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - clicklose

Páginas: [1]
1
ASM (Ensamblador) / Re: Program headers de un ELF
« en: Miércoles 9 de Marzo de 2011, 18:36 »
Perdón, nuevamente me retrasé para responder :(

Tienes razón, lo que digo es válido para los sistemas GNU/Linux en este caso

Saludos

2
ASM (Ensamblador) / Re: Program headers de un ELF
« en: Lunes 28 de Febrero de 2011, 19:20 »
Uh, me re colgué para responder, perdón.
El virus anda bien :)
La sections header table en archivos ELF ejecutables son completamente ignorados por el SO a la hora de cargarse en memoria (de hecho la especificación ELF establece que para archivos ejecutables la SHT es completamente opcional)
Al parecer lo que hace el SO es leer del PHT el offset físico en el archivo de cada segmento que se cargará y el tamaño físico, y luego cuando debe cargar el programa simplemente "mueve esa parte del archivo" a memoria.
De todas formas los SHT deben actualizarse tras una infección para que al leer el archivo con readelf por ejemplo no salte que está corrupto, fuera de este detalle el programa carga igual sin problemas si uno no modifica los SHT. Incluso pueden ser borrados del archivo y este se ejecutará correctamente.
En fin, mil gracias de nuevo.

Saludos

3
ASM (Ensamblador) / Re: Program headers de un ELF
« en: Jueves 17 de Febrero de 2011, 12:59 »
Bueno, a ver. Primero que nada quiero decir que todo lo que se ve en internet sobre las especificaciones ELF está algo errado o al menos incompleto

Creo que ya entendí como funciona todo, y me parece que tampoco son los section headers los responsables de que todo se cargue bien, porque de hecho probé borrarlos con el bless y el ejecutable anda igual, sucede que lo que hace que se cargue bien son dos parámetros de PHT que serían el offset y el filesz.
Tengo que programar el virus, así que cuando termine si todo funciona bien pongo mi conclusión a ver si coincidimos.
Te doy mil gracias por la ayuda

Saludos

4
ASM (Ensamblador) / Re: Program headers de un ELF
« en: Martes 15 de Febrero de 2011, 04:52 »
lo que no termino de entender es que esta asociado a cada entrada del program header
La estructura según he leído es: (para un elf ejecutable)
ELF Header
Programs Header
Segmento 1 (creo q es el text)
Segmento 2 (creo q es el data)
Sections Headers
Section 1
.
.
.
Section n

Mi pregunta es: Cómo sabe el SO a qué se relaciona cada entrada del program header? Si creo una tabla mas en el PH y la hago p_type LOAD, cómo indico qué es lo que debe cargarse allí? Para eso sirven las section headers?

Perdón por el lío, es que no logro resolver esa duda :S

5
ASM (Ensamblador) / Program headers de un ELF
« en: Lunes 14 de Febrero de 2011, 23:21 »
A ver, no se si me podrán responder esto. Perdón si es que va en otro foro, pero imagino que quienes puedan responder son las personas mas metidas en assembler

Los ficheros ELF de GNU/Linux tienen una estructura de tablas para el Program Header llamadas Program Headers Tables o PHT. Según ciertos campos de estas tablas se describen qué secciones deben cargarse en memoria, los permisos que deben tener, offset's y demás datos importantes.
El primer campo de estas estructuras es p_type y toma valores
  Name             Value
  ====             =====
  PT_NULL              0
  PT_LOAD              1
  PT_DYNAMIC         2
  PT_INTERP            3
  PT_NOTE              4
  PT_SHLIB              5
  PT_PHDR              6
  PT_LOPROC   0x70000000
  PT_HIPROC      0x7fffffff

Mi duda es la siguiente, los segmentos text y data son de tipo PT_LOAD. Mi planteo es, si yo creo un nuevo segmento de tipo 1 y redirijo el entry point a una dirección de ese segmento, se daría que todo el text se cararía ese nuevo segmento que creo?
No se si quedó entendible mi pregunta :S . Pero mi idea es saber cómo decir qué cosas se deben cargar en cada segmento si creo alguno nuevo.

Saludos

6
ASM (Ensamblador) / Re: Traducción de dos sentencias NASM a GAS
« en: Lunes 14 de Febrero de 2011, 23:10 »
Perdón por el off-topic, abriré otro tema.

Saludos

PD: He leído ese documento y me deja una duda que pregunto en el otro tema

7
ASM (Ensamblador) / Re: Traducción de dos sentencias NASM a GAS
« en: Lunes 14 de Febrero de 2011, 20:48 »
Cita de: "m0skit0"
Cita de: "clicklose"
Como debo infectar al binario con el virus, no puedo usar data pués copiaré únicamente el text segment del pequeño
Realmente no es una razón. De hecho es posible que de esta forma tu binario ocupe más que si usas una sección .data, dado que al usar inmediatos en las instrucciones, hagan que la instrucción sea un poco más grande. Ten en cuenta que la sección de datos va pegada al segmento de texto, generalmente al final (esto se le puede indicar al ensamblador). Realmente no hay pérdida de memoria. Además podrías incluír el tamaño del segmento directamente en dicha sección sin tener que operarlo.


Si, es verdad que puedo introducir el .data pero es un lío bastante grande :P.
Por casualidad sabés cómo funciona un program header que tiene tipo 1 (en un ELF)
Digo porque es el único detalle que me falta entender :S

Cita de: "m0skit0"
Saludos y suerte con la práctica, realmente interesante ^_^

Gracias, es realmente muy interesante

8
ASM (Ensamblador) / Re: Traducción de dos sentencias NASM a GAS
« en: Lunes 14 de Febrero de 2011, 08:38 »
Cita de: "m0skit0"
¿Por alguna razón en concreto?

Es parte de un trabajo práctico para una materia. Tengo que escribir un programa con temática libre y elegí hacer un virus que infecte archivos ELF, nada dañino, sólo algo que se comporte como un virus como una "prueba del concepto". Como debo infectar al binario con el virus, no puedo usar data pués copiaré únicamente el text segment del pequeño
Me falta poca información para poder escribir un virus desde cero, puedo abrir otro hilo sobre el tema?
Muchas gracias por la ayuda, fue de gran utilidad.

Saludos

9
ASM (Ensamblador) / Re: Traducción de dos sentencias NASM a GAS
« en: Domingo 13 de Febrero de 2011, 18:15 »
Las lineas en la que carga texto las necesito hacer así para no usar sección .data, había pensado la de los hexadecimales (te faltó el "$" antes del número), es una pena que GAS no tenga una forma más cómoda como la de NASM
Voy a probar el de las etiquetas, para la diferencia

Código: ASM
  1. leal End , %edi
  2. leal main , %esi
  3. subl %esi , %edi
  4.  
estaría bien decís?

10
ASM (Ensamblador) / Re: Traducción de dos sentencias NASM a GAS
« en: Sábado 12 de Febrero de 2011, 23:30 »
En realidad forma parte de un código bastante largo, y quería esperar a traducirlo completamente antes de compilar, tengo otras dudas como por ejemplo lineas de este estilo:

mov dword [ebp - 76], 'Hi, '
mov dword [ebp - 72], 'this'
mov dword [ebp - 68], ' is '
mov dword [ebp - 64], 'a pr'
mov dword [ebp - 60], 'oof '

que no se como traducirlas o también
mov cx, [ebp - 20]
mov edx, End - main
Con End y main como etiquetas

La 1° me deja la dudas por el tamaño de los operadores
Sería movw -20(%ebp) , %cx ?
Por las primera lineas y la última no tengo idea :S
Gracias por la ayuda
Saludos

11
ASM (Ensamblador) / Traducción de dos sentencias NASM a GAS
« en: Sábado 12 de Febrero de 2011, 01:53 »
Alguien podrías decirme como traducir este código (en sintaxis de NASM) a sintaxis de GAS?
mov dword [ebp - 4], eax      
lea ebx, [ebp - 256]

Yo lo escribí así:

movl %eax , -4(%ebp)
leal  - 256(%ebp) , %ebx

Estaría bien?

Saludos

Páginas: [1]