📜  如何在内存中搜索 bin sh 的地址 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:38:38.808000             🧑  作者: Mango

如何在内存中搜索 bin sh 的地址 - Shell-Bash

在Shell-Bash编程中,有时候需要在内存中搜索特定的二进制数据,比如bin sh的地址。这篇文章将介绍如何在Shell-Bash中完成这个任务。

使用 grep 命令

使用grep命令可以在内存中搜索特定的二进制数据。具体方法如下:

grep -oba 'bin/sh' /proc/*/mem | cut -d '/' -f 3 | sort -u

其中:

  • -o 参数表示只输出匹配到的字符串,不输出整行。
  • -b 参数表示输出匹配到的字符串在输入文件中的位置。这个参数将输出一个字符串的偏移量,也就是一个数字,表示这个字符串在文件中的位置。
  • -a 参数表示grep命令会将输入文件当成文本文件处理。在Linux系统中,内存也可以当成一个文件来处理,所以这个参数可以让grep命令正确地处理内存。

利用/proc/*/mem代表所有进程的内存映射文件。cut -d '/' -f 3是选取PID。

使用 pmap 命令

pmap命令可以列出进程的内存映射情况。具体方法如下:

pmap $(pidof -s bash) | grep ' r-xp ' | awk '{print $1}'

其中:

  • pidof -s bash 返回当前bash shell进程的PID。
  • pmap 命令将显示当前bash shell进程的内存映射情况。
  • grep ' r-xp ' 命令用于过滤出可执行段的内存映射区域。
  • awk '{print $1}' 命令用于只输出第一列的内容,也就是可执行段的内存地址。
总结

本文介绍了在Shell-Bash编程中如何在内存中搜索特定的二进制数据,包括使用greppmap两个命令。这些技巧可以在需要逆向分析Shell-Bash脚本时,方便快捷地获取有用的信息。