सामान्य उपकरण जो आप सॉफ़्टवेयर विकसित करने के लिए उपयोग करते हैं :)
आमतौर पर अनिर्दिष्ट एपीआई फ़ंक्शंस बस वही होती हैं, जो अनडॉस्क्राइब्ड है , और वास्तव में ध्यान से छिपे हुए रहस्य नहीं हैं।
भविष्य के सबूत एपीआई को डिजाइन करना कठिन है - आप आसानी से एपीआई में सामान जोड़ सकते हैं, लेकिन कुछ भी (कुछ ग्राहकों को तोड़े बिना) निकालना वास्तव में कठिन है। इसलिए, एपीआई में कुछ भी जोड़ने पर आपको बहुत सावधानी बरतनी चाहिए। यही कारण है कि एपीआई में कुछ अतिरिक्त कार्य (परीक्षण के लिए, विकास में, एक त्वरित हैक?) हो सकते हैं, जो दस्तावेज नहीं हैं और अगले संस्करण में काम करने या होने की कोई गारंटी नहीं है।
ये अनैच्छिक कार्य कुछ आसानी से मिल सकते हैं, आपको पता है कि कंपाइलर, लिंकर्स, लाइब्रेरी और डीबगर्स कैसे काम करते हैं (सिस्टम प्रोग्रामिंग सिस्टम)। लक्ष्य वास्तुकला की विधानसभा भाषा जानने से चोट नहीं पहुंचेगी। यदि आपका आईडीई / कंपाइलर कार्यशील निष्पादन योग्य बना सकता है, तो आप "मैन्युअल रूप से" भी कर सकते हैं, और उस रास्ते पर आंखें खोलकर आप कुछ छिपी हुई विशेषताओं का पता लगा सकते हैं :)
यूनिक्स पर्यावरण में उदाहरण: एक परिदृश्य जहां हमारे पास केवल प्रिंटफ फ़ंक्शन के लिए दस्तावेज हैं और यह जानना चाहते हैं कि क्या कुछ अन्य प्रिंट -प्रकार के फ़ंक्शन हैं। विचार की ट्रेन कुछ इस तरह जा सकती है:
1. हेडर-फाइल्स को चेक करें
$ grep printf /usr/include/stdio.h | head -5
extern int fprintf (FILE *__restrict __stream,
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
extern int vprintf (__const char *__restrict __format, _G_va_list __arg);
2. पुस्तकालय की जाँच करें
$ nm /usr/lib/libc.a | grep printf | head -5
U __asprintf
U __fwprintf
U __asprintf
U __fwprintf
U __printf_fp
3. लाइब्रेरी फंक्शन डिसाइड करें
$ objdump -S /usr/lib/libc.a | grep -A 10 '_fwprintf' | head
00000000 <__fwprintf>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 8d 45 10 lea 0x10(%ebp),%eax
6: 83 ec 0c sub $0xc,%esp
9: 89 44 24 08 mov %eax,0x8(%esp)
d: 8b 45 0c mov 0xc(%ebp),%eax
10: 89 44 24 04 mov %eax,0x4(%esp)
14: 8b 45 08 mov 0x8(%ebp),%eax
17: 89 04 24 mov %eax,(%esp)
या कुछ इस तरह का...