- クラスダンプの簡単な紹介
- クラスダンプの使い方
クラスダンプの簡単な紹介
class-dumpは、Objective-Cランタイムの宣言された情報をエクスポートできるツールです。本質は、.hファイルをエクスポートできることです。class-dumpを使用して、暗号化されていないアプリヘッダーファイルをエクスポートします
公式ウェブサイト:http://stevenygard.com/projects/class-dump/
class-dumpは、Mach-Oヘッダーファイルをエクスポートするために使用される、Mac側のコマンドラインツールです。
1最初にダウンロードする必要があります
2ダウンロード後にダブルクリックして開くと、コマンドラインツールであることがわかります
3実行可能ファイルclass-dumpを/ usr / local / binディレクトリにコピーします
4ターミナルを開いて、インストールされているかどうかを確認します
xmldeMacBook-Pro:~ xml$ class-dump
class-dump 3.5 (64 bit)
Usage: class-dump [options] <mach-o-file>
where options are:
-a show instance variable offsets
-A show implementation addresses
--arch <arch> choose a specific architecture from a universal binary (ppc, ppc64, i386, x86_64, armv6, armv7, armv7s, arm64)
-C <regex> only display classes matching regular expression
-f <str> find string in method name
-H generate header files in current directory, or directory specified with -o
-I sort classes, categories, and protocols by inheritance (overrides -s)
-o <dir> output directory used for -H
-r recursively expand frameworks and fixed VM shared libraries
-s sort classes and categories by name
-S sort methods by name
-t suppress header in output, for testing
--list-arches list the arches in the file, then exit
--sdk-ios specify iOS SDK version (will look in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS<version>.sdk
--sdk-mac specify Mac OS X version (will look in /Developer/SDKs/MacOSX<version>.sdk
--sdk-root specify the full SDK root path (or use --sdk-ios/--sdk-mac for a shortcut)
xmldeMacBook-Pro:~ xml$
上記の情報が出力された場合は、インストールが完了したことを意味します。なぜ/ usr / local / binに配置するのですか?言うまでもなく、Macのデフォルトの環境変数構成にはこのディレクトリがあります。ターミナルでコマンドを入力すると、このディレクトリに移動して見つけてください。さて、インストールはとても簡単です、それを使用する方法を見てみましょう。
クラスダンプの2つの使用方法
クラスダンプはMach-Oヘッダーファイルのエクスポートに使用されます。どのタイプのMach-Oファイルがありますか?どのクラスダンプがMach-Oでヘッダーファイルをエクスポートできますか?特にMach-Oを紹介します。記事の最後で簡単に説明します。次に、ヘッダーファイル、主にアプリ内のバイナリ実行可能ファイルのヘッダーファイルをエクスポートします。
1ipaでMach-Oファイルを取得します
ipaファイルをオンラインでダウンロードして解凍し、内部のバイナリ実行可能ファイルを取り出すことができます。インストールされたアプリのバイナリ実行可能ファイルをジェイルブレイクされた電話からエクスポートすることもできます。ここでは、電話からエクスポートしました。
計算機のバイナリファイルをドラッグしました
2実行可能ファイルディレクトリを入力します
Mac端末がCalculatorのあるディレクトリに入ります
xmldeMacBook-Pro:~ xml$ cd /Users/xml/Documents/iOS学习/
3ヘッダーファイルのエクスポートを開始します
xmldeMacBook-Pro:iOS学习 xml$ class-dump -H Calculator -o CalculatorHeader
2019-02-17 21:25:11.771 class-dump[6911:783784] Error: Cannot find offset for address 0x9000000001000626 in stringAtAddress:
最初はこのエラーが発生しましたが、最終的にクラスダンプファイルを変更することで問題を解決しました。最終的な実行は次のとおりです
xmldeMacBook-Pro:iOS学习 xml$ class-dump -H Calculator -o CalculatorHeader
2019-02-17 21:25:47.949 class-dump[6916:784064] Warning: Parsing instance variable type failed, window
2019-02-17 21:25:47.949 class-dump[6916:784064] Warning: Parsing instance variable type failed, controller
2019-02-17 21:25:47.951 class-dump[6916:784064] Warning: Parsing instance variable type failed, displayController
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, keypadController
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, model
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, soundsPreferencesDomain
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, soundsEnabled
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, isSizeTransitioning
2019-02-17 21:25:47.952 class-dump[6916:784064] Warning: Parsing instance variable type failed, keypadTapGestureRecognizer
2019-02-17 21:25:47.953 class-dump[6916:784064] Warning: Parsing instance variable type failed, darwinObserver
2019-02-17 21:25:47.953 class-dump[6916:784064] Warning: Parsing instance variable type failed, maxLandscapeDigits
2019-02-17 21:25:47.954 class-dump[6916:784064] Warning: Parsing instance variable type failed, value
2019-02-17 21:25:47.954 class-dump[6916:784064] Warning: Parsing instance variable type failed, userEntered
2019-02-17 21:25:47.955 class-dump[6916:784064] Warning: Parsing instance variable type failed, delegate
2019-02-17 21:25:47.956 class-dump[6916:784064] Warning: Parsing instance variable type failed, maximumDigitCount
2019-02-17 21:25:47.956 class-dump[6916:784064] Warning: Parsing instance variable type failed, isAllClearActive
2019-02-17 21:25:47.956 class-dump[6916:784064] Warning: Parsing instance variable type failed, displayValue
2019-02-17 21:25:47.956 class-dump[6916:784064] Warning: Parsing instance variable type failed, memoryValue
最終的にエクスポートされたヘッダーファイル
最後に、class-dumpがヘッダーファイルをエクスポートする方法について説明します。実際、Mach-Oファイルは、シンボルテーブルファイルを含む固定形式です。class-dumpは、シンボルテーブルファイルを読み取るだけでヘッダーファイルをエクスポートします。
クラスダンプツールは非常に使いやすく、リバースエンジニアリングでも一般的に使用されています。探していたCaculatorファイルはシェル化されていないため、ヘッダーファイルをエクスポートできます。シェル化されたアプリケーションをエクスポートできない場合は、最初にシェルを粉砕します。