StupidOrangeCat2
0x0 前言
在此先对各位师傅说一声抱歉,十分的对不起。因为个人电脑的原因,导致我的题目源码解题脚本思路全部被删(电脑大部分工具环境记录全无,准备换新电脑再重装..)。因此以下的解题思路会没有脚本,但是不用担心因为用到的解密算法都是无魔改的csdn上抄一份解密即可。在此再次说一声抱歉。
0x1 解题思路
我是在10月初出好的题,到现在已经过去2个月,然后没有源码,只能自己回忆一下,十分抱歉。
先找到主要迷宫函数,这里ida可以设置查看到中文字符
设置成CP936
再去字符串位置按A即可,通过字符串就可以看出这里是虚假的地图
这里的魔改base64解出来是没有用的
相信大家最好奇的就是动调和正常运行地图是不一样的,这里是关键,在这里取了运行的路径的最后一位然后存储了起来
再通过判断这位存起来的字符是否为32 即空格 再进行一个虚表hook,这里就是为什么两个图不一样,如果调试了就不运行真地图,为什么要判断为32为没调试,师傅们可以自行断住判断。
这里进行了一个反附加,先给附加位一个值,如果附加了就变为1
然后知道了上面的判断就可以找到smc的位置,解密即可
s=0x402780
for i in range(1989):
ida_bytes.patch_byte(s+i,idc.get_wide_byte(s+i)^32)
解密即可看见真正的地图和正确的剧情。彩蛋的话很多师傅都做出来了就是喵呜是用摩斯解密,正常解密就是sm4结果是一样的。(注:sm4解密脚本最开始已说,无魔改cybercher或找一个脚本解密即可)
密钥就是wuwuwuyoucatme
最终就是一个RC5,也是无魔改,csdn找一个rc5解密即可。
0x3 出题思路
因为是公益赛,又希望能出的新颖一点的题目,所以就出了这么一道带剧情的题目,这题原本是两个图剧情可以一样,但是flag不一样fakeflag,这样会增加迷惑性让做题者动调时也意识不到自己做的一直是错到最终得到fakeflag,原本fake图第二个位置也是加了一个aes的魔改解密,后面也删掉了,反调试的思路在笨橘猫1中就已经使用,继续使用了下来,反附加也是一样。解密也是都使用的无魔改的sm4和RC5。(加强版可能就是smc的位置加混淆,两个图为一致但算法不同,虚假图弄一些不可能解密出来的加密..留待笨橘猫3)
如果还有笨橘猫3的话,我希望自己还能学到一些小思路小技巧放入题目中,下次可能就让师傅们更难找到真实逻辑咯(滑稽)