Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
machofile — machofile é um módulo para analisar arquivos binários Mach-O | Kitploit
Ferramentas/GitHubGitHub/pstirparo/machofile
Análise EstáticaEngenharia ReversaAnálise ForenseAnálise de MalwareAnálise de Binários
GitHubpstirparo/machofile

machofile

machofile é um módulo para analisar arquivos binários Mach-O

Ver Repositório
99522há 8 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Site
Compartilhar

machofile

Downloads

machofile é um módulo para analisar ficheiros binários Mach-O, com foco em análise de malware e engenharia reversa.

Inspirado no pefile de Ero Carrera, este módulo pretende fornecer capacidades semelhantes, mas para binários Mach-O. O material de referência e a documentação utilizados para obter o conhecimento do formato de ficheiro, as estruturas básicas e as constantes são provenientes dos recursos listados abaixo.

machofile é autossuficiente. O módulo não tem dependências; é independente de endianness; e funciona em macOS, Windows e Linux.

Embora existam outros módulos de análise de Mach-O por aí, as motivações para desenvolver este são:

  • antes de mais, para mim foi uma ótima forma de mergulhar fundo e aprender mais sobre o formato e as estruturas Mach-O
  • fornecer uma forma simples de analisar ficheiros Mach-O para análise
  • não depender de módulos externos (ex.: lief, macholib, macho, etc.), uma vez que tudo é extraído diretamente do ficheiro e é tudo em Python puro.

Deixa-me saber se experimentares ou encontrares bugs, mas também... sê gentil ;) o código será otimizado e mais funcionalidades serão adicionadas.

Funcionalidades atuais:

  • Analisar o cabeçalho Mach-O
  • Analisar Load Commands
  • Analisar os segmentos do ficheiro
  • Analisar Dylib Commands
  • Analisar a lista de Dylibs
  • Extrair funções importadas
  • Extrair símbolos exportados
  • Hashes: hash de dylib, hash de importação, hash de exportação, hash de entitlements, symhash
  • Cálculo da entropia dos segmentos
  • Extrair ponto de entrada
  • Extrair UUID
  • Extrair informações de versão
  • Analisar informações básicas da Code Signature
  • Suporte para binários FAT (Universal)
  • Extrair fatias Mach-O individuais de binários FAT (Universal)
  • Suporte para saída JSON (tanto em formato legível por humanos como raw)

Nota: até ao momento, isto foi inicialmente testado em amostras Mach-O x86, x86_64, arm64 e arm64e.

Próximas funcionalidades a implementar (em ordem aleatória):

  • Strings incorporadas
  • Atributos do ficheiro
  • flag para bibliotecas suspeitas
  • Deteção de packers
  • ...

Uso e exemplos

Podes usá-lo a partir da linha de comandos ou importá-lo como módulo no teu código Python, e chamar cada função individualmente para analisar apenas as estruturas que te interessam. Podes instalá-lo diretamente via pip e usá-lo programaticamente ou a partir da linha de comandos, ou usá-lo como script autónomo.

pip install machofile

Versão do módulo

Espera que lhe seja fornecido um caminho de ficheiro ou um buffer de dados para analisar.

import machofile
macho = machofile.UniversalMachO(file_path='/path/to/machobinary')
macho.parse()

Se o buffer de dados já estiver disponível, pode ser fornecido diretamente com:

import machofile
with open(file_path, 'rb') as f:
    data = f.read()
macho = machofile.UniversalMachO(data=data)
macho.parse()

Para utilização detalhada da API, consulta a página dedicada de documentação da API.

Versão de linha de comandos

Podes usar machofile também diretamente como ferramenta CLI se o instalaste via pip, ou como ferramenta autónoma com python3 machofile.py. Todas as mesmas funcionalidades estão disponíveis como módulo e também como ferramenta de linha de comandos.

% machofile -h
usage: machofile [-h] -f FILE [-j] [--raw] [-a] [-d] [-e] [-ep] [-g]
                    [-hdr] [-i] [-l] [-seg] [-sig] [-sim] [-u] [-v]
                    [--arch ARCH] [--dump-dir DUMP_DIR]

Parse Mach-O binary structures. (version 2026.02.04)

options:
  -h, --help          show this help message and exit

required arguments:
  -f, --file FILE     Path to the file to be parsed

output format options:
  -j, --json          Output data in JSON format
  --raw               Output raw values in JSON format (use with -j/--json)

data extraction options:
  -a, --all           Print all info about the file
  -d, --dylib         Print Dylib Command Table and Dylib list
  -e, --exports       Print exported symbols
  -ep, --entry-point  Print entry point information
  -g, --general_info  Print general info about the file
  -hdr, --header      Print Mach-O header info
  -i, --imports       Print imported symbols
  -l, --load_cmd_t    Print Load Command Table and Command list
  -seg, --segments    Print File Segments info
  -sig, --signature   Print code signature and entitlements information
  -sim, --similarity  Print similarity hashes
  -u, --uuid          Print UUID
  -v, --version       Print version information

filter options:
  --arch ARCH         Show info for specific architecture only (for Universal binaries)

dump options:
  --dump-dir DUMP_DIR Dump individual Mach-O slices from a FAT/Universal binary
                      to the specified directory

Exemplo de saída:

% machofile -a -f b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b

[General File Info]
        Filename:         b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b
        Filesize:         54240
        MD5:              20ffe440e4f557b9e03855b5da2b3c9c
        SHA1:             1bf61ecad8568a774f9fba726a254a9603d09f33
        SHA256:           b4f68a58658ceceb368520dafc35b270272ac27b8890d5b3ff0b968170471e2b

[Mach-O Header]
        magic:            MH_MAGIC (32-bit), 0xFEEDFACE
        cputype:          Intel i386
        cpusubtype:       X86_ALL
        filetype:         EXECUTE
        ncmds:            13
        sizeofcmds:       1180
        flags:            NOUNDEFS, DYLDLINK, TWOLEVEL

[Load Cmd table]
        {'cmd': 'LC_SEGMENT', 'cmdsize': 56}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 192}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 328}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 192}
        {'cmd': 'LC_SEGMENT', 'cmdsize': 56}
        {'cmd': 'LC_SYMTAB', 'cmdsize': 24}
        {'cmd': 'LC_DYSYMTAB', 'cmdsize': 80}
        {'cmd': 'LC_LOAD_DYLINKER', 'cmdsize': 28}
        {'cmd': 'LC_UUID', 'cmdsize': 24}
        {'cmd': 'LC_UNIXTHREAD', 'cmdsize': 80}
        {'cmd': 'LC_LOAD_DYLIB', 'cmdsize': 52}
        {'cmd': 'LC_LOAD_DYLIB', 'cmdsize': 52}
        {'cmd': 'LC_CODE_SIGNATURE', 'cmdsize': 16}

[Load Commands]
        LC_CODE_SIGNATURE
        LC_DYSYMTAB
        LC_LOAD_DYLIB
        LC_LOAD_DYLINKER
        LC_SEGMENT
        LC_SYMTAB
        LC_UNIXTHREAD
        LC_UUID

[File Segments]
        SEGNAME    VADDR VSIZE OFFSET SIZE  MAX_VM_PROTECTION INITIAL_VM_PROTECTION NSECTS FLAGS ENTROPY            
        ------------------------------------------------------------------------------------------------------------
        __PAGEZERO 0     4096  0      0     0                 0                     0      0     0.0                
        __TEXT     4096  28672 0      28672 7                 5                     2      0     5.080680410706916  
        __DATA     32768 4096  28672  4096  7                 3                     4      0     0.1261649636134924 
        __IMPORT   36864 4096  32768  4096  7                 7                     2      0     0.21493796627555234
        __LINKEDIT 40960 20480 36864  17376 7                 1                     0      0     6.637864516225949  

[Dylib Commands]
        DYLIB_NAME_OFFSET DYLIB_TIMESTAMP DYLIB_CURRENT_VERSION DYLIB_COMPAT_VERSION DYLIB_NAME                   
        ----------------------------------------------------------------------------------------------------------
        24                2               65536                 65536                b'/usr/lib/libgcc_s.1.dylib' 
        24                2               7274759               65536                b'/usr/lib/libSystem.B.dylib'

[Dylib Names]
        b'/usr/lib/libgcc_s.1.dylib'
        b'/usr/lib/libSystem.B.dylib'
Baixar ferramenta