为何IDA中可见的send_packet函数无法被Frida通过名称查找?
为什么IDA可见的
send_packet函数无法被Frida的Module.findExportByName找到? 以下是几种核心原因:
函数未被标记为导出符号
Frida的Module.findExportByName仅会查找二进制文件导出表中的符号(比如ELF格式的.dynsym段、PE格式的导出表)。而IDA中看到的send_packet,可能只是函数的本地符号(仅存在于编译时的符号表,未进入导出表),或者是IDA反编译时根据代码逻辑自动推导的伪名称,这类符号不会被Frida识别。二进制符号表已被剥离
如果编译时使用了-strip(ELF)或类似的符号剥离参数,二进制文件的符号表会被移除。此时IDA显示的函数名,要么是通过调试信息(如DWARF)恢复的,要么是IDA基于函数调用、参数结构等特征生成的自定义名称——这些信息不会被Frida读取到,因为Frida依赖的动态符号表已经不存在。函数是静态链接的内部函数
如果send_packet是用static关键字修饰的静态函数,编译后会被限制在二进制内部可见,不会被导出到动态符号表。这类函数只能通过基地址加偏移的方式定位,因为它们从未出现在Frida可访问的导出符号集合中。二进制经过混淆处理
若目标二进制被代码混淆工具处理过,原始函数名会被替换为无意义的字符串(如sub_123456)。IDA中显示的send_packet可能是你手动重命名的分析名称,并非二进制实际存储的符号名,自然无法被Frida通过名称查找。
内容的提问来源于stack exchange,提问作者Polo1990
相关产品推荐
相关产品推荐

