如何在带-g编译的x86-64架构C目标文件中查找指定字符串?
从x86-64带调试信息的C目标文件中查找指定字符串的方法
你正在练习逆向工程C目标文件,现有一段C代码生成的、编译时添加了-g调试选项的x86-64目标文件,要从中找到text_to_compare字符串,可以用以下几种直接的方法:
方法1:使用strings命令快速过滤
strings工具可以直接提取二进制文件中的可打印字符串,结合grep精准定位目标:
strings your_target_file.o | grep "text_to_compare"
执行后会直接输出包含目标字符串的行,快速确认它的存在。
方法2:用objdump查看只读数据段
目标字符串会被存放在只读数据段(.rodata),用objdump解析该段内容:
objdump -s -j .rodata your_target_file.o
-s:显示指定段的内容(十六进制+ASCII格式)-j .rodata:指定仅查看只读数据段
输出结果里能直接看到text_to_compare的ASCII内容和对应的十六进制偏移。
由于编译时加了-g调试选项,也可以通过调试信息定位:
objdump -g your_target_file.o | grep "text_to_compare"
调试信息中会关联字符串的符号信息,同样能快速定位。
方法3:用readelf解析ELF字符串表
x86-64目标文件属于ELF格式,readelf可以直接打印只读数据段的字符串内容:
readelf -p .rodata your_target_file.o
-p参数会以易读的格式输出指定段的字符串,直接就能找到text_to_compare。
内容的提问来源于stack exchange,提问作者Said Hamed
相关产品推荐
相关产品推荐

