web-dev-qa-db-fra.com

Comment décompiler les applications iOS?

Je veux voir le code d'une application iOS.

L'application que j'ai téléchargée est .deb.

Première question: Est-il possible d'installer un fichier .deb sur iOS ou j'ai téléchargé un mauvais fichier?

Après avoir déballé le fichier .deb, j'ai obtenu quelques fichiers, dont .nib, .storyboard et quelques autres fichiers.

Mon question principale est, Comment décompiler ces fichiers .nib?

J'ai essayé de décompiler ces fichiers à l'aide de NibToXibConverter, mais je n'ai pas réussi.

11
ahmadhhh

Réponse à votre première question:

Je pense que vous avez téléchargé le mauvais fichier. .deb les fichiers pour iOS sont courants pour la communauté de jailbreak et pas pour les applications, je pense que tous les trucs Cydia sont emballés dans .deb. Si votre application est spécialement conçue pour la scène du jailbreak, vous pouvez essayer de l'installer en utilisant la fonction d'installation automatique de Cydia sur un appareil jailbreaké.

Réponse à votre question principale:

Il s'agit d'informations générales sur la décompilation et la modification des applications iOS (non spécifiques aux nibs, mais vous pouvez toujours les trouver utiles).

les applications iOS sont distribuées dans .ipa archives, qui sont des archives Zip ordinaires. Ils contiennent, généralement un exécutable sous forme de fichier Mach-O, et des ressources comme .plist, sons, images - toutes les ressources que vous incluez dans votre projet xcode. La décompilation du fichier exécutable n'est possible que sur iDevice jailbreaké, car il est crypté en particulier pour le périphérique actuel et la clé magique pour décrypter le binaire est gravée à l'intérieur du processeur de l'appareil et, à ma connaissance, il n'existe aucun moyen logiciel de lire cette clé. Le système de cryptage s'appelle ici FairPlay .

En bref, une façon de décrypter ce binaire est d'installer l'application sur un appareil jailbreaké et de la lancer à partir de la ligne de commande à l'aide d'un débogueur (gdb) que vous pouvez télécharger depuis Cydia. Vous devez définir un point d'arrêt quelque part, et lorsque votre exécution de code s'arrête au point d'arrêt, vous effectuez un vidage de la mémoire du périphérique RAM - et c'est votre bac déchiffré.

Ainsi, lorsque vous avez le binaire déchiffré, vous pouvez exécuter un outil appelé "class-dump" et obtenir les informations pour les classes déclarées et leurs méthodes si l'application est écrite en objectif C. Une fois que vous connaissez ces informations, vous pouvez modifier la mise en œuvre de méthode donnée d'une classe utilisée dans votre application en utilisant "Cydia Subtstrate" alias "Mobile Substrate". En fait, c'est de cette façon que tous les ajustements iOS jailbreakés sont effectués. Fondamentalement, vous accrochez un appel de méthode, et lorsque cette méthode est invoquée, elle utilise votre implémentation. De plus, votre implémentation peut appeler l'implémentation d'origine, ce qui est vraiment utile si vous souhaitez effectuer un petit ajout de code.

Je ne sais pas si ces choses sont possibles dans Swift, mais si vous traitez avec une application hybride comme celles faites avec cordova, phonegap, etc., alors vous pouvez voir toute sa source javascript car elle est persistée en tant que ressource à l'intérieur du fichier "ipa". De plus, vous pouvez modifier ce code javascript directement si vous avez un appareil jailbreaké et trouver où l'application est installée sur le système de fichiers (généralement /var/containers/Bundle/Application/uuid_for_your_app/). Cependant, je pense qu'il n'y a aucun moyen d'obtenir cette version corrigée et de la redistribuer (corrigez-moi si je me trompe).

19
Stoyan