Executando binários ELF no OSX

9

Eu tenho uma pergunta relacionada ao CTF e fiquei me perguntando se alguém pode me apontar na direção certa.

Eu trabalho no OSX Yosemite e estava passando por alguns jogos de guerra e desafios mais antigos do CTF. Meu objetivo é executar o binário ELF do desafio "nativamente" no meu iterm (depois de scp-lo localmente), embora eu perceba que apenas os binários da MACH podem ser executados pelo sistema subjacente.

No entanto, tal coisa é possível através de emulação, talvez (por exemplo, QEMU), ou qualquer outro método, a fim de evitar a abertura de toda uma máquina virtual apenas para executar um binário?

Obrigado antecipadamente.

    
por nilminus 28.08.2015 / 22:02

2 respostas

2

Por si só, os binários ELF não significam nada. Poucos binários rodam sozinhos - Você precisaria de bibliotecas de suporte, APIs e ABIs e outras coisas brilhantes.

Ao executar o QEMU, você ainda precisa da maior parte do SO - só que não está tão ligado ao sistema host que eu suspeito.

Em teoria, se você tivesse algo como 'wine', mas agindo como um linux (ou outro sistema operacional * nix syle) - > Camada de compatibilidade do OS X que você poderia obter o que você quer, mas essa fera não existe.

Portanto, não é possível executar um binário ELF pré-compilado e arbitrário no OS X

    
por 12.02.2017 / 00:35
2

A resposta é provavelmente: Depende de como o arquivo ELF foi gerado.

Com base neste artigo , e nesta frase:

  • Um equívoco comum é que os arquivos ELF são apenas para executáveis ...
  • Já vimos que eles podem ser usados para peças parciais ...

Nem todos os arquivos ELF serão executados, mesmo se você tiver uma configuração adequada.

Com base neste artigo , há um grupo de arquivos ELF pf chamado FatELF:

  • FatELF é um formato de arquivo que incorpora vários binários ELF para diferentes arquiteturas em um único arquivo
  • Envie um arquivo que funcione no Linux e no FreeBSD

Com base nesta página da Apple

  • A porção BSD do kernel do OS X é derivada principalmente do FreeBSD

Assim, para o Mac OS X, o FatELF é o "início da resposta".

E, finalmente, com base nesta página :

Object file converter

This utility can be used for converting object files between COFF/PE, OMF, ELF and Mach-O formats for all 32-bit and 64-bit x86 platforms. Can modify symbol names in object files. Can build, modify and convert function libraries across platforms. Can dump object files and executable files. Also includes a very good disassembler supporting the SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP and Knights Corner instruction sets. Source code included (GPL).

Você tem a chance de ativar o que quiser.

PS: existe outra página sobre o XBinary , eu não a analisei.

This document discusses XBinary, a new software that lets you add kernel-level support for executing files in arbitrary binary formats on Mac OS X

    
por 16.02.2017 / 21:35

Tags