Yazılım geliştirmek için kullandığınız normal araçlar :)
Genellikle belgesiz API fonksiyonları sırf bu, belgesizdir ve gerçekten dikkatle saklanmamış sırlardır.
Geleceğe hazır bir API tasarlamak zordur - API'ya kolayca bir şeyler ekleyebilirsiniz, ancak herhangi bir şeyi kaldırmak (bazı istemcileri bozmadan) gerçekten zordur. API'ya bir şey eklerken çok dikkatli olursunuz. Bu nedenle API'da belgelenmemiş ve bir sonraki sürümde çalışma veya orada olma garantisi olmayan bazı ekstra işlevler (testte, geliştirme aşamasında, hızlı bir saldırı?) Olabilir.
Derleyicilerin, bağlayıcıların, kitaplıkların ve hata ayıklayıcıların nasıl çalıştığını bildiğiniz göz önüne alındığında, bu belgelenmemiş işlevler kolayca bulunabilir. Hedef mimarinin montaj dilini bilmek acıtmaz. IDE / derleyiciniz çalışan yürütülebilir dosyalar oluşturabilirse, bunu "manuel olarak" da yapabilirsiniz ve bu yolda gözleri açık tutarak bazı gizli özellikleri keşfedebilirsiniz :)
Unix ortamında örnek: Yalnızca printf işlevi için belgelere sahip olduğumuz ve printf benzeri başka işlevler olup olmadığını bilmek isteyen bir senaryo . Düşünce treni şöyle bir şey olabilir:
1. Başlık dosyalarını kontrol edin
$ 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. Kütüphaneyi kontrol edin
$ nm /usr/lib/libc.a | grep printf | head -5
U __asprintf
U __fwprintf
U __asprintf
U __fwprintf
U __printf_fp
3. Kütüphane işlevini sökün
$ 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)
Ya da böyle bir şey...