获取系统地址()

时间:2014-04-18 16:59:35

标签: python

我需要帮助计算系统地址。通常,通过GDB,您只需打开程序并输入" p system"然后它弹出。在没有gdb的情况下完成时,这有点棘手。

你必须启动程序,然后立即暂停它,然后查看/ proc / $ pid / maps并获取库的地址。然后在libc.so.6中找到system()的偏移量并将这两者加在一起。

./ test&杀死-19%1似乎可以解决问题。当手动完成时,这个东西很好用,但是当我用python做这个时,我遇到了一些问题。

os.system("./test & kill -19 %1")

然后返回

sh: 1: kill: No such process

为什么它不起作用?有没有更好的方法来计算system()地址?

我需要一个运行程序的python脚本' test'并暂停它,以便我可以阅读/ proc / $ pid / maps

1 个答案:

答案 0 :(得分:0)

我可以想象属于shell的作业控制工具的%1在非登录shell中不起作用。

但还有其他方法:

import subprocess
sp = subprocess.popen(["./test"])
sp.send_signal(19)
with open("/proc/%d/maps" % sp.pid, "rb") as f:
    print(f.read())

将启动子进程,然后立即向其发送信号。 之后,它获取其maps文件。