J’ai présenté un fichier binaire à Apple sans code source.
En dehors de vérifier manuellement le code source, comment Apple sait ce qui a été utilisé et quelles vous avez appelé ?
J’ai présenté un fichier binaire à Apple sans code source.
En dehors de vérifier manuellement le code source, comment Apple sait ce qui a été utilisé et quelles vous avez appelé ?
Il existe 3 façons je sais. Ce sont juste des spéculations, puisque je ne travaille pas dans la Pomme de l'équipe de révision.
otool -L
Ce sera la liste de toutes les bibliothèques de l'application a liés à. Quelque chose de clairement vous ne devez pas utiliser, comme IOKit WebKit et peuvent être détectés par ce.
nm -u
Ce sera la liste de tous les symboles lié. Ce peut détecter
UITouch._phase
(qui pourrait être la cause de rejet de Three20 les applications basées sur la dernière quelques mois.)strings
Objective-C sélecteurs sont stockées dans une région spéciale de la binaire, et, par conséquent, Apple pourrait en extraire le contenu à partir de là, et de vérifier si vous avez utilisé certains sans-papiers Objective-C méthodes, telles que l' -[UIDevice setOrientation:]
.
Depuis les sélecteurs sont indépendants de la classe que vous soyez de messagerie, même si votre classe personnalisée définit -setOrientation:
pas pertinent pour UIDevice, il y aura une possibilité d'être rejeté.
Vous pouvez utiliser Erica Sadun de APIKit pour détecter le potentiel de rejet en raison de (fausses alarmes) Api privées.
(Si vous avez vraiment vraiment vraiment vraiment envie de contournement de ces vérifications, vous pouvez utiliser les fonctions d'exécution tels que
-valueForKey:
; object_getInstanceVariable, object_getIvar, etc.pour obtenir ces bibliothèques privées, des classes, des méthodes et ivars. )
Disons que vous voulez utiliser une API privée; L’objectif C vous permet de construire n’importe quel SEL à partir d’une chaîne:
SEL my_sel = NSSelectorFromString([NSString stringWithFormat:\
@"%@%@%@", "se","tOr","ientation:"]);
[UIDevice performSelector:my_sel ...];
Comment une analyse de robot ou de bibliothèque pourrait-elle résoudre ce problème? Ils devraient résoudre ce problème en utilisant un outil qui surveille les accès privés lors de l'exécution. Même s'ils ont construit un tel outil d'exécution, il est difficile à attraper, car cet appel peut être caché dans un chemin d'accès rarement exercé.
Un exécutable n'est pas exactement une boîte noire. Si vous appelez une bibliothèque, c'est une chose facile à trouver. C'est pourquoi je déplore la perte des langages d'assemblage dans les formations CS modernes. =] Des outils tels que ldd vous diront ce que vous avez lié, bien que je ne me souvienne pas quelle incarnation de ldd a été intégrée au kit de développement pour iPhone mac.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.