كيفية اكتشاف وتجنب استخدام واجهات برمجة التطبيقات الخاصة في مكتبات الطرف الثالث

StackOverflow https://stackoverflow.com/questions/1863764

  •  16-09-2019
  •  | 
  •  

سؤال

الآن بعد أن تقوم Apple بتشغيل نوع من التحليل الثابت للتحقق من استخدام API الخاص تلقائيا، تم القبض على عدد من الأشخاص بسبب مكتبة الثلاثة عشر. يمكنني استخدام مكتبة أخرى لجهة خارجية (التي تجميع نفسي من التعليمات البرمجية) وأود أن تدقيقها تلقائيا لاستخدام API الخاص قبل أن أقدم إلى Apple، حتى أتمكن من القضاء على / إعادة كتابة هذه الأجزاء.

إذا كنت أركض nm في تطبيقي قابل للتنفيذ، أحصل على قائمة بالرموز، وأرى رموزا هناك لا أستخدمها. على سبيل المثال، أرى _audioservicesplaystemsound، وإذا كنت ابحث عن "audioservicesplaystystemound" في xcode، لا أحصل على نتائج. هل هناك أي طريقة لتمييز المكالمات تلقائيا ب APIs الخاص، على سبيل المثال، لاحظت أن Apple لها عادة تضمينها مع تسطير الأسفل الأولي.

ومع ذلك: إذا قمت بتضمين مكالمة عمدا إلى API الخاص، فلا تظهر في إخراج nm, ، لكنها تظهر إذا كنت تعمل strings على ثنائي. بناء على ذلك، كانت فكرة واحدة كان لدي هي جمع قائمة كبيرة من جميع واجهة برمجة التطبيقات الخاصة الخاصة بجدول ضخم، والبحث عنها تلقائيا في إخراج السلاسل. أنا لم أفعل ذلك حتى الآن.

هل لدى أي شخص أي نصائح حول كيفية التقاط هذه الأشياء تلقائيا حتى أذهب فقط عملية المراجعة مرة واحدة؟

هل كانت مفيدة؟

المحلول

يمكنك محاولة تشغيل NM على ملفات الكائنات بدلا من الملف القابل للتنفيذ المرتبط:

nm -g -j *.o  | sort | uniq

يجب أن تكون الكائنات في build/<app>.build/*/<app>.build/Objects-normal الدليل الفرعي.

كنت ترى إشارة إلى AudioServicesPlaySystemSound لأن واحدة من الوظائف التي اتصلت بها بدوره المكالمات AudioServicesPlaySystemSound.

المكالمات C الهدف لن تظهر عموما nm مقالب، ستحتاج إلى استخدام otool من أجل هذا:

otool -ov <object file>

نصائح أخرى

استخدم أداة DEV هذه، التطبيق الماسح الضوئي. وبعد يقوم بمسح ملف .APP الخاص بك لطرائق API الخاصة. سيحقق الإصدار المستقبلي أيضا لمتغيرات مثيل API الخاص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top