。)根据文本文件自动重命名IDA反汇编的所有关系函数?
#1 楼
这种自动执行名为IDAPython的事物的方法,其文档在这里:1-将此脚本保存在某处,记住位置。
#Not used, not debbugged, not ran even once
#Use on your own risk, beware errors
import idaapi
import idautils
import idc
def do_rename(l):
splitted = l.split()
straddr = splitted[0]
strname = splitted[1].replace("\r", "").replace("\n", "")
if straddr.find(":") != -1: #assuming form segment:offset
#removing segment, offset should be unique, if it isn't so, we should handle it differently
straddr = straddr.split(":")[1]
eaaddr = int(straddr, 16)
idc.MakeCode(eaaddr)
idc.MakeFunction(eaaddr)
idc.MakeNameEx(int(straddr, 16), strname, idc.SN_NOWARN)
if __name__ == "__main__":
f = open( "your_file_name", "r")
for l in f:
do_rename(l)
f.close()
在IDA中,打开文件->脚本文件,选择脚本并运行。
请注意,您应该插入文件名并验证地址转换是否正确。
希望它能提供某种指导。
评论
告诉我:)
– w s
16年1月28日在14:13
它像魅力一样运作。我所做的唯一更改是计算线性地址的方式:eaaddr = int(address [0],16)* 16 + int(address [1],16)+偏移量。偏移量是根据IDA能够找到的C函数(我知道该地址)计算的:offset = LocByName(“ _ system”)-0x189B
– tigrou
16年1月28日在15:38
评论
这种地址形式是什么意思?这是旧的DOS 16位程序的分段地址。参见此处:en.wikipedia.org/wiki/X86_memory_segmentation如果可以简化操作,我们可以认为它包含32位常规地址。