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