题目在比赛的时候没做出来,赛后复盘发现硬件断点下错了,梳理逻辑后发现很简单。
第一层考点:下准断点
这是一个rust编译的程序,因此可读性较差,先找到输出对输出函数下断点
_$LT$std..io..stdio..Stdin$u20$as$u20$std..io..Read$GT$::read::h174af29f99bd8aef
每次执行这个函数都是从缓冲区读入一个字节,当所有字节都读完之后再一个一个字节验证,很容易联想到pintools爆破求解
但稍微耐心点调试发现加密过程很简单
密文是程序执行过程中生成的也需要dump
解密脚本如下
1 | result = [144, 332, 28, 240, 132, 60, 24, 64, 64, 240, 208, 88, 44, 8, 52, 240, 276, 240, 128, 44, 40, 52, 8, 240, 144, 68, 48, 80, 92, 44, 264, 240] |