例如,我想在内存中找到每个jmp实例。有一个简单的方法吗?
答案 0 :(得分:1)
您可以通过扫描目标进程的可执行内存页面找到可能的 X86 jmp
实例,以查找可能以jmp
(see 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'
此命令对文件而不是内存进行操作,但可能会为您提供所需内容。