我需要帮助计算系统地址。通常,通过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
答案 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
文件。