首页
社区
课程
招聘
[原创]wp: 第二题:巳时·绿光幽语
发表于: 3天前 2

[原创]wp: 第二题:巳时·绿光幽语

3天前
2

key:yb6tcr

q2.exe 是 PyInstaller 打包程序。解包后得到:

其中 main.pyc 是 Python 3.13 字节码,magic 为 f3 0d 0d 0a

xdis 反汇编后可以看到它只是一个壳:

等价于:

所以真正的逻辑不在 main.pyc,而在被修改过的 python313.dll 中。

python313.dll 里可以直接搜到:

其附近还有如下可疑数据:

进一步观察附近字节,可以发现这是 Python marshal 序列化数据。该数据属于 DLL 中冻结的 os 模块。

本样本中 frozen os 模块的 marshal blob 位于文件偏移:

使用与样本一致的 Python 3.13 解析:

解析结果中可以看到一个被插入的 my_function

即初始占位函数是:

my_functionroot.co_consts 中的下标是 143。后面的常量依次是:

把第 145 项中的 8 段 bytes 拼接后,每个字节异或 0x55,得到:

对 frozen os 模块顶层代码反汇编,插入逻辑的核心等价于:

也就是说,程序并不是直接比较 key,而是:

提示中已经给出了目标输出:

其 UTF-8 编码为:

加密后的成功字符串为:

由于 key 长度为 6,并且循环异或,所以直接计算前 6 个字节:

得到:

十六进制为:

验证后两段密文均使用该 key 循环异或:

解密出的 co_code 与占位函数字节码相同,语义为:

真正的变化是 co_consts 从:

被替换为:

因此调用 my_function() 后输出目标字符串。


传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

收藏
免费 0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回