2022年春秋杯冬季赛-reindeer game(WP)

工具准备:

   1、 pyinstxtractor.py

   2、uncompyle6

题目是一个驯鹿🦌吃姜饼的游戏:题目要求吃30个,不太擅长游戏的小伙伴可能很久都不能过关。

这一题很明显是用python写的游戏,并且用了pyinstaller 进行了打包:

a2942301e4224516ab3d5b3ed8bf350a.png

接下来的思路就来了,拿到源py代码,不就随意发挥了,有打包工具就有拆包工(pyinstxtractor.py),注意这里的拆包工具,历史版本太多。

版本网址一:https://github.com/extremecoders-re/pyinstxtractor

版本网址二:Download PyInstaller Extractor from SourceForge.net

版本三:网上查询,接下来的是别的博主改写的,可以直接用(也都算是用下来比较好的);

pyinstxtractor.py 的改进 - 反编译pyinstaller生成exe的工具_qfcy_的博客-CSDN博客_pyinstxtractor

拿到拆包工具后:

python3 pyinstxtractor.py reindeer.exe

之后会生成一个对应的包:

bd58ef0b503c49349f0b0faa9583b41d.pngdcc62c62b7c044f98898e4eefe8223aa.png

 

进入包中主要寻找二个部分,第一个就是reindeer的文件,实际上这是一个pyc文件,只是又由于拆包时造成的,直接加上.pyc后缀即可;

接下来就是对reindeer.pyc的反编译,需要用到工具:uncompyle6

uncompyle6 -o reindeer.py reindeer.pyc

执行后生成py源代码,这时就可以看到整个游戏的逻辑;

部分展示图:

f4bacf7bd83e430087188c42e4f90292.png

大概分析完逻辑后,这里看到有一个重要的模块astar模块,这里是作者自己写的,所以在打包的时候应该已经打包在一起了;可以去拆的包查找:

这就是第二部分: 将astar.pyc文件同样反编译为py文件

 730074b1d4204ecd9f032efe81532ad7.png85de861ed6324213815f3d47a66ddd44.png

 afa5d2d01fb84ed09f8ac4269e355ba8.png

如果缺少pygame模块的可以自行安装一下,之后就可以正常运行reindeer.py文件。

到这里我们已经拿到游戏的大部分源码了,可以直接通过修改吃姜饼的数量完成游戏,一定要注意修改的数值大小(不可为0,否则就失去了游戏的意义);修改的关键值:TO_WIN

这个方法适合追寻解题速度同时又不想失去游戏的乐趣的师傅;

根本就不想玩游戏的师傅,在分析游戏逻辑时,就发现拿到flag的关键;逻辑胜利,直接来到

def victory(time)

cfe278c041824f809a9a0c209a0eff9f.png

 这里,发现flag藏在了getczekolada()中,直接进入astar.py

def getczekolada():
    data = b'\x1f\x8b\x08\x00\xd6\x03\xa0c\x02\xffK\xcbIL\xaf\xb60J4JLN2\xd3\xb5\xb400\xd65\xb14\x06\xb2\x8cR\x92t\xd3\x0cM\x8c\rS,\r\x92\xcdR\x0ck\x01\xc7Y,\xef*\x00\x00\x00'
    return gzip.decompress(data).decode('utf8')

 这里就是一个gzip的压缩,直接一个解压缩,就可得到flag值。

import gzip
data = b'\x1f\x8b\x08\x00\xd6\x03\xa0c\x02\xffK\xcbIL\xaf\xb60J4JLN2\xd3\xb5\xb400\xd65\xb14\x06\xb2\x8cR\x92t\xd3\x0cM\x8c\rS,\r\x92\xcdR\x0ck\x01\xc7Y,\xef*\x00\x00\x00'
print(gzip.decompress(data))
#b'flag{82a2acb6-9803-4936-92db-f1431d90c6d1}'

 下面这幅图是:修改姜饼个数为1(4s通关🦌);

fb9e341ea23743fe87743624c483aaaa.png

总结:

        1、小白文章,如果发现错误还请各位师傅指出。

        2、中间踩的空较多,算是趟水的人,各位请放心食用。

补充:

        作者师傅说了有彩蛋,彩蛋开启之术,同时按下0,1,2数字键(不要使用小键盘哦):

ac0b4d93bb4f4e1a97dadafb7fdfa466.png

 fe36badd339d40fab0e5f9bdb7accb91.png

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值