Belgelenmemiş fonksiyonlar nasıl keşfedilir? [kapalı]


11


Belgelenmemiş / özel API'yi nasıl bulduğunuzu her zaman merak ettim.

Örnek Elma belgesiz / özel API, Play Station , Windows Phone 7 , Win32 Kernel , Windows API , gizli geri arama vb ...

Bilgisayar korsanları özel ve belgesiz işlevler hakkında bilgi edinmek için hangi araçları kullanır?

Halkların, normalde API belgelerinde açıklanan sırları ortaya koyan özel API'leri ve tersine mühendislik tekniklerini inceleme deneyimlerini nereden okuyabilirim?

teşekkürler,
A

Yanıtlar:


7

Düşünebileceğim birkaç yol var:

  1. Yansıma. Burada bir nesne alırsınız ve yöntem, özellik vb. Gibi kendisi hakkında bilgi vermesini istersiniz. Doğru seçeneklerle (dile bağlı olarak) "herkese açık" olmayan bilgileri açığa çıkarabilirsiniz.

  2. Kaynak Koda. Bu, ikili dosyayı oluşturmak için kullanılan kaynağın (bir versiyon) yenilenir. Yine bu, API'nın herkese açık olmayan kısımlarını ortaya çıkarabilir.

Listeye "kazara" da ekleyebilirsiniz. Yanlış çalışan bir çağrı / komut veya çok fazla bilgi gösteren bir yardım ekranı.


2
Listeye kazara ekleyebilirsiniz . Evet, daha az sıklıkta, ancak olur;) Özellikle API sahipleri kazayı kışkırttığında.

1
@Pierre - iyi bir nokta.
ChrisF

Ayrıca, paylaşılan kütüphane imzaları. Bu ayrıştırma ile ilgili, ancak bir .dll / .dylib / .bu dosyasındaki işlevleri dışa resmi araçlar (Visual Studio içinde bağımlılık kaşif, Unixler içinde nm) ile taranabilir
Chris Dolan

4

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...


2

yasal uyarı: ChrisF'in cevabını seviyorum. Sanırım birkaç yaklaşım bırakıyor. Cevabın nasıl ele alındığı cevabının yorumlarına yerleştirilirse cevabımı silerim.

Bu, dekompilasyon altına düşebilir:

Belgelenmemiş diğer API'ları bulmak, satıcı tarafından sağlanan bir aracı hata ayıklamak ve istediğiniz şeyi yapan ve kütüphaneler arası çağrıları izlemek yoluyla da olabilir. Bu şekilde, nereye ne tür verilerin gönderildiği hakkında bir fikriniz olabilir.

Daha sonra diğer "özel" araçlar, python ve CTYPES kullanarak bu belgesiz API'lerle oynamak veya çarpışmalar için tam olarak ne yaptığını veya bulanıklaşana kadar benzer bir şeyin sürümü ile oynamak için yazılabilir. Bu konu http://pentest.cryptocity.net/reverse-engineering/ adresinde Aaron Portnoy tarafından çok az derinlemesine ele alınmaktadır ve konferanslardaki diğer görüşmelerinden bazıları (doğrudan Brezilya'daki bir konuşmada bunun hakkında konuştuğunu hatırlıyorum) ). RE ile ilgili, ama tam olarak sadece genel RE olduğunu sanmıyorum. Not: pentest.cryptocity.net'teki videolar SADECE bu konu değildir. Diğer alanları daha derinlemesine kaplarlar, bu sadece dokunulur. Bence bu genellikle test uzmanlarının "kesin adımlar sırlarımızı verecekti" gibi korudukları bir şeydir.

Takdir herhangi bir geribildirim okuduğunuz için teşekkür ederiz.

edit: windows tarafında bunun için yararlı olduğunu kanıtlayabilir bir araç minimal burada kaplıdır: http://breakingcode.wordpress.com/2010/08/24/winappdbg-1-4-is-out/
kalın java için kaçırma çağırmak hav özel ağ hizmetlerine müşteriler burada kaplıdır:
http://www.securitytube.net/JavaSnoop-How-to-hack-anything-written-in-Java-video.aspx

sonuncusu yalnızca asgari düzeyde alakalı olmakla birlikte, sorgulayıcının sonunda nereye gittiği ile ilgili olabilir. sahip olmadığınız API'ları kullanarak ... her neyse.


Daha fazla / farklı bilgi sağlamaktan daha çok kendi cevabınızı eklemek iyidir - Yığın Değişimi bununla ilgilidir.
ChrisF

@ChrisF açıklama için teşekkürler. sadece tersine çevrilmiş gibi görünüyordu. i geri başka bir olası yöntem / daha spesifik alt alt kümesi daha spesifik gösterimi taşıyabileceğini düşündüm (ters MSDN de referans değil semboller için arama kapsayabilir).
RobotHumans

-2

Hacking sesleri oldukça romantik, endüstriyel casusluk, sızıntı, rüşvet, hırsızlık ve sade şans yok. Yine de onları saymazdım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.