- Une brève introduction à class-dump
- Comment utiliser class-dump
Une brève introduction à class-dump
class-dump est un outil qui peut exporter les informations déclarées du runtime Objective-C. L'essence est que vous pouvez exporter des fichiers .h. Utilisez le vidage de classe pour exporter les fichiers d'en-tête d'application non chiffrés
Site officiel: http://stevenygard.com/projects/class-dump/
class-dump est un outil en ligne de commande côté mac, utilisé pour exporter les fichiers d'en-tête Mach-O.
1 Nous devons d'abord télécharger
2 Double-cliquez pour ouvrir après le téléchargement, nous pouvons voir qu'il s'agit d'un outil en ligne de commande
3 Copiez le fichier exécutable class-dump dans le répertoire / usr / local / bin
4 Ouvrez le terminal pour vérifier s'il est installé
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$
Si les informations ci-dessus sont affichées, cela signifie que l'installation est terminée. Pourquoi voulez-vous les mettre dans / usr / local / bin? Inutile de dire que la configuration de la variable d'environnement par défaut Mac a ce répertoire. Si vous tapez une commande dans le terminal, il sera Allez le trouver dans ce répertoire. Eh bien, l'installation est aussi simple que cela, voyons comment l'utiliser.
Deux comment utiliser class-dump
Class-dump est utilisé pour exporter des fichiers d'en-tête Mach-O. Quels types de fichiers Mach-O existe-t-il? Quel class-dump peut exporter des fichiers d'en-tête dans Mach-O? Je présenterai spécifiquement Mach-O. Je le mentionnerai brièvement à la fin de l'article Maintenant, nous exportons le fichier d'en-tête, principalement le fichier d'en-tête du fichier exécutable binaire dans l'application.
1 Obtenez le fichier Mach-O dans ipa
Nous pouvons télécharger le fichier ipa en ligne, le décompresser et extraire le fichier exécutable binaire à l'intérieur. Nous pouvons également exporter le fichier exécutable binaire de l'application installée à partir du téléphone jailbreaké. Ici, je l'exporte à partir du téléphone.
J'ai traîné un fichier binaire d'une calculatrice
2 Entrez dans le répertoire du fichier exécutable
Le terminal Mac entre dans le répertoire où se trouve la calculatrice
xmldeMacBook-Pro:~ xml$ cd /Users/xml/Documents/iOS学习/
3 Commencez à exporter le fichier d'en-tête
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:
J'ai rencontré cette erreur au début et j'ai finalement résolu le problème en modifiant le fichier class-dump . L'exécution finale est la suivante
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
Le fichier d'en-tête finalement exporté
Enfin, laissez-moi vous expliquer comment class-dump exporte les fichiers d'en-tête. En fait, les fichiers Mach-O ont un format fixe, qui contient un fichier de table de symboles. Class-dump exporte le fichier d'en-tête uniquement en lisant le fichier de table de symboles.
L'outil de vidage de classe est très simple à utiliser et il est également couramment utilisé en rétro-ingénierie. Le fichier Caculator que je recherchais n'est pas en shell, il peut donc exporter le fichier d'en-tête. Si l'application en shell ne peut pas être exportée, elle a besoin Écrasez d'abord la coquille.