2012-11-09 34 views
0

我正在使用IDAPython,但這也應該適用於IDC。在IDA Pro腳本和API(IDC,Python等)中,如何添加一個結構成員,其類型是指向結構的指針?

文檔是在http://www.hex-rays.com/products/ida/support/idapython_docs/

我的目標是programatticly創建兩個結構和一個指向的成員,其他:

00000000 zzz_vtable struc ; (sizeof=0x4) 
00000000 field_0   dd ? 
00000004 zzz_vtable ends 
00000004 
00000000 ; --------------------------------------------------------------------------- 
00000000 
00000000 zzz  struc ; (sizeof=0x4) 
00000000 vtable_ptr  dd ?     ; offset pointing to a zzz_vtable 
00000004 zzz  ends 

不過,我不知道如何做到這一點programmaticly,甚至從IDA(窗口)gui。

我的代碼如下所示:

#  AddStrucMember(sid, name, offset, flag, typeid, nbytes, target=-1, tdelta=0, reftype=2) 
tflag = stroffflag()|FF_DWRD|FF_DATA 
as_res = AddStrucMember(data_struct.id, "vtable_ptr", 0, tflag, vtable_struct.id, 4, -1, 0, REF_OFF32) 

運行這段代碼幾次(運行delete一個之間的成員),只是用一個評論,說; struct offset delta 63435808創建vtable_ptr,與三角洲不斷變化。

感謝您的幫助。

更新:找到這個答案https://stackoverflow.com/a/8280502/84041告訴我如何從GUI做到這一點,但我找不到如何從腳本中做到這一點。

更新:從GUI完成後,我看到「局部類型」窗口已經更新了我的結構。我想我應該在尋找與這些對象相關的API ...

+0

將'zzz'的C結構定義作爲字符串構建並將其提供給IDC ['ParseType()'](http://www.hex-rays.com/products/ida/支持/ idadoc/1517.shtml)功能。 – DCoder

回答

1

如果您通過GUI具有所需的結構,並且想知道如何做到這一點,請將類型信息轉儲到IDC文件中: File | Produce file | Dump typeinfo into IDC file...

+0

好主意。我最終會在某個時候檢查一下。 –

相關問題