如何在IDA Pro中使用IDAPython加载C头文件?


1

如何在IDA Pro中使用IDAPython加载C头文件?

我想自动加载IDAPython的C头文件,如Load("filename.h")

1

请参阅下面的报价从idc.py

def parse_decls(inputtype, flags = 0): 
    """ 
    Parse type declarations 
    @param inputtype: file name or C declarations (depending on the flags) 
    @param flags: combination of PT_... constants or 0 
    @return: number of parsing errors (0 no errors) 
    """ 
    return ida_typeinf.idc_parse_types(inputtype, flags) 


PT_FILE = 0x0001 # input if a file name (otherwise contains type declarations) 
PT_SILENT = 0x0002 # silent mode 
PT_PAKDEF = 0x0000 # default pack value 
PT_PAK1 = 0x0010 # #pragma pack(1) 
PT_PAK2 = 0x0020 # #pragma pack(2) 
PT_PAK4 = 0x0030 # #pragma pack(4) 
PT_PAK8 = 0x0040 # #pragma pack(8) 
PT_PAK16 = 0x0050 # #pragma pack(16) 
PT_HIGH = 0x0080 # assume high level prototypes 
        # (with hidden args, etc) 
PT_LOWER = 0x0100 # lower the function prototypes 

1

好,瓦特小号的回答居然指出你应该做的。在这里,我给出一个更详细的解答:

总之,您的电子下创建文件1.h:驱动器,具有一定的结构定义填写,并尝试这在您的IDA的输出窗口:

idaapi.idc_parse_types("E:\\1.h", idc.PT_FILE) 

这个函数将返回数在解析您的.h文件时遇到的错误。如果你得到0,这意味着你的头文件没有错。

注1:IDA Python不断变化。上面的代码适用于我(我使用IDA Pro 6.8)。如果您使用不同的版本,则可能需要进行一些更改。尝试IDA Python Reference。注意2:你应该发现新的类型出现在你的本地类型窗口中(按Shift + F1打开它),它显示TIL中的类型。如果您确实需要结构(属于IDB),请尝试使用idaapi.til2idbidaapi.import_type导入它们。