Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
machofile — machofileはMach-Oバイナリファイルを解析するためのモジュールです。 | Kitploit
ツール/GitHubGitHub/pstirparo/machofile
静的分析リバースエンジニアリングフォレンジックマルウェア分析バイナリ解析
GitHubpstirparo/machofile

machofile

machofileはMach-Oバイナリファイルを解析するためのモジュールです。

リポジトリを見る
995147ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
ウェブサイト
共有

machofile

Downloads

machofile は、マルウェア解析とリバースエンジニアリングに重点を置いた、Mach-Oバイナリファイルを解析するためのモジュールです。

Ero Carrera の pefile に触発されたこのモジュールは、Mach-Oバイナリに対して同様の機能を提供することを目的としています。 ファイルフォーマットの知識、基本構造、定数の取得に使用された参考資料とドキュメントは、以下のリソースから引用しています。

machofile は自己完結型です。このモジュールに依存関係はなく、エンディアン非依存であり、macOS、Windows、Linux で動作します。

他にも Mach-O 解析モジュールは存在しますが、このモジュールを開発した動機は以下の通りです:

  • 何よりもまず、Mach-Oフォーマットと構造について深く掘り下げて学ぶための素晴らしい方法だったこと
  • 解析用のMach-Oファイルを簡単に解析する手段を提供すること
  • すべての情報をファイルから直接抽出し、すべて純粋なPythonで実装しているため、外部モジュール(lief、macholib、macho など)に依存しないこと

試用したりバグを見つけたりした場合はお知らせください。ただし... 優しくお願いします ;) コードは最適化され、より多くの機能が追加される予定です。

現在の機能:

  • Mach-Oヘッダーの解析
  • ロードコマンドの解析
  • ファイルセグメントの解析
  • Dylibコマンドの解析
  • Dylibリストの解析
  • インポートされた関数の抽出
  • エクスポートされたシンボルの抽出
  • ハッシュ: dylibハッシュ、インポートハッシュ、エクスポートハッシュ、エンタイトルメントハッシュ、symhash
  • セグメントエントロピーの計算
  • エントリーポイントの抽出
  • UUIDの抽出
  • バージョン情報の抽出
  • 基本的なコード署名情報の解析
  • FAT(ユニバーサル)バイナリのサポート
  • FAT(ユニバーサル)バイナリからの個々のMach-Oスライスのダンプ
  • JSON出力のサポート(人間可読形式とraw形式の両方)

注: 現時点では、x86、x86_64、arm64、arm64e の Mach-O サンプルに対して初期テストが行われています。

今後実装予定の機能(順不同):

  • 埋め込み文字列
  • ファイル属性
  • 不審なライブラリのフラグ
  • パッカー検出
  • ...

使用方法と例

コマンドラインから使用するか、Pythonコードにモジュールとしてインポートし、各関数を個別に呼び出して、興味のある構造だけを解析することができます。pip で直接インストールして、プログラム的またはコマンドラインから使用するか、スタンドアロンスクリプトとして使用できます。

pip install machofile

モジュール版

解析対象として、ファイルパスまたはデータバッファのいずれかを指定する必要があります。

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

データバッファがすでに利用可能な場合は、次のように直接指定できます:

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

APIの詳細な使用方法については、専用のAPIドキュメントページを参照してください。

コマンドライン版

pip でインストールした場合は machofile をCLIツールとして直接使用でき、スタンドアロンツールとしては python3 machofile.py として使用できます。モジュールとして利用可能なすべての機能は、コマンドラインツールとしても利用できます。

% 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

出力例:

% 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'

[UUID]
        d691c242-da49-1081-50d5-4f8991924b06

[Entry Point]
        type:             LC_UNIXTHREAD
        entry_address:    9200
        thread_data_size: 72

[Version Information]
        No version information found

[Code Signature]
        signed:           True
        signing_status:   Apple signed
        certificates_info:
            count:            3
            certificates:
              index:            0
              size:             4815
              subject:          Contains: Developer ID Certification Authority
              issuer:           Unable to parse
              is_apple_cert:    True
              type:             Developer ID Certification Authority

              index:            1
              size:             1215
              subject:          Contains: Apple Root CA
              issuer:           Unable to parse
              is_apple_cert:    True
              type:             Apple Root CA
ツールをダウンロード