Python打印环境变量内存地址

alb*_*ttx 10 ruby python memory environment-variables

是否可以打印我的环境变量内存地址?

随着gdb-peda我有一个内存地址看起来像0xbffffcd6searchmem,我知道这是正确的方式.(0xbfff????)但是gdb使用其他一些环境变量移动了堆栈.

我想用我的python脚本来获取这个地址然后做我的技巧并包含我的shellcode.

我试过(使用Python):

print hex(id(os.environ["ENVVAR"]))
print memoryview(os.environ["ENVVAR"])

# output :
# 0xb7b205c0L
# <memory at 0xb7b4dd9c>
Run Code Online (Sandbox Code Playgroud)

使用Ruby:

puts (ENV['PATH'].object_id << 1).to_s(16)
# output :
# -4836c38c
Run Code Online (Sandbox Code Playgroud)

如果有人有想法,使用python或ruby.

dav*_*rey 4

cpython 内置函数 id() 为任何对象返回一个唯一的 id,这并不完全是它的内存地址,但尽可能接近它。

例如,我们有变量 x。id(x) 不返回变量 x 的内存地址,而是返回 x 指向的对象的内存地址。

“变量”和“内存对象”之间有严格的区别。在标准实现中,python 分配一组本地变量和一个堆栈供虚拟机操作。所有本地槽都是不相交的,因此如果您将本地槽 x 中的对象加载到堆栈上并修改该对象,则 x 槽的“位置”不会改变。

在此输入图像描述 http://docs.python.org/library/functions.html#id