有没有办法在gdb中找到特定汇编指令的所有示例?

时间:2018-02-12 05:04:09

标签: assembly gdb

例如,我想在内存中找到每个jmp实例。有一个简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过扫描目标进程的可执行内存页面找到可能的 X86 jmp实例,以查找可能以jmpsee here, for example)开头的初始字节和然后做一些现实检查 - 例如怀疑命令指向的地址是否实际存在等等。

然而,即使这种方法也不能保证你能够全部捕获它们:如果作者足够吝啬,那么所讨论的程序可以例如在堆栈上生成代码,执行它并在返回后立即擦除它。

所以是的,@ PeterCordes是对的:没有通用的方法。但是,如果您确定不需要反调试技巧(并且您的计算机上安装了Bash),那么您只需运行:

objdump -D /insert/executable/file/name.here -j .text -j .plt | grep -P $'^ *[0-9a-f]+:\t+([0-9a-f]{2} )+ +\t+jmp'

此命令对文件而不是内存进行操作,但可能会为您提供所需内容。