2023 数字网络安全人才挑战赛 game

分析:

首先查壳

image-20230324205429216

32位无壳,然后放入IDA中分析

image-20230324205933325

可以看到这个exe进行了许多的随机数的处理,本来想着这道题会不会是跟随机数有关,但是看到前面srand用的种子是随机的,也就是说,每次打开程序都会是得到新的不一样的东西。那么本题跟这些与随机数相关的东西无关,这些部分是游戏所需要的参数

image-20230324210313812

image-20230324210419576

然后接着往下看,通过动调明白了一些函数到底是在干什么,能知道 “Sleep(0x64u);” 以前的都是游戏的部分。

看到 “sub_403810(v30, “flag.png”, 0, 0, 0);” 猜测这道题的flag可能是需要动调出图片得到的,那么也就是说首先得需要if语句能够成立才可以运行到下面

首先想到的是可不可以通过前面的累加进行成立

image-20230324211332293

但是动调发现,这根本到不了这个语句,所以行不通,那么只能改值了。我们知道这种未初始化的部分无法在静态编译中更改值,那么只能边动调边改了

image-20230324211518498

这里将值修改成0x280(640)

image-20230324211747178

然后一直f8来跑,接着会弹出一个Done

image-20230324211846536

然后去文件夹中看看是否生成png图

image-20230324211936866