दिलचस्प पोस्ट
एंड्रॉइड स्टूडियो एडीबी सिंटैक्स त्रुटि: ")" अप्रत्याशित स्थानीय मैक्सिमा और मिनमा ढूंढना समझ में एक असाइनमेंट के साथ एक लूप को परिवर्तित करना Laravel 5.1 में जीमेल का उपयोग कर मेल कैसे भेजना है? क्या मुझे <iStream> के बगल में # स्ट्रिंग शामिल करना है? पायथन नाम मैंगलिंग अपाचे POI का उपयोग करने वाले उपयोगकर्ताओं के लिए एक्सेल फ़ाइल बनाएं build-impl.xml: 1031: मॉड्यूल तैनात नहीं किया गया है RequestAnimationFrame का उपयोग कैसे करें? Eratosthenes की छलनी – एक्स और एन के बीच प्राइम पायथन अनुरोध SSLError फेंकने constexpr और reinterpret कलाकारों के साथ एक स्थिर const शून्य सूचक का प्रारंभ, जो संकलक सही है? यह कैसे बताने के लिए कि क्या Google App इंजन प्रलेखन पृष्ठ मानक या लचीला पर्यावरण पर लागू होता है खिड़की.क्योंकि आईपैड पर काम नहीं कर रहा है? मैं पायथन लैंबदास की सूची कैसे बना सकता हूं (सूची की समझ / लूप के लिए)?

ऐप्पल कैसे जानता है कि आप निजी एपीआई का उपयोग कर रहे हैं?

मैंने किसी भी स्रोत कोड के बिना ऐप के लिए एक बाइनरी फ़ाइल सबमिट की है।

मैन्युअल रूप से स्रोत कोड की जांच के अलावा ऐप्पल को पता है कि क्या इस्तेमाल किया गया था और आपने कौन सी एपीआई बुलाया है?

Solutions Collecting From Web of "ऐप्पल कैसे जानता है कि आप निजी एपीआई का उपयोग कर रहे हैं?"

मुझे पता है कि 3 तरीके हैं ये सिर्फ कुछ अटकलें हैं, क्योंकि मैं ऐप्पल की समीक्षा टीम में काम नहीं करता हूं।

1. otool -L

यह उन सभी पुस्तकालयों को सूचीबद्ध करेगा जिनसे ऐप ने लिंक किया है। कुछ स्पष्ट रूप से आपको इसका उपयोग नहीं करना चाहिए, जैसे IOKit और WebKit को इसके द्वारा पता लगाया जा सकता है।

2. nm -u

यह सभी लिंक किए गए प्रतीकों की सूची देगा यह पता लगा सकता है

  • गैर-दस्तावेजी सी फ़ंक्शन जैसे _UIImageWithName;
  • उद्देश्य-सी कक्षाएं जैसे कि यूआईआईपीआरजीएचयूडी
  • UITouch._phase जैसे कि UITouch._phase (जो कि पिछले कुछ महीनों में UITouch._phase -आधारित ऐप की अस्वीकृति का कारण हो सकता है।)

3. उद्देश्य-सी चयनकर्ताओं, या strings सूचीबद्ध करना

उद्देश्य-सी चयनकर्ताओं को बाइनरी के एक विशेष क्षेत्र में संग्रहित किया जाता है, और इसलिए ऐप्पल वहां से सामग्री निकाल सकता है, और जांचें कि क्या आपने कुछ गैर-दस्तावेज उद्देश्य-सी विधियों का उपयोग किया है, जैसे -[UIDevice setOrientation:]

चूंकि चयनकर्ता वर्ग से स्वतंत्र हैं, आप संदेश -setOrientation: रहे हैं, भले ही आपका कस्टम वर्ग परिभाषित करता है -setOrientation: यूआईडीवाइस के लिए अप्रासंगिक, अस्वीकार किए जाने की संभावना होगी।


आप निजी एपीआई (गलत अलार्म) के कारण संभावित अस्वीकृति का पता लगाने के लिए एरिका सदन के एपीआई किट का उपयोग कर सकते हैं।


(यदि आप वास्तव में वास्तव में वास्तव में इन चेक का समाधान करना चाहते हैं, तो आप रनटाइम सुविधाओं का उपयोग कर सकते हैं जैसे कि

  • ड्लोपें, डीएसएलएसएम
  • objc_getClass, sel_registerName, objc_msgSend
  • -valueForKey: :; object_getInstanceVariable, object_getIvar, आदि।

उन निजी पुस्तकालयों, कक्षाओं, विधियों और आयवरों को प्राप्त करने के लिए )

आप टर्मिनल में निम्नलिखित एक-लाइनर का उपयोग करके मैक-ओ प्रोग्राम में चयनकर्ताओं को सूचीबद्ध कर सकते हैं:

 otool -s __TEXT __objc_methname "$1" |expand -8 | cut -c17- | sed -n '3,$p' | perl -n -e 'print join("\n",split(/\x00/,scalar reverse (reverse unpack("(a4)*",pack("(H8)*",split(/\s/,$_))))))' 

मान लें कि आप कुछ निजी एपीआई का उपयोग करना चाहते हैं; उद्देश्य सी आपको स्ट्रिंग से किसी भी एसईएल का निर्माण करने की अनुमति देता है:

  SEL my_sel = NSSelectorFromString([NSString stringWithFormat:\ @"%@%@%@", "se","tOr","ientation:"]); [UIDevice performSelector:my_sel ...]; 

एक रोबोट या लाइब्रेरी कैसे स्कैन कर सकता है? उन्हें कुछ उपकरण का उपयोग करके इसे पकड़ना होगा जो रनटाइम पर निजी अभिगमों पर नज़र रखता है। यहां तक ​​कि अगर उन्होंने इस तरह के एक रनटाइम उपकरण का निर्माण किया है, तो इसे पकड़ना मुश्किल है क्योंकि यह कॉल शायद ही कभी प्रयोग किए गए रास्ते में छिपी हो सकती है।

मैं सोचता हूं कि वे अपने बाइनरी के सभी प्रतीकों को आयात करने की कोशिश कर रहे हैं (जानकारी उनके लिए प्रतीक तालिका में आसानी से उपलब्ध नहीं है) और आपको इनमें से किसी भी प्रतीक को उनकी "निजी एपीआई सूची" में पाया जाता है। वास्तव में स्वचालित करने के लिए बहुत आसान है, वास्तव में

एक निष्पादन योग्य बिल्कुल एक ब्लैक बॉक्स नहीं है यदि आप किसी पुस्तकालय में कॉल करते हैं, तो यह खोजने के लिए एक आसान बात है यही कारण है कि मैं आधुनिक सीएस शिक्षाओं में विधानसभा भाषाओं के नुकसान को विलाप करता हूं। =] एलडीडी जैसे उपकरण आपको बताएंगे कि आपने क्या जोड़ा है, हालांकि मुझे याद नहीं है कि एलडीडी के अवतार क्या मैक आईफोन देव किट में बना है।

यहां तक ​​कि अगर आप स्थायी रूप से लिंक कर रहे हैं, तो सबसे खराब स्थिति में, वे निजी लिंक्स के कोड के नमूने अपनी सूची में ले सकते हैं, और उनके खिलाफ अपनी बाइनरी खोज सकते हैं (यह स्वचालित रूप से आसान भी है)।

एपल को जानना, मुझे यकीन है कि उनके पास एक व्यापक, स्वचालित प्रणाली है, और शायद किसी भी अनिश्चितता को या तो मैन्युअल रूप से अस्वीकार या समीक्षा की जाती है

दिन का अंत, मुझे लगता है कि यह संभवत: ऐप्पल की कोशिश करने और बेवकूफ बनाने का प्रयास नहीं है।

 otool -L somebinary 

यह डेस्कटॉप अनुप्रयोग, ऐप स्कैनर , मैक-ओ बाइनरी फ़ाइल को अलग करके निजी एपीआई उपयोग के लिए एपी फ़ाइलों को स्कैन कर सकता है। अगर ऐसा हो सकता है, तो एप्पल भी कर सकता है!

प्रतीक जांच से अलग …

सेब बहुत आसानी से एसडीके का एक संस्करण हो सकता है जो प्रत्येक निजी तरीकों के ढेर को जांचता है, जब यह सुनिश्चित किया जाता है कि यह किसी निर्दिष्ट विधियों में से प्रवेश किया जाता है।