linuxdump内存
❶ linux下的mp文件介绍mp文件linux
Linux 系统崩溃是最让人头疼的事情,它会使我们的工作暂时停止,直到系统重启才可能恢复工作。mp 是一种文件,它可以帮助我们快速定位 Linux 系统中可能出现的问题,以达到解决问题的目的。
mp 文件实际上是一种二进制文件,它可以帮助技术人员确定系统出错的位置,因此可以找到问题更快。大多数情况下,mp 文件可以存储系统内存中的数据,以便技术人员可以检查系统状态的历史记录和调试问题。此外,技术人员还可以根据获取的 mp 文件对系统可能出错的位置进行定位和测试。
虽然 mp 文件能够帮助定位和调试问题,但是它也有一些缺点,比如它保存的数据不能完全指示系统出错的位置,这时就需要系统管理员结合经验进行确定。另外使用 mp 文件的时候也是非常昂贵的,因为为了获得有用的信息,通常会对它进行详细的分析,这会耗费几小时的工作时间。
下面是一段帮助检查并分析系统 mp 文件的代码:
# Create a directory named ‘mplog’ in the root of your file system
mkdir /mplog
# Move the existing mp file to that directory
mv /var/crash/* /mplog
# Create a core mp analyzer script in the same directory
touch /mplog/mptool.sh
# Add the following code to the script
# !/bin/sh
echo ‘Core Dump Analyzer’
for i in `ls |grep coremp`
do
echo ‘Analyzing’ $i
gdb -batch -x /mplog/commands $i
done
# Create a file with the commands to run while analyzing the core mp
touch /mplog/commands
# Add the command you want to use while analyzing the core mp
echo “info threads” >> /mplog/commands
echo “thread apply all bt” >> /mplog/commands
# Run the script
sh /mplog/mptool.sh
综上,mp文件可以帮助系统管理员快速定位系统出错的位置和进行调试,但可能也会消耗大量的时间和费用,因此使用 mp 文件前要谨慎判断。
❷ [转载] 从正在运行的Linux进程中mp出内存内容
最近看到有个CTF题感觉挺有意思,就是从一个bin中找到一个secret key,然后用来签名session cookies用来怼一个使用go的Web服务器。通常这种类型题的flag都比较直接。可以直接用strings怼这个bin就可以了,然而这次的这个题目中的bin不同,因为有太多杂碎(noise)要过滤了。于是在此我就来展示一下如何用一些基本的Linux命令配合gdb从进程中mp出内存中的信息。
先file一下,
发现是64位的Linux可执行文件。
然后strings一下,
发现字符串太多,还是先不看,再研究深一点吧。
然后先运行一下程序,
然后再另一个终端找到这个进程的PID
然后cat一下它的内存(太长不看TL;DR)
似乎太多了有点可怕,但是不用害怕。
然后启动gdb,将改进程attach到gdb上。
然后就是gdb命令
解释一下语法:
然后就是用strings命令找出刚才mp出的文件的字符串,我喜欢最少10个长度的字符串(-n 10)来过滤掉一些无用的信息(noise)。
结果如下:
可以看到好像有个hash值,为了不泄露CTF题的答案,我已经把hash值改了。
总结
好了,你已经找到运行的进程的PID,mp出了那个进程的内存内容,然后用gdb,strings命令找出了有用的数据。
以上翻译自:
https://colin.guru/index.php?title=Dumping_Ram_From_Running_Linux_Processes
Let’s get your hands dirty
Down to business
于是我也想试一下啊,然而我想找一个执行命令之后不退出的进程还蛮难的,最终我想到了apache,然而必须要有客户端与apache建立TCP长连接,如果是那种5xx的错误,比如这个,
就会发现TCP连接建立之后马上又断开了。
于是只能弄一个TCP长连接吧。返回200的那种应该可以。
结果发现还是不行。
于是通过htop漫无目的地找吧,于是还是找apache的主进程吧。
通过htop发信apache的主进程的PID为6900,
于是
(注意:要以root的身份启动,否则可能没有权限。)
然后gdb就开始调试6900进程了,一顿输出啊,几秒之后到达gdb的命令行。
然后mp出heap中的内容。
然后在/root目录找到了那两个mp出来的文件,
从任意一个mp中找出10个字符以上的字符串吧。
————————————————
原文链接: https://blog.csdn.net/caiqiiqi/article/details/72807952
❸ Linux里面kmp是什么
kmp是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kmp产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个mp
core文件中以便于Red
Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。这和以前的diskmp,netmp是同样道理。只不过kmp是RHEL6特有的。
查看Linux系统是否打开kmp:
执行命令:ulimit -c 如果输出为 0 ,则代表没有打开。如果为unlimited则已经打开。