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

逆向工程 艾达 蟒蛇 脚本
2021-07-08 12:15:46

我试图弄清楚是否有办法获取包含随机字符的函数名称的地址。例如函数名是“Player_GetStats_m29275”,这里的“m292755” 是随机字符。所以我只想通过“Player_GetStats”来搜索函数的名称,这样它就会给我函数的地址。

get_name_ea不适合这样做。我可以使用find_text搜索该函数,但它太慢了,即使我提到了该段也需要很多时间。

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

1个回答

据我所知,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)

或者,您可以使用正则表达式来匹配您想要的名称:

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 次
  • $ 用于“行尾”