通过 IDAPython 设置(新创建的)函数的名称

逆向工程 艾达 蟒蛇
2021-06-14 03:12:44

有没有办法在创建函数时指定函数的名称idc.MakeFunction()

如果没有,重命名函数的最佳做法是什么?我发现idc.GetFunctionName(ea)但没有对应的名称来设置。谷歌研究发现了一些人们使用idc.MakeNameEx(). 然而,目的MakeNameEx似乎是重命名地址:

def MakeNameEx(ea, name, flags): """ Rename an address

@param ea: linear address
@param name: new name of address. If name == "", then delete old name @param
flags: combination of SN_... constants

并涉及一大堆标志,例如:

[...]
SN_NOCHECK    = idaapi.SN_NOCHECK    # Replace invalid chars with SubstChar
SN_PUBLIC     = idaapi.SN_PUBLIC     # if set, make name public 
SN_NON_PUBLIC = idaapi.SN_NON_PUBLIC # if set, make name non-public 
SN_WEAK       = idaapi.SN_WEAK       # if set, make name weak 
SN_NON_WEAK   = idaapi.SN_NON_WEAK   # if set, make name non-weak
[...]

我需要的是一个函数的简单重命名,保留其所有属性、标志等......

1个回答

idc.MakeName(ea, name) 应该足够了。

请注意,接受的标志MakeNameEx()不会改变函数的属性或函数的标志;相反,它们用于处理命名本身的方式。