Yapı türlerinin değişkenlerine yorumlar (veritabanında bulunur) eklemek için idapython kullanarak bir IDA eklentisi yazıyorum. Bunu yapmak için, ilk olarak, IDA'daki "Yapı" alt görünümünde bulunabilen belirli bir yapı türüne (örn. Yapı BITMAPINFO) çapraz referansların listesini almam gerekiyor.
IDA'nın bu işlevi sürüm 6.2'den itibaren yapı adına fareyle sağ tıklayıp "Çapraz referansları listele" seçeneğini seçerek sağladığını biliyorum. Aşağıdakine benzer bir pencere açılacaktır:
Yukarıdaki resimdeki listenin her bir öğesi, global bir % yapı adı% türünde değişken (burada BITMAPINFO) bildirilir veya "yapı adı" türünde yerel bir değişkenin tanımlandığı bir konum. İlki,
gibidir (burada BITMAPINFO değil, GUID yazın).
İkincisi Bu, IDA'nın tanımlanmış türüne göre yerel değişkenleri ilan ettiği konumdur.
Bu verileri IDAPython ile almanın bir yolu olup olmadığını merak ediyorum.
NOT: Bu farklı çapraz referanslardan yapı tipinin bir (ll) üyesine / üyelerine, aşağıda gösterildiği gibi yapı üyesi adına sağ tuşla tıklayarak elde edilebilir
Burada sormadan önce şunu yapıyorum:
#CODE 1ea = idc.LocByName (% structure name%) frm = [x.frm idautils.XrefsTo (ea)]
için x için yukarıdaki kodu kullanarak% yapı adı% için çapraz referansların tüm listesine sahip olduğumu düşünüyorum. Ancak, listedeki birçok EA'nın '0xff0052c9' ( MaxEA 0x108f800 ) gibi etkisiz göründüğünü gördüm. Ancak sanırım kodum istenen sonucu aldı çünkü döndürülen listenin uzunluğu 1. resim olarak gösterilen listedeki öğe sayısına eşit. Ancak sonucu özellikle (görünüşte) etkisiz olanları açıklayamam. Ayrıca, aşağıdaki kodu kullanarak listedeki adreslere yorum eklediğimde
#CODE 2for ea in xrefs_list: # tekrarlanabilirse verilen yapı türüne her çapraz referans:
# 'ea' idc.MakeRptCmt (ea, cmt) adresine tekrarlanabilir yorum 'cmt' ekleyin else: # 'ea' idc.MakeComm (ea, cmt) adresine yorum 'cmt' ekleyin
Yalnızca idc.MinEA () ve idc.MaxEA () arasındaki etkili adreslere yorum eklediğimi fark ettim ve bu adresler, sorgulanan yapı türü 2. resimde gösterildiği gibi bildirildi.
Sorularım:
- Yukarıdaki kodum (KOD 1) hepsini almak için doğru mu bir yapı türüne çapraz referanslar? Öyleyse, görünüşte etkisiz olan bu adresler nasıl açıklanır (0xFF000000'ün üstünde)
- Yapı türünün genel örneklerine yapılan referanslar dışında diğer çapraz referans adreslerine yorumlar nasıl eklenir?