
2025腾讯游戏安全竞赛技术竞赛初赛题解

逆向分析
r3层分析
首先拿到赛题对r3的程序进行分析,发现在初始化函数这里有sub_140001000函数 正在进行异或操作


经过动态调试可得v0里面的变量为一张表

但我们对qword_7FF79B30AFD8这个地址进行交叉引用的时候我们发现在一个函数里面引用了它,并且这个函数好像是进行base58加密,因此我们知道这里应该是进行了base58换表加密,sub_7FF79B2D20D0


然后在初始化函数里面还存在另一个函数sub_7FF79B2D10D0,此函数里的sub_7FF79B2D1C90里面存在反调试函数


我们选择直接不走这个函数,在下图这里nop掉

然后我们就可以断在main函数

以下这个函数我们也要nop掉,因为我们只分析r3层的因此使用不到r0,之后就会检测我们输入的flag的前4位是否为ACE_

之后就是一个密钥的初始化

以下的两个函数分别为base58加密和异或,并且在在经过base58加密之后字符串的顺序还倒置了,异或的密钥为73787800(“sxx”)

因此r3的加密就是base58+reverse+xor
r0层分析
在很多函数里面都存在这样的花指令格式如下:
1 | push reg |

我们需要手动计算地址然后就能得到我们的真正逻辑,我们可以注意到我们的第一个函数sub_1400010A0,是一个典型的tea加密,但是解出来的是错的,然后我们对他进行交叉引用,发现多处引用了它,然后我们就猜测可能对这一处的函数进行了hook,果然待我们去除花指令之后就得到了真正的逻辑

但是我们可以在9B0A处下断点,然后直接定位到hook之后的地址处提取shellcode,这样我们就可以修复正确的tea加密
以下为去除花指令之后的效果:

然后就可以跟进去提取shellcode,然后修复回跳地址



解密代码
1 |
|
得出来的十六进制数据再用cyberchef进行求解

验证

- Title: 2025腾讯游戏安全竞赛技术竞赛初赛题解
- Author: 5m10v3
- Created at : 2025-03-31 00:00:00
- Updated at : 2025-04-02 08:03:29
- Link: https://redefine.ohevan.com/2025/03/31/2025腾讯游戏安全竞赛技术竞赛初赛题解/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments