我正在使用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 ...
將'zzz'的C結構定義作爲字符串構建並將其提供給IDC ['ParseType()'](http://www.hex-rays.com/products/ida/支持/ idadoc/1517.shtml)功能。 – DCoder