文章预览
1 出题思路 本题最终解数为42,因为题目难度不大,总体符合预期。题目是用rust写的代码,同时赛前夜里临时决定删除符号不给源码,一方面导致选手逆向难度很大,另一方面也让大部分选手把精力集中在动调上,避免陷入源码的细节。在出题过程中其实也没有漏洞和明确利用手法的考点,题目是一边学习一边调试的时候出出来的,再次把出题思路分享给大家,算是抛砖引玉。 这里还是首先给出源码( rustc 1.82.0-nightly (cefe1dcef 2024-07-22) ): use std::fmt; use std::io::{ self , Read, Write}; const MAX_MSG_LEN: usize = 0x50 ; struct Msg { data: [u8; MAX_MSG_LEN], } impl Msg { #[inline(never)] fn new () -> Self { Msg { data: [ 0 ; MAX_MSG_LEN], } } } impl fmt ::Display for Msg { #[inline(never)] fn fmt ( & self , f: & mut fmt::Formatter) -> fmt::Result { write! (f,
………………………………