Bueno de casualidad encontre este tutorial: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html y al probar un ejemplo, concretamente este:
ehdr: ; Elf32_Ehdr
db 0x7F, "ELF", 1, 1, 1, 0 ; e_ident
times 8 db 0
dw 2 ; e_type
dw 3 ; e_machine
dd 1 ; e_version
dd _start ; e_entry
dd phdr - $$ ; e_phoff
dd 0 ; e_shoff
dd 0 ; e_flags
dw ehdrsize ; e_ehsize
dw phdrsize ; e_phentsize
dw 1 ; e_phnum
dw 0 ; e_shentsize
dw 0 ; e_shnum
dw 0 ; e_shstrndx
ehdrsize equ $ - $$
phdr: ; Elf32_Phdr
dd 1 ; p_type
dd 0 ; p_offset
dd $$ ; p_vaddr
dd $$ ; p_paddr
dd filesize ; p_filesz
dd filesize ; p_memsz
dd 5 ; p_flags
dd 0x1000 ; p_align
phdrsize equ $ - phdr
_start:
mov ebx, 0
xor eax, eax
inc eax
int 0x80
filesize equ $ - $$
En el que se reduce el tamaño del ejecutable a 91 bytes, el programa termina por una señal SIGTERM, si alguien me pudiera decir que porque falla?
Saludos.
La trazastes, para mirar de donde viene ese SIGTERM?
Un saludo.
Despues de trazarlo me he dado cuenta cuenta de que era una SIGKILL:
strace ./tiny
execve("./tiny", ["./tiny"], [/* 39 vars */] <unfinished ...>
+++ killed by SIGKILL +++
Terminado (killed)
Pero no se porque... que proceso esta matando al mio y porque? en que falla?
Saludos.
No sé, solo te dije lo de trazar porque me ayudo con unos SIGBUS y Segmentation fault, pero ya veo que no te sirvió de mucho.
Siento no poder ayudarte.
Un saludo.
P.D: Repasa las estructuras de los cabezales.
Gracias de todas formas :P