Fichiers d'en-tête d'exportation de vidage de classe inversé iOS dans l'application machO

  • 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.

Je suppose que tu aimes

Origine blog.csdn.net/wangletiancsdn/article/details/104623547
conseillé
Classement