强网杯2022GameMaster复现

本文详细描述了解析GameMaster程序中的文件结构,包括识别32位PE文件、.NET代码和AES加密过程。作者通过解密gamemessage文件并使用z3工具求解密钥,揭示了部分加密算法和关键变量的操作。

GameMaster

题目下载到手三个文件

image-20231225151444369

优先查看exe,是个游戏。

image-20231225151552516

32位PE文件以及.net编写的,用dnSpy打开。

image-20231225151832460

读取了gamemessage文件存放到Program.memory里。

接下来都是一些键盘控件的处理,按Enter会进入俩个分支,有一个地方不同的是Escape处:

image-20231225153405102

这里点击一下,跟到函数的地方。

image-20231225153424900

会紧跟着调用一个goldFunc的函数,再跟过去,

image-20231225153506696

从这里一直看下去,直到再次看到Program.memory

image-20231225152123599

这里很明显做了一个异或34的处理,之后赋给AchivePoint1

image-20231225152335485

中间的加减大概就是分数,一直到这里flag39,可能会调用函数genCode。这个函数在dll中,先不管。

image-20231225152528895

这里又是对Program.memory进行了一个加密,用了ECB加密模式,填充方式是PaddingMode.Zeors,这是一个典型的AES加密。这里也是给到了AchivePoint2。

image-20231225153002639

这里就是AchivePoint3了,进行了一个反序列化的操作,但是没有对文件进行处理。不明所以。

大概这个exe就看完了,下面也不太清楚都做了什么,可以明白的是gamemessage是可以解密的。

解密脚本:

from Crypto.Cipher import AES

with open("gamemessage","rb") as f:
    data = f.read()
dataArr = [t for t in data]

for i in range(len(dataArr)):
    dataArr[i] ^= 34
data = bytes(dataArr)

key = [66,114,97,105,110,115,116,111,114,109,105,110,103,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sciurdae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值