pe

点击此处获得更好的阅读体验


WriteUp来源

来自官方发布

https://www.xctf.org.cn/library/details/5acdc1c31cf4935ac38fce445978888a5710cf11/

题目描述

Can you run this ARM PE?

题目考点

  • 64位ARM PE程序的逆向分析与运行

  • playfair加密算法的逆向和还原

  • C++字符串、元组、输入输出流等结构的识别与还原

解题思路

题目给出了一个exe程序,但是无法直接运行,逆向发现是ARM64架构的程序,因此要运行需要使用QEMU模拟器运行ARM64架构的windows,或者静态逆向进行分析。

逆向程序逻辑,通过搜索flag{的交叉引用找到main函数,发现程序使用C++编写,输入的flag是命令行参数,然后通过一系列c++ string的操作将其加密,flag必须全是大写字母,如果加密后等于一个固定值则包上flag{}使用cout输出。

观察到加密的过程中会使用到一个5*5的大写字母码表,根据加密特征可以判断为playfair加密,可以从网上找一份脚本对照进行修改,还原程序逻辑。

解密playfair密文KIMLXDWRZXTHXTHQTXTXHZWC得到原文YESMAYBEYOUCANRUNANARMPE

Flag

1
flag{YESMAYBEYOUCANRUNANARMPE}