交叉编译以及其他架构逆向初探

# preface: 蓝帽杯初赛 2023,题目没做出来,理论上能出,实际上没时间,就算有时间估计也不会去看那么多汇编,但是既然结合 0CTF2021 也有一个类似折磨的 pwn 题(虽然那个题很多种意义上说其实好很多,即使我还是偏 re 手)不过感觉还是有很多东西要学以及刚学到,浅记录一下。
# 一点前置知识:IoT 安全研究视角的交叉编译 | Clang 裁缝店 (xuanxuanblingbling.github.io)
# 这两片可以结合着看看(后面那篇接近我的主要思路,but failed. QAQ)0CTF / TCTF 2021 tile | Clang 裁缝店 (xuanxuanblingbling.github.io) | ctf/2021.07.03_0CTF_TCTF_2021_Quals/tile at master · mephi42/ctf (github.com)
# 基本流程:搭建 qemu 环境尝试 gdb 调试(发现缺 so,尤其稀有架构的 so 挺麻烦的)
# objdump 切换架构硬看汇编,结合 ida 识别的段猜(比 obj -D 的信息稍微清楚一点,不过要记得)
# 猜测是 challenge1&0x7fchallenge2 异或, challenge3 借助 map 做了什么操作,怀疑是换序然后简单对字符处理…
# 还学了这么个小知识点: 原生的qemu不支持NX,故shellcode一把梭应该就行

# 本体搭建过程:

# - qemu 运行过程(虽然题目中是缺 so 的,但是确实是这么个流程)

# sudo apt install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev
# git clone https://git.qemu.org/git/qemu.git
# cd qemu
# git checkout v5.0.0
# ./configure --target-list=tilegx-linux-user
# make
# cd tilegx-linux-user/
# ./qemu-tilegx ./Desktop/newFolder/chall

# - objdump 配置过程:

# wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.gz
# tar xvf binutils-2.35.tar.gz
# cd binutils-2.35
# mkdir build && cd build
# ../configure --target=tilegx-linux-gnu
# make
# tilegx-linux-gnu-objdump -d ~/Desktop/newFolder/chall > output.asm
# 即可获得文件的汇编