¿Cuáles son algunos recursos para aprender x86-64?

Bienvenido al club.

La información es escasa. Casi inexistente. Ya me di cuenta de eso. Al menos en línea y gratis hay muy pocos disponibles. Por supuesto, usted conoce la página de recursos de optimización de software, que es uno de los mejores. Pero no es mucho.

“Hackear: el arte de la explotación para Linux” es un buen libro, pero también es una mierda de 32 bits, pero el libro es tan bueno que realmente deberías echar un vistazo. Fue muy prometedor y realmente hacer algunas cosas que no deberían estar muy lejos de x64. Al menos hacen el estilo de AT&T. Pensé que, antes de que el autor cambiara el gdb al estilo Intel. Eso es como violarlo. Y rocié todo mi té sobre mi monitor en ese momento. No es broma, acaba de pasar hace unas horas. Insertó “set dis intel” en el archivo de configuración de gdb. Una de las primeras cosas que hizo. Eso es … mal indescriptible.

(Por cierto, ¡incluso no funcionaría! Es: “establecer la inteligencia de desmontaje-sabor”)

Tuve que dejar de leer ese libro por un tiempo. Y piensa si voy a leer más líneas de eso. Pero creo que extraeré toda la información y luego la quemaré. Si descubro cómo quemar un PDF. Tal vez lo puse en una versión B de XP no parcheada y conecte la caja virtual con Internet sin firewall y solo la veo grabar.

Pero tal vez él pueda calmar mi estado de ánimo con algunos trucos realmente buenos …

El Arte de la Asamblea es todo de 32 bits de vuelta a 16 bits de mierda y DOS. Y esa es una de las mejores cosas para encontrar. No hablo de ese libro de HLA, estoy hablando del libro real.

Revisé el libro mencionado por Will Deutsch y no estoy impresionado por eso. Las especificaciones originales son mejores que eso. Pero tal vez le dé una segunda mirada. El primero no fue tan prometedor. Es como si tomara las especificaciones, las reformateara automáticamente, destruyera toda la lógica con eso y le pusiera una buena cobertura. No es lo que llamo un buen libro. Y no hay nada sobre Linux.

Por supuesto, tiene los manuales de referencia de AMD o Intel, aunque encontré que AMD es mejor, especialmente el tercer libro es bastante útil, junto con el libro sobre optimización y el libro SIMD.

Ellos hacen la sintaxis de Intel. Que no me parece tan bueno si estás trabajando en Linux. Linux es todo AT&T y solo los inmigrantes de Windows que no quieren aprender el nuevo idioma hablan Intel.

AT&T es como Motorola. Y no puedo hacer nada más que suspirar porque pienso en un amor perdido.

Asi que.

La mayoría de las cosas que encontrarás en cualquier parte son mierda de 32 bits. Eso solo funciona en nasm. Y de nuevo tengo ganas de vomitar. Nada en contra de nasm, es un proyecto genial, pero me parece un poco deprimente. No quiero esa mierda de DOS en mi código fuente. Cada herramienta en mi caja está haciendo AT&T y eso es lo que quiero hacer. Como si estuviera destinado a ser hackeado.

Sí. Encontré algunas cosas, pero son muchas páginas y todo está en partes y la mayoría de las porquerías no funcionan en absoluto o están mal hechas.

Por favor, dame una nota si quieres que te envíe un correo basura con cientos de enlaces web, donde en todas partes solo puedes encontrar un poco. Encontré un poco sobre el ensamblaje en GCC / inline pero eso también se fracturó como si alguien hubiera lanzado una granada de mano en la inteligencia. Entonces, ¿no puedes encontrar nada?

Bienvenido al club.

Ay, entonces deberíamos hacerlo nosotros mismos. Hago eso y encontré un poco de diversión en eso. Bienvenido en 1982, donde no había internet y tuvimos que hacerlo de la manera más difícil. 😀

Al menos puedo darte las tablas syscall para 64 bits. Me tomó un tiempo ordenarlos de toda esa mierda de 32 bits.

Tabla de llamadas del sistema Linux para x86_64

http://www.x86–64.org/documentation/abi.pdf y esto aquí

Subpágina AMD64: toda la página no está nada mal. Pero no es muy grande.

Ensamblaje X86 / Interfaz con Linux

Entonces, lo primero que hay que entender es que 64bit no es una arquitectura radicalmente diferente. Es la arquitectura de 32 bits extendida. Lo único que cambia del modo protegido de 32 bits al modo protegido de 64 bits es que el tamaño de la dirección va de 32 bits a 64 bits. Los tipos de datos nativos se mantienen de 32 bits. Debe usar la sobrecarga de las instrucciones en el modo de datos de 64 bits (el ensamblador se encargará de esto por usted).

La convención de registro es:

  • * L o * H – registro de 8 bits (por ejemplo, AL y AH)
  • * X – registro de 16 bits (por ejemplo, AX o BX)
  • E * X – registro de 32 bits (por ejemplo, EAX o EBX)
  • R * X – registro de 64 bits (por ejemplo, RAX o RBX)

Los manuales de arquitectura Intel64 e IA-32 (o sus equivalentes de AMD) son una necesidad si está escribiendo el ensamblado x86 para cualquier otra cosa que no sean las instrucciones simples más comunes. Sin embargo, no son una muy buena introducción a la arquitectura. Pero están disponibles de forma gratuita y pueden ser todo lo que necesitas.

Un buen recurso sería: Arquitectura de conjunto de instrucciones x86: no he usado esta versión del libro. Sin embargo, tomé la clase en la que se basan estos libros hace ~ 15 años y el material cubierto era bueno.

Yo uso Intel® 64 y IA-32 Architectures Software Developer Manuales.