GNU/Linux >> Tutoriales Linux >  >> Linux

Posicionar ejecutables independientes y Android

No sé nada sobre PIE. Por favor, dígame cómo crear un ejecutable independiente de posición.

Position Independent Executable o PIE permite reubicar un programa, al igual que un objeto compartido. En cada ejecución del programa, el programa se puede cargar en diferentes direcciones para que sea más difícil para un atacante adivinar cierto estado del programa.

Puede compilar y vincular un ejecutable PIE de una de dos maneras. Primero, compila todo con -fPIE y enlace con -pie . La segunda es compilar todo con -fPIC y enlace con -pie .

Si está creando tanto un objeto compartido como un programa, compile todo con -fPIC . Vincular el objeto compartido con -shared y vincular el programa con -pie .

No puedes hacerlo de otra manera. Es decir, no puedes compilar todo con -fPIE y construir un objeto compartido y un programa. Para obtener más información, consulte Opciones de generación de código en el manual de GCC.

Una cosa a tener en cuenta en Android:compilar con PIE anterior a 4.1 provocará un error de segmentación en /system/bin/linker . PIE se agregó en Android 4.1 y falla en versiones menores.

Alguien me dijo que proporcionara un enlace/cargador personalizado para evitar el problema, pero no puedo encontrar la referencia en este momento.

Consulte también Mejoras de seguridad en Android 1.5 a 4.1.

Error:solo se admiten ejecutables independientes de la posición (PIE)

Sí, esa es una característica de Lollipop. Consulte Mejoras de seguridad en Android 5.0.

Puede verificar si un programa está construido con PIE usando readelf :

$ readelf -l my-prog | grep -i "file type"
Elf filetype is DYN (shared object file)

La parte importante es readelf está informando DYN y no informar EXE . EXE significa que carece de PIE, y eso debería desencadenar un defecto relacionado con la seguridad.

Relacionado, consulte ¿Se admite PIE (ejecutable independiente de la posición) para los ejecutables principales en Android 4.0 (ICS)?


Sé que este es un tema antiguo, pero esta forma de piratería puede ahorrarle tiempo a algunas personas.
con un Hex-Editor, encuentre el byte 17, cambie el valor 02 a 03, ¡y eso es todo!


Linux
  1. Cómo compilar y ejecutar un programa C en Ubuntu

  2. Instale SoftHSM y acceda a él a través del programa Java

  3. ¿Programa Shell para simplemente abrir un controlador de caracteres y esperar?

  4. ¿Editar y recompilar el programa individual?

  5. DAEMON Sync:sincroniza datos de Linux a dispositivos Android e iOS

Pinfo:un programa CLI para leer información y páginas man en color

GNU Aspell:un corrector ortográfico independiente, gratuito y de código abierto

Cómo escribir y ejecutar un programa C en Debian 10

Cómo encontrar el ID de proceso de un programa y eliminarlo [Consejo rápido]

Cómo compilar y ejecutar un programa C en Linux

Cómo escribir y ejecutar un programa C en Linux