arm pwn 环境搭建 记录

Posted on 2020-10-27  57 Views


环境搭建

qemu环境

sudo apt-get install qemu

sudo apt-get install qemu-system qemu-user-static binfmt-support

依赖库

sudo apt-get install -y gcc-arm-linux-gnueabi

sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gdb-arm-none-eabi synaptic gcc-aarch64-linux-gnu eclipse-cdt git

记录

  • 不同架构binary运行命令
qemu-ARCH -g PORT -L 链接库位置 ./binary
  • ARCH就是架构,arm就arm,arm64就aarch64,mips就mips。
  • 然后后面-g 就是用来调试的port 。
  • -L参数后面是链接库位置类似用glibc的 ld-2.23.so。
  • 链接库用下面命令获取。需要什么下什么,装那个带cross的。
apt-cache search "libc6" | grep ARCH

调试

  • 调试用gdb-multiarch。
sudo apt-get install gdb-multiarch
  • 调试的时候 peda插件好像不支持arm的调试,得用peda-arm。
  • 建议用pwndbg+pwngdb。
  • 其他没什么了,就是开gdb-multiarch的时候要
set architecture ARCH
  • 必要的时候设置大小端
set endian 大小端#
  • 然后在target remote :port

arm基础知识

  • 采用r0-r3进行传参,剩下参数从右往左依次入栈。被调用者实现栈平衡。返回值放r0.
  • arm 的 b/bl 等指令实现跳转; pc 寄存器相当于 x86 的 eip,保存下一条指令的地址。
  • arm64就是 用x0-x7进行传参,剩下参数从右往左依次入栈。被调用者实现栈平衡。返回值放x0.