IDA脚本,获取名称中包含随机字符的函数名称


4

我试图弄清楚是否有一种方法可以获取具有随机字符的函数名称的地址。 例如函数名称是“Player_GetStats_m29275”这里是“m292755” 是随机字符。所以我想通过“Player_GetStats”来搜索函数的名称,所以它给了我函数的地址。

get_name_ea不适合做这个。我可以使用find_text来搜索功能,但是它太慢并且需要很多时间,即使我提到该段。

请帮忙,我将不胜感激。谢谢

2

据我所知,IDA没有function_name_to_address()得到一个模式并返回一个地址。你可以遍历所有的函数,并检查他们的名字是否与你想要的名字相匹配。它不应该花太长时间。

from idautils import * 
from idaapi import * 
from idc import * 

ea = BeginEA() 
for funcAddr in Functions(SegStart(ea), SegEnd(ea)): 
  funcName = GetFunctionName(funcAddr) 
  # Check if the function name starts with "Player_GetStats" 
  if funcName.startswith("Player_GetStats"): 
   print "Function %s is at 0x%x" % (funcName, funcAddr) 

或者您可以使用regular expression来匹配你想要的名称:

import re 

funcName = "Player_GetStats_m29275" 
re.compile("^Player_GetStats_\w\d{5} $") 
if pattern.match(funcName): 
  "%s match the pattern" % funcName 

说明:

  • ^是 “开始”
  • \w比赛一个字字符(本例中为“m”)
  • \d相匹配的数字
  • {5}检查该先前表达式(\d)被重复5次
  • $ 为 “行结束”