Gallopsled/pwntools

`context.bits` will not automatically switch when setting `context.arch` twice.

Open

#2,498 创建于 2024年11月10日

在 GitHub 查看
 (3 评论) (0 反应) (0 负责人)Python (11,127 star) (1,684 fork)batch import
backport-requiredbuggood first issue

描述

I was using IPython to do some quick poc work that time, first I switched context.arch to 'amd64' and assembled cdqe and then I suddenly would like to try what if I assemble cdqe in 32-bit mode. So I switched context.arch back to 'i386' and wanted to assemble, only to find an error: AttributeError: Invalid arch/bits combination: i386/64

Pwntools may can not handle context.arch correctly, it could change context.bits accordingly when first setting it. However, when setting context.arch the second time, context.bits left unchanged. I guess this bug is related to self._tls?

poc:

屏幕截图_20241111_003054

one more poc:

from pwn import *
print(f"{context.arch}/{context.bits}")
context.arch = 'amd64'
print(f"{context.arch}/{context.bits}")
context.arch = 'i386'
print(f"{context.arch}/{context.bits}")

贡献者指南

`context.bits` will not automatically switch when setting `context.arch` twice. · Gallopsled/pwntools#2498 | Good First Issue