2020网鼎杯 逆向青龙组 Signal

主要是一个 Switch-Case 的循环。首先会执行 Case 10,读取输入,并检测输入字符数。

v9 作为 Index ,每次从 a1 中取值,执行相应的 Case ,因此操作的顺序是固定的。将代码修改使之不退出,查看全部执行顺序(Case x)。

只有执行 Case 7 ,且不满足条件时才会退出。由执行顺序可知,程序前期完成值的计算,最后对15个值进行比较。因为程序只涉及简单的加减法和赋值,写出逆算法就比较简单。

最开始的思路是,直接将全部数据都逆向操作,但由于执行时,上一步对 V9 的操作对下一步来说是未知的,因此执行顺序不能直接逆向还原,而原程序执行顺序固定,因此去掉对 v9 的还原即可。

注意涉及计算的所有的字符型的数据应全部为 unsigned char 类型,否则会出现负值导致字符显示异常。

posted @ 2021-02-24 13:58  Rev_omi  阅读(354)  评论(0编辑  收藏  举报