srand()用于设置供rand()使用的随机数种子
rand()生成随机数,但不是生成真正的随机数
在srand()规定好种子后,调用rand()会生成相同的随机数序列
IDA打开后大量的c++函数,但都是一些赋值和创建空间,核心函数encrypt()
以时间戳为随机数种子,异或图片的每个hex值。所以思路是以加密后的文件为参数,动调修改时间戳就可以在生成一张图片。
IDA带参数动调(这里将原文件main名字改为maintest,原flag.png.enc的名字改为flag.png,main改maintest是以防main这个名字太特殊,flag.png.enc改flag.png是假装这是一张图片,233)
在encrypt()下断
修改time函数的返回值为图片生成的时间戳
查看图片生成时间
http://tool.chinaz.com/tools/unixtime.aspx
生成时间戳
1608297241(0x5FDCAB19)
双击rax修改为0x000000005FDCAB19
直接运行生成一张二维码
flag{sRand_ANd_LCg_is_No_Safty_}
附件:
https://wwx.lanzoux.com/if2Wxk8itgb
密码:njih