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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ipa-medit — 再署名されたIPA用のメモリ改変ツールで、iPhoneおよびApple Silicon Mac上で動作するiOSアプリをジェイルブレイクなしでサポートします。 | Kitploit
ツール/GitHubGitHub/sterrasec/ipa-medit
iOSセキュリティメモリフォレンジックモバイルアプリペンテストペネトレーションテストモバイルセキュリティバイナリ解析
GitHubsterrasec/ipa-medit

ipa-medit

再署名されたIPA用のメモリ改変ツールで、iPhoneおよびApple Silicon Mac上で動作するiOSアプリをジェイルブレイクなしでサポートします。

リポジトリを見る
20724161年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

ipa-medit

GitHub release License: MIT

Ipa-medit は、ジェイルブレイクを必要とせずに再署名済み ipa のメモリ検索およびパッチを行うツールです。 iPhone および Apple Silicon Mac 上で動作する iOS アプリに対応しています。 モバイルゲームのセキュリティテストのために作成されました。 多くのモバイルゲームにはジェイルブレイク検出機能がありますが、ipa-medit はジェイルブレイクを必要としないため、ジェイルブレイク検出を回避することなくメモリ改変が可能です。

動機

メモリ改変はゲームでチートを行う最も簡単な方法であり、セキュリティテストでチェックすべき項目の一つです。 GameGem や iGameGuardian のように手軽に使えるチートツールもあります。 しかし、脱獄していないデバイス向けや CUI、Apple Silicon Mac 向けのツールは存在しませんでした。 そこでセキュリティテストツールとして作成しました。 Android 版は sterrasec/apk-medit です。

デモ

必要条件

  • macOS
    • 有効な iOS 開発用証明書がインストールされている必要があります。
  • iPhone 上で動作する iOS アプリを対象とする場合のみ
    • Xcode
    • libimobiledevice/libimobiledevice
    • libimobiledevice/ideviceinstaller
$ brew install --HEAD libplist
$ brew install --HEAD usbmuxd
$ brew install --HEAD libimobiledevice
$ brew install --HEAD ideviceinstaller

インストール

バイナリ (Intel Mac のみ)

GitHub Releases からバイナリをダウンロードし、$PATH の通った場所に配置してください。

手動ビルド

make コマンドを使用してビルドできます。 ビルドには Go コンパイラが必要です。 Apple Silicon Mac 上で動作する iOS アプリを対象とする場合は、署名が必要ですが、script/codesign.sh が自動的に実行され署名されます。

$ git clone [email protected]:sterrasec/ipa-medit.git
$ cd ipa-medit
$ make build

使い方

対象の .ipa ファイルは、コンピュータにインストールされた証明書で署名されている必要があります。 サードパーティ製アプリケーションのメモリを改変したい場合は、ipautil などのツールを使用して再署名してください。

$ ipautil decode tap1000000.ipa # 解凍
$ ipautil build Payload         # 再署名して .ipa ファイルを生成

iPhone 上の iOS アプリを対象とする場合

起動するには、.ipa ファイルに含まれる実行ファイルのパスを -bin で、バンドル ID を -id で指定する必要があります。

$ unzip tap1000000.ipa
$ ipa-medit -bin="./Payload/tap1000000.app/tap1000000" -id="jp.hoge.tap1000000"

Apple Silicon Mac 上の iOS アプリを対象とする場合

起動するには、プロセス名を -name で、または pid を -pid で指定する必要があります。 iOS アプリのプロセス名と pid はアクティビティモニタで確認できます。

$ ipa-medit -name <プロセス名>

コマンド

以下はインタラクティブプロンプトで使用可能なコマンドです。

find

メモリ上で指定された整数を検索します。

> find 999986
Success to halt process
Scanning: 0x00000001025e4000-0x00000001025e8000
Scanning: 0x00000001025f4000-0x00000001025fc000
Scanning: 0x0000000102604000-0x0000000102608000
....
Scanning: 0x000000016eb34000-0x000000016ebbc000
Scanning: 0x000000016ebc0000-0x000000016ebe8000
Scanning: 0x000000016ebec000-0x000000016ec74000
Scanning: 0x000000016ec78000-0x000000016ed00000
Found: 1!!
Address: 0x10a2feea0

デフォルトでは、iPhone 上で動作する iOS アプリを対象とする場合、LLDB API が遅いため整数のみが検索されます。 Apple Silicon Mac 上で動作する iOS アプリを対象とする場合は、文字列も検索されます。

データ型(string、word、dword、qword)を指定することもできます。

> find dword 999994
Search Double Word...
Target Value: 999994([58 66 15 0])
Found: 1!!
Address: 0x11378aea0

filter

以前の検索結果から現在の検索結果に一致するものだけをフィルタリングします。

> filter 999842
Success to halt process
Found: 1!!
Address: 0x1087beea0

patch

検索で見つかったアドレスに指定された値を書き込みます。

> patch 10
Successfully patched!

attach

対象プロセスにアタッチします。

> attach
Success to halt process

detach

アタッチしたプロセスからデタッチします。

> detach
Success to continue process

ps

対象プロセスに関する情報を取得します。 iPhone 上で動作する iOS アプリを対象としている場合のみ機能します。

> ps
SBProcess: pid = 926, state = running, threads = 37, executable = tap1000000
State: Running
thread #1: tid = 0x545ee, 0x00000001bd6552d0 libsystem_kernel.dylib`mach_msg_trap + 8, queue = 'com.apple.main-thread'
thread #3: tid = 0x54619, 0x00000001bd67a184 libsystem_kernel.dylib`__workq_kernreturn + 8
thread #4: tid = 0x5461a, 0x00000001bd67a184 libsystem_kernel.dylib`__workq_kernreturn + 8
thread #5: tid = 0x5461b, 0x00000001bd67a184 libsystem_kernel.dylib`__workq_kernreturn + 8
thread #6: tid = 0x5461c, 0x00000001bd67a184 libsystem_kernel.dylib`__workq_kernreturn + 8
thread #7: tid = 0x5461d, 0x00000001bd6552d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.uikit.eventfetch-thread'
thread #8: tid = 0x5461e, 0x00000001bd6791ac libsystem_kernel.dylib`__psynch_cvwait + 8, name = 'GC Finalizer'
thread #9: tid = 0x5461f, 0x00000001bd65530c libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'Job.Worker 0'
thread #10: tid = 0x54620, 0x00000001bd65530c libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'Job.Worker 1'
thread #11: tid = 0x54621, 0x00000001bd65530c libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'Job.Worker 2'
...
thread #35: tid = 0x54659, 0x00000001bd6552d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'AURemoteIO::IOThread'
thread #36: tid = 0x54662, 0x00000001bd679814 libsystem_kernel.dylib`__semwait_signal + 8
thread #37: tid = 0x54663, 0x00000001bd6552d0 libsystem_kernel.dylib`mach_msg_trap + 8, name = 'com.apple.CoreMotion.MotionThread'
thread #38: tid = 0x54664, 0x00000001bd65530c libsystem_kernel.dylib`semaphore_wait_trap + 8, name = 'Loading.PreloadManager'

exit

medit を終了するには、exit コマンドまたは Ctrl-D を使用します。

> exit
Bye!

トラブルシューティング

Failed to get reply to handshake packet

/private/var/containers/Bundle/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/hoge.app: error: failed to get reply to handshake packet というエラーが発生し、iOS デバイスと lldb の通信が正常に行えない場合は、Xcode を起動して何かアプリをビルドすると解決します。

Could not connect to lockdownd

Could not connect to lockdownd. というエラーが発生し、iOS デバイスと ideviceinstaller の通信が正常に行えない場合は、Xcode を起動して何かアプリをビルドすると解決します。 この方法で解決しない場合は、必要条件のセクションにあるコマンド例を使用して、ideviceinstaller と libimobiledevice を最新バージョンに更新してください。

Could not start com.apple.debugserver

この問題は、brew install 時に --HEAD オプションを追加して、libimobiledevice と ideviceinstaller の最新のバージョン管理されていないコードをインストールすることで解決できます。

  • 参考: Could not start com.apple.debugserver! ios 14.1 xcode 12.2 MacOS 10.15.4 iphone12 · Issue #1104 · libimobiledevice/libimobiledevice

ライセンス

MIT License

ツールをダウンロード