我正在尝试通过二进制文件(可能用 C 编写)查找存储在内存中的字符串值,该值在我执行“字符串 a.out”时不会出现。我曾尝试检查我从汇编代码中挑选出的感兴趣的特定内存地址,但没有成功。因此,我希望尝试打印程序存储在内存(或 char* 数组)中的所有字符串值。有没有办法做到这一点?(注意:该文件不包含调试信息)。谢谢!
使用 gdb 从未知的 elf-x86-64 二进制文件中获取字符串值
逆向工程
二元分析
数据库
二进制
字符串
2021-06-14 20:59:09
1个回答
如果可执行文件不是静态编译的,我认为最简单的方法是使用LD_PRELOAD注入共享对象 (.so)以挂钩/重载打印它并显示缓冲区地址的函数。如果您禁用 ASLR,您应该能够在字符串地址上设置一个内存断点,然后找出它是如何“加密”的。另一种解决方案是使用__builtin_return_address打印返回地址。