0 votos

¿Equivalente de objcopy -0 binario para archivos de objetos Mach-O en macOS?

Equivalente de objcopy -O binary <FILE> <FILE>.bin de Mach-O archivos objeto en macOS?

Quiero volcar el código ejecutable en la __TEXT segmento de un archivo binario plano en macOS.

Esto se puede lograr en Linux de la siguiente manera:

objcopy -O binary <FILE> <FILE>.bin, donde <FILE> sería un fichero ELF.

Sin embargo, desde objcopy no está disponible (o muy poco compatibles) en macOS (por ejemplo llvm-objcopy no puede manejar Mach-O de los objetos), ¿cómo puedo lograr el mismo resultado?

1voto

Jose Chavez Puntos 645

Lo hago usando un pequeño script de Python, incluido a continuación:

 import sys
from macholib.MachO import MachO
m = MachO(sys.argv[1])
__TEXT = (cmd for load_cmd, cmd, data in m.headers[0].commands
          if getattr(cmd, 'segname', '').rstrip('\0') == '__TEXT').next()
print '__TEXT segment: offset %x size %x' % (__TEXT.fileoff, __TEXT.filesize)
f = open(sys.argv[1], 'rb')
f.seek(__TEXT.fileoff)
open('__TEXT.bin', 'wb').write(f.read(__TEXT.filesize))
 

Guarde ese código en un archivo llamado "extract.py" y ejecútelo así:

 python extract.py AppName
 

donde AppName es el nombre del archivo que contiene el programa de aplicación.

El programa generará un archivo llamado __TEXT.bin que contiene el contenido del segmento __TEXT (es decir, el código ejecutable).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X