Soru:
IDA Pro liste COM yöntemleri
newmrd
2016-08-14 16:13:31 UTC
view on stackexchange narkive permalink

Dışa aktarılan bazı işlevleri ve COM yöntemlerini içeren bir dll dosyam var.

İşte DLL Export Viewer tarafından açılan dll bilgilerim:

enter image description here

Ancak dll dosyasını ida pro'da açtığımda, yalnızca dışa aktarılan işlevler görüyorum ve COM yöntemlerinden hiçbiri listelenmiyor.

enter image description here

ida pro'da COM yöntemlerinin başlangıç ​​adreslerinin listesini nasıl görüntüleyebilirim?

Bunun için iyi bir çözüm bilmek isterim. Tüm zamanların "çözümüm" şuydu: dışa aktarılanları hariç tutan her fonksiyona bir kesme noktası koymak ve ardından incelemek istediğim yöntemi çağırmak ve kesme noktasına ulaşılana kadar beklemek. "Çok gelişmiş."
Iki yanıtlar:
NirIzr
2016-08-14 18:09:17 UTC
view on stackexchange narkive permalink

Orijinal soru

Bu, oldukça basit bir nedenden dolayı umulduğu kadar önemsiz değildir, COM nesneleri dahili nesnelerdir ve işlevleri dışa aktararak uygulama ayrıntılarını göstermezler.

Bunun yerine COM, bir COM sınıfını tanımlamak için bir araç olarak UUID (yaygın olarak bilinen CLSID ) kullanarak belirli bir sınıfın COM örneklerini oluşturmak için bir arabirim sağlar.COM nesneleri CoCreateInstance burada belgelenmiştir.

Döndürülen nesne, söz konusu COM nesnesi için sanal bir işlev tablosu olarak gösterilen bir dizi API'yi uygulayan bir C ++ nesnesidir, dolayısıyla bunları dışa aktarmaya gerek yoktur işlevleri ve bu, IDA'nın dışa aktarım görünümünü kullanarak bunları bulamazsınız.

Yan not: COM ile ilgili ters çevirme soruları çok az olmamakla birlikte, COM sınıflarını tersine çevirmekle ilgili çok daha az soru vardır. COM ile ilgili soruların çoğu, COM kullanarak yazılımı tersine mühendislik girişimlerini içerirken, OP'nin bir COM sınıfına ters mühendislik yapmaya çalıştığı görülüyor. Sanırım bunun nedeni, çoğu COM sınıfının bir dereceye kadar belgelenmesidir.

DLL Export Viewer sonuçları

burada belgelendiği gibi , DLL Export Viewer, DLL içine gömülü tür kitaplığı kaynaklarından COM Tür Kitaplıkları okunmasını destekler. COM Tipi Kitaplıklarını birkaç paragrafta açıklayacağım ve bu verileri IDAPython'da nasıl alabileceğinizi göreceksiniz.

Orijinal siteden:

Sürüm 1.10

  • 64 bit DLL dosyaları için destek eklendi.

  • Yeni seçenek: COM türü kitaplıklarının görüntüleme yöntemi ve özellikleri.

Aslında bir COM sağlayıcısına ters mühendislik uygulamak

Sorunuz biraz yanlış yönlendirilmiş olsa da, RE COM nesne sağlayıcılarına yardımcı olabilecek birkaç kaynak hala var .

Belgeler

MSDN'nin temel COM geliştirme kılavuzu, come type kitaplıkları hakkında Microsoft System Journal gibi bazı kaynaklar, COM'un derinlemesine anlaşılması (ve dolayısıyla tersine çevrilmesi) için çevrimiçi olarak mevcuttur

Öncelikle, COM nesnelerinin temel olarak anlaşılması ve makinenizde tanımlanan COM nesnelerine göz atma becerisi için Oleview , Windows Sürücü Kiti veya benzerinin bir parçası olarak indirilebilir.

OleView.exe, yüklü COM nesnelerini, sağladıkları arayüzleri ( COM nesnesi), her bir COM nesnesinin sınıf kimliği, vb. COM nesnenizi burada bulabilirseniz, sonraki aşamalarda size büyük ölçüde yardımcı olacaktır.

Sınıf bilgilendirici eklentisi

Sınıf bilgilendiricisi IDA eklentisini kullanarak, COM nesneniz için RTTI bilgilerini bulabilirsiniz. Bu, COM nesnenizin Sanal İşlev Tablosunu bulmanıza ve kısmen eşlemenize yardımcı olacaktır (yine, bir COM nesnesinin kullanılabilir işlevselliğini, aslında uygulama yöntemlerine işaret ederek açıklar). IDA'nın yerleşik COM Yardımcısı eklentisini kullanmak da yararlı olabilir.

Tip kitaplığı dosyalarını (* .tlb) python kullanarak manuel olarak ayrıştırma

Bu kabaca Oleview olsa da .exe (ve beğeniler) yapıyorsanız, bulduğunuz herhangi bir * .tlb dosyasını (genellikle COM DLL'nin yanında bulunur veya içine bir kaynak olarak gömülüdür) manuel olarak ayrıştırarak, bulunduğunuz bilgileri ilgilenir (işlevlerin uygulandığı ikili dosyadaki uzaklıklar dahil). win32 uzantıları için python'un bir parçası olarak bunun için pythoncom adlı bir python modülü vardır. Belgeler buradadır ve modül buradan

indirilebilir
Igor Skochinsky
2016-08-15 17:24:03 UTC
view on stackexchange narkive permalink

COM yöntemlerini numaralandırmak ve adreslerini bulmak için TypeLib API kullanan Dieter Spaar'ın eski bir eklentisi var. Kod biraz eski olduğundan, daha sonraki IDA sürümleri için bazı ayarlamalar gerekebilir. Typelib bilgisinin varlığına dayandığını ve bu nedenle barebone (typelib-az) COM nesneleri için çalışmayabileceğini unutmayın.

Bu temel Matt Pietrek'in bu makalesinde.

Düzenleme : bir şey daha. Arayüz yöntemlerinin adreslerini bulmak için, eklentinin arayüzü uygulayan sınıfı gerçekten oluşturması gerekir ( CoCreateInstance 'i çağırarak), bu da DLL / OCX'ten kodu çalıştıracağı anlamına gelir em>. Bu nedenle, kökenleri belirsiz dosyalarla ilgilenmeniz gerekiyor.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...