macOS Sierra GDB no codificado

3

Primero debo notar que estoy usando macOS Sierra (versión 10.12 beta 16A238m), pero no creo que sea tan diferente a El Capitán en esta situación (pero creo que sabes más que yo sobre eso, o no estaría aquí ahora mismo haciendo esta pregunta).

Así que instalé GDB (The GNU Debugger) para seguir entre un libro que estoy leyendo actualmente ("Hacking: The Art of Exploitation"), que solo explica cómo usar GDB, por lo que no puedo usar LLDB. Lo instalé utilizando Homebrew ( brew install gdb ), y todo funcionó bien. Hasta que lo usé. Compilé mi código fuente de C usando clang -g hello_word.c -o hello_world (es solo un simple programa C "¡Hola, mundo!"), Y luego ejecuté gdb -q hello_world , y aquí está la sesión:

Chens-MacBook-Pro:C chenjian$ gdb -q hello_world
Reading symbols from hello_world...Reading symbols from /Users/chenjian/Documents/Coding/Projects/RandomDev/C/hello_world.dSYM/Contents/Resources/DWARF/hello_world...done.
done.
(gdb) list
1   #include <stdio.h>
2   
3   int main() {
4       printf("Hello, World!\n");
5   }
(gdb) break main
Breakpoint 1 at 0x100000f6f: file hello_world.c, line 4.
(gdb) run
Starting program: /Users/chenjian/Documents/Coding/Projects/RandomDev/C/hello_world 
Unable to find Mach task port for process-id 42492: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

Así que busqué en Google un poco acerca de la codificación de códigos y encontré este . Así que seguí las instrucciones (excepto las de Snow Leopard), ¡y todavía no funciona! ¿Alguien sabe cómo puedo hacer que funcione?

    
pregunta Hexa 16.07.2016 - 20:23

2 respuestas

1

Sí, la firma de código debería funcionar es una alternativa sustancialmente mejor para deshabilitar SIP. Realmente no puedo creer con qué frecuencia se sugiere deshabilitar SIP como solución a este problema. Si te desesperas, te aconsejaría que ejecutes sudo gdb (¡tengas copias de seguridad!) Que deshabilitando SIP.

Para mí, el problema fue que repetidamente arruiné uno o más pasos en el procedimiento. Terminé haciendo brew reinstall gdb , borrando todos los certificados que había creado, reiniciando y luego siguiendo el procedimiento con mucho cuidado. Tenga en cuenta que cuando instala gdb con Homebrew, se muestra lo siguiente:

==> Caveats
gdb requires special privileges to access Mach ports.
You will need to codesign the binary. For instructions, see:

  https://sourceware.org/gdb/wiki/BuildingOnDarwin

On 10.12 (Sierra) or later with SIP, you need to run this:

  echo "set startup-with-shell off" >> ~/.gdbinit

Esas instrucciones fueron las que me funcionaron en Sierra. Deshabilitar startup-with-shell hasta ahora no ha sido necesario, pero vale la pena tenerlo en cuenta si está seguro de haberlo hecho correctamente y la sección de solución de problemas del enlace no sirve de nada.

    
respondido por el Sam Brightman 15.11.2016 - 16:12
0
  1. Arrancar a recuperación
  2. Terminal abierta
  3. escribe csrutil disable

Luego reinicia. dtrace y gdb deberían funcionar.

enlace

También podría ejecutar un script para determinar qué partes de SIP están habilitadas si lo habilita con exclusiones:

Una cosa buena es que no necesitas relajar el SIP si eliges usar lldb y puedes compilar tu código con Xcode. Dado que gdb no está firmado por Apple, se evita intencionalmente que se adjunte a cualquier cosa en el sistema por diseño.

    
respondido por el bmike 24.07.2016 - 00:11

Lea otras preguntas en las etiquetas