You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pwnlib遇kernel architecture指定错误,32位Intel程序该如何解决?

问题解决:kernel architecture must be specified 错误处理

错误根源

你错误地将context.arch设置为vax,这是与Intel 32位x86完全无关的架构。pwntools需要明确内核对应的架构,才能正确生成execve这类系统调用的ROP链——不同架构下系统调用号、参数传递逻辑差异极大,错误的架构设置会直接触发该异常。

解决方案

1. 正确指定架构与系统参数

Intel 32位x86对应的架构标识是i386,同时需指定操作系统为Linux(匹配execve的调用场景)。在代码开头手动配置这些context参数即可解决问题:

from pwn import *

# 显式设置架构、系统和字节序(Intel默认小端,可省略但显式设置更清晰)
context.arch = 'i386'
context.os = 'linux'
context.endian = 'little'

context.binary = binary = ELF("./vuln3-32")
rop = ROP(binary)
rop.execve('/bin/sh')

# 可输出ROP链用于后续利用
print(rop.dump())

2. 补充说明

  • 若context.binary未自动识别架构,通常是目标ELF文件的头信息不完整或pwntools识别异常,手动指定架构与系统参数是最可靠的修复方式。
  • execve在i386 Linux下的系统调用号为0xb,pwntools会根据你设置的架构自动处理这类细节,无需手动指定调用号。

内容的提问来源于stack exchange,提问作者candpythonprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:14