Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Por qué un binario de Go o Rust pesa tanto y qué esconde

4 tareas · 40 min · Principiante

Un programa de pocas líneas escrito en Go ocupa varios megas, y uno en Rust no se queda muy atrás. Para quien viene de leer fichas de programas en C, eso dispara alarmas que aquí no significan nada: mucho tamaño, una sola biblioteca importada, miles de funciones. Martes 25 de mayo de 2027, Colchones Altovelo: la pasarela y el EDR retuvieron seis muestras en dos semanas y la analista Leonilde Ardila tiene que ordenar las fichas antes del mediodía. Aquí se aprende a leer el tamaño y las importaciones de estos binarios comparándolos con programas sanos del mismo lenguaje, y a calcular cuánto de lo que pesa es del autor.

0 de 4 · 0%

Objetivo de la sala

Un programa de pocas líneas escrito en Go ocupa varios megas, y uno en Rust no se queda muy atrás. Para quien viene de leer fichas de programas en C, eso dispara alarmas que aquí no significan nada: mucho tamaño, una sola biblioteca importada, miles de funciones. Martes 25 de mayo de 2027, Colchones Altovelo: la pasarela y el EDR retuvieron seis muestras en dos semanas y la analista Leonilde Ardila tiene que ordenar las fichas antes del mediodía. Aquí se aprende a leer el tamaño y las importaciones de estos binarios comparándolos con programas sanos del mismo lenguaje, y a calcular cuánto de lo que pesa es del autor.

Un programa en C para Windows suele pedirle casi todo al sistema: abre archivos, habla por la red y escribe en el registro llamando a bibliotecas que ya están en el equipo. Por eso su ejecutable es pequeño y su tabla de importaciones es larga.

Go hace lo contrario. Su compilador enlaza de forma estática por defecto: mete dentro del ejecutable el runtime del lenguaje (el que reparte memoria, organiza los hilos y recoge la basura), las partes de la biblioteca estándar que se usan, las dependencias descargadas y la información de tipos que hace falta para escribir una traza cuando el programa falla. Rust también incluye su biblioteca estándar y las bibliotecas de terceros, aunque suele pesar menos. El resultado es un archivo de varios megas aunque el autor haya escrito muy poco.

Lo que esconde ese tamaño no es un truco: es código ajeno. La parte que escribió el autor suele ser una fracción pequeña, y el oficio es encontrarla entre todo lo demás.

Responde para continuar

¿Por qué un programa sencillo escrito en Go ocupa varios megas?

Ver pista de ayuda

Piensa en qué no le pide un programa en Go al sistema y por tanto tiene que traer consigo.

En el triaje del módulo 3 una tabla de importaciones muy corta era una señal de que el código real podía estar oculto. En Go esa misma señal es lo normal: el runtime resuelve por su cuenta muchas de las funciones del sistema mientras el programa corre, y la tabla de importaciones queda corta en cualquier programa, sano o no.

La regla se mantiene, pero se aplica comparando con programas del mismo lenguaje. La herramienta interna de TI está escrita en Go y figura en el catálogo de la empresa.

Abre la consola y escribe SELECT * FROM muestras WHERE dll_importadas = 1. Luego compara con SELECT * FROM catalogo. De las dos muestras que salen, a una el lenguaje le explica la tabla corta; a la otra no.

Responde para continuar

Escribe el identificador de la muestra cuya tabla de importaciones corta no se explica por el lenguaje en que está escrita.

Ver pista de ayuda

Mira el lenguaje que reconoció el identificador y busca en el catálogo un programa sano del mismo lenguaje.

La ficha reparte el tamaño de M-7401 por partes, según los nombres de paquete que conserva el binario. Cuatro de las cinco partes las escribió otra gente.

Consulta SELECT * FROM composicion y calcula qué parte del archivo corresponde a los paquetes propios del autor.

Responde para continuar

Escribe, redondeado a número entero y sin el símbolo, el porcentaje del tamaño de M-7401 que corresponde a los paquetes propios del autor.

Ver pista de ayuda

Divide los kilobytes de los paquetes propios entre el tamaño total del archivo y multiplica por cien.

Leonilde tiene que dejar escrita una frase sobre el tamaño de las muestras en la ficha del lote. El jefe de TI ya preguntó si «nueve megas no es demasiado para un sincronizador».

Responde para continuar

¿Qué frase sobre el tamaño de M-7401 se sostiene con lo que hay en la consola?

Ver pista de ayuda

Compara con el programa sano del mismo lenguaje y recuerda qué fracción es del autor.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad