Capítulo 17. El proyecto Annobin
El proyecto Annobin es una implementación del proyecto de especificación Watermark. El proyecto de especificación Watermark pretende añadir marcadores a los objetos de formato ejecutable y enlazable (ELF) para determinar sus propiedades. El proyecto Annobin consiste en el plugin annobin y el programa annockeck.
El plugin annobin analiza la línea de comandos de la Colección de Compiladores de GNU (GCC), el estado de compilación y el proceso de compilación, y genera las notas ELF. Las notas ELF registran cómo se construyó el binario y proporcionan información para que el programa annocheck realice comprobaciones de seguridad.
El comprobador de seguridad forma parte del programa annocheck y está activado por defecto. Comprueba los archivos binarios para determinar si el programa se construyó con las opciones de endurecimiento de seguridad necesarias y se compiló correctamente. annocheck es capaz de escanear recursivamente directorios, archivos y paquetes RPM en busca de archivos objeto ELF.
Los archivos deben estar en formato ELF. annocheck no maneja ningún otro tipo de archivo binario.
La siguiente sección describe cómo:
-
Utilice el plugin
annobin -
Utilice el programa
annocheck -
Eliminar las notas redundantes de
annobin
17.1. Uso del plugin annobin Copiar enlaceEnlace copiado en el portapapeles!
La siguiente sección describe cómo:
-
Activar el plugin
annobin -
Pasar opciones al plugin
annobin
17.1.1. Activación del plugin annobin Copiar enlaceEnlace copiado en el portapapeles!
La siguiente sección describe cómo activar el plugin annobin a través de gcc y a través de clang.
Procedimiento
Para activar el plugin
annobincongcc, utilice:gcc -fplugin=annobin
$ gcc -fplugin=annobinCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si
gccno encuentra el pluginannobin, utilice:gcc -iplugindir=/path/to/directory/containing/annobin/
$ gcc -iplugindir=/path/to/directory/containing/annobin/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contiene
annobin.Para encontrar el directorio que contiene el plugin
annobin, utilice:gcc --print-file-name=plugin
$ gcc --print-file-name=pluginCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Para activar el plugin
annobinconclang, utilice:clang -fplugin=/path/to/directory/containing/annobin/
$ clang -fplugin=/path/to/directory/containing/annobin/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contiene
annobin.
17.1.2. Pasar opciones al plugin annobin Copiar enlaceEnlace copiado en el portapapeles!
La siguiente sección describe cómo pasar opciones al plugin annobin a través de gcc y a través de clang.
Procedimiento
Para pasar opciones al plugin
annobincongcc, utilice:gcc -fplugin=annobin -fplugin-arg-annobin-option file-name
$ gcc -fplugin=annobin -fplugin-arg-annobin-option file-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya option por los argumentos de la línea de comandos
annobiny sustituya file-name por el nombre del archivo.Ejemplo
Para mostrar detalles adicionales sobre lo que
annobinestá haciendo, utilice:gcc -fplugin=annobin -fplugin-arg-annobin-verbose file-name
$ gcc -fplugin=annobin -fplugin-arg-annobin-verbose file-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya file-name por el nombre del archivo.
Para pasar opciones al plugin
annobinconclang, utilice:clang -fplugin=/path/to/directory/containing/annobin/ -Xclang -plugin-arg-annobin -Xclang option file-name
$ clang -fplugin=/path/to/directory/containing/annobin/ -Xclang -plugin-arg-annobin -Xclang option file-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya option por los argumentos de la línea de comandos
annobiny sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contieneannobin.Ejemplo
Para mostrar detalles adicionales sobre lo que
annobinestá haciendo, utilice:clang -fplugin=/usr/lib64/clang/10/lib/annobin.so -Xclang -plugin-arg-annobin -Xclang verbose file-name
$ clang -fplugin=/usr/lib64/clang/10/lib/annobin.so -Xclang -plugin-arg-annobin -Xclang verbose file-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya file-name por el nombre del archivo.