SELF: un ejecutable que es una base de datos SQLite

El desarrollador Farid Zakaria presenta SELF (Structured Executable & Linkable Format), un prototipo que reemplaza el formato ELF de los ejecutables en Linux por una base de datos SQLite. El proyecto, disponible en GitHub bajo el nombre selfdb, surge de años de trabajo previos del autor, entre ellos

tmpout_v: índice del número 5 de la revista técnica tmpout.sh

tmpout.sh es una revista digital de carácter técnico y experimental centrada en programación a bajo nivel, formatos binarios ELF en Linux x86-64, ensamblador y técnicas de ofuscación, empaquetado y autoextracción de ejecutables. El número 5, fechado el 23 de agosto de 2026 y firmado por el seudónimo

SoLo: binarios estáticos de Linux que cargan el driver gráfico del sistema

SoLo es una librería de código abierto que resuelve una limitación clásica de los binarios estáticos de Linux: la imposibilidad de cargar bibliotecas dinámicas del sistema, en especial los drivers gráficos. Los ejecutables vinculados con musl son cómodos de distribuir (un solo fichero, sin dependenc

ddisasm: un desensamblador rápido y preciso para binarios ELF y PE

ddisasm es un desensamblador de código abierto desarrollado por GrammaTech que convierte binarios en código ensamblador lo suficientemente preciso como para ser reensamblado. La herramienta está implementada con el lenguaje de programación lógica declarativa Datalog, concretamente sobre el motor Sou

Comprender a fondo la ABI de C++

# Comprender a fondo la ABI de C++ Cuando un programa se compila y se distribuye como una biblioteca dinámica, existe un contrato invisible que garantiza que el código funcione correctamente al ser enlazado y ejecutado: la Interfaz Binaria de Aplicación, conocida como ABI por sus siglas en inglés.

Compilación nativa en Go para Nintendo Switch con Ebitengine

El desarrollador Hajime Hoshi, autor del motor 2D Ebitengine, logró compilar un programa escrito en Go directamente en un binario nativo para Nintendo Switch, sin pasar por WebAssembly como intermediar io. Hasta ahora, su método consistía en transformar el código Go en Wasm y luego en C++; esa vía,

El ejecutable Teensy revisado: cómo encoger un ELF conforme al estándar

Este artículo técnico retoma el reto de construir el ejecutable ELF para Linux x86 más pequeño posible, pero esta vez cumpliendo de forma estricta la especificación ELF. Partiendo de una versión previa de 91 bytes, el autor muestra cómo solapar el encabezado ELF y la tabla de cabeceras de programa,

La vida antes de main en Rust: inicialización y secciones de enlace

El artículo técnico 'There Is Life Before Main in Rust' explora en detalle lo que sucede antes de que se ejecute la función `main()` en un binario compilado con Rust. Se describe cómo el sistema operativo entrega el control al programa a través de un punto de entrada (`_start` o `WinMainCRTStartup`)

La variable de entorno LD_DEBUG para depurar bibliotecas compartidas en Linux

La variable de entorno LD_DEBUG es una herramienta poco conocida del enlazador dinámico de Linux que facilita el diagnóstico de problemas de carga de bibliotecas compartidas. En sistemas grandes con múltiples versiones de bibliotecas dinámicas, es habitual que se cargue una versión distinta de la es

Cómo reducir al mínimo un binario en C con GCC

Este artículo analiza paso a paso cómo reducir el tamaño de un ejecutable ELF en x86-64 compilado con GCC partiendo de un programa mínimo que simplemente devuelve 0 al sistema. El autor, mediante una serie de iteraciones con banderas del compilador y código ensamblador inline, consigue reducir el bi

Escribir ensamblador ARM64 portable entre Darwin y otros UNIX

La guía aborda un problema práctico creciente: con la popularización de los ordenadores ARM de Apple, muchos desarrolladores escriben código ensamblador optimizado para estos equipos sin tener en cuenta otros dispositivos ARM64, como placas SBC o servidores con Linux o BSD. El resultado es ensamblad

Binario Linux de 105 bytes: ¿el mínimo ejecutable?

Un desarrollador ha logrado reducir el tamaño de un archivo ELF (Executable and Linkable Format) de Linux a tan solo 105 bytes, mientras mantiene la capacidad de imprimir el mensaje "Hello, world!". Esta hazaña, impulsada por el trabajo de Josh Triplett, se basa en técnicas de optimización que elimi

Forth en 1KB: Un intérprete minimalista y experimental

PlanckForth es un proyecto experimental y divertido que consiste en implementar un intérprete de Forth a partir de un binario ELF (Executable and Linkable Format) extremadamente pequeño, de tan solo 1KB, escrito a mano. El objetivo principal no es la utilidad práctica, sino la exploración de cómo se

Símbolos ELF: La Guía Esencial para Programadores

Este artículo es una guía introductoria a los símbolos ELF (Executable and Linkable Format), un concepto fundamental en la programación y el análisis de sistemas. Los símbolos son esencialmente nombres que representan funciones, variables u otros elementos del código, utilizados por el enlazador par