如何转储正在内存中运行的程序

你好
我已经写了一项运行Backgroud的服务来在Linux中做某事.
不幸的是$ b!$(BI错误地删除了源代码,我仍然可以
请参阅使用" PS Aux"的过程运行背景:
用户名13820 0.0 0.0 60368 2964? S 8月20日0:33
python ./updatejobstatus.py
我想知道是否有某种方法可以倾倒该程序
" updatejobstatus.py"并恢复源代码?
非常感谢.

# 回答1


Ruqiang826写道:
通常,有一种访问/proc/{pid}/fd/的方法
但是我相信您对这种方法不幸,因为显然
解析后,Python解释器会关闭源文件.
您仍然可以尝试为您的文件系统找到一个不局限的实用程序.
避免在此期间写入磁盘,以免覆盖已删除的文件
当然是偶然的. Ext2有这样的实用程序,但我没有
知道是否可以使用EXT3.对于其他文件系统,我不知道.
-Gerhard
# 回答2


在2008年9月11日的星期四02:31:23 -0700(PDT),Ruqiang826写道:
最好的方法是解开文件,
正如格哈德所建议的那样.
如果您记得updatejobstatus.py的任何行(或部分)代码
文件您可以尝试将 /dev /mem转移到硬盘,然后grep
通过它(请记住,您需要词根特权才能访问 /dev /mem).
我使用此代码尝试了:http://www.mail-archive.com/lidabive....../sg03696.html
对此行进行了少量修改:
nvram =(strtol(argv [1],0,0))<< 16;
变成:
NVRAM =(strtol(argv [1],0,0));
汇编后,我只是这样做了:
../a.out 0x0 0xfffffffffff memdump
获取内存转储.
我不是记忆专家,但是0xffffffff应该足够
对于<= 4GB的RAM.如果您有更多,请增加它.
并明确说明:我不建议这种分类方式
事情:)
- -
问候,
wojtek walczak,http://tosh.pl/gminick/

标签: python

添加新评论