一些在异构PWN中比较具有共性的操作和问题会在此处记录

基本工具安装

qemu安装

安装qemu qemu-user qemu-user-static

$sudo apt-get install qemu qemu-user qemu-user-static

安装qemu-system
$ sudo apt-get install qemu-system uml-utilities bridge-utils

  • qemu-usr :指定动态链接库运行
    • 安装动态链接库
      $ sudo apt search "libc6" | grep arm
      $ sudo apt install libc6-armel-cross #对应arm32
      $ sudo apt install libc6-dbg-arm64-cross #对应arm64

如果需要安装其他版本的动态链接库,
可以在 http://ports.ubuntu.com/pool/main/g/glibc/ 中选择相应架构和版本下载

  • qemu-user-static :包含了所有必需的库和二进制文件,运行静态链接的程序
  • qemu-system : 模拟整个计算机系统的跨平台运行

    调试工具安装

    sudo apt install gdb-multiarch
    动态链接库冲突:set sysroot lib路径

一些问题与解决方案

ROPgadget报错

在查找异构二进制文件的gadget时,不管是arm还是risc-vROPgadget会报类似如下错误:
Pasted image 20251015223525

报错1:

NameError: name 'CS_ARCH_ARM64' is not defined. Did you mean: 'CS_ARCH_ARM'?

报错2:

NameError: name 'CS_ARCH_RISCV' is not defined. Did you mean: 'CS_ARCH_MIPS'?

经过尝试,是因为 ROPgadgetCapstone 版本兼容性问题导致的:

  • 最新的Capstone 6.x 同时产生报错1和报错2
  • apt install python3-capstone 下载的Capstone 4.x 不产生报错1,产生报错2

最终发现 ROPgadget v7.7Capstone 5.0.6是笔者发现较新且兼容性较好的版本
建议完全卸载当前的 ROPgadgetCapstone ,采用官方安装方式

$ pip uninstall capstone ROPgadget -y
$ sudo apt install python3-pip
$ sudo -H python3 -m pip install ROPgadget
$ ROPgadget --help