[HUBUCTF 2022 新生赛] simple_RE 题解
题目信息
题目名称: [HUBUCTF 2022 新生赛] simple_RE
类型: Reverse Engineering
难度: 简单
解题过程
第一步:文件分析
拖入 die 进行查壳分析,发现程序是 64 位、小端序、无壳的可执行文件。
第二步:逆向分析
用 IDA 打开,F5 查看伪代码。主函数如下:
1 | int __fastcall main(int argc, const char **argv, const char **envp) |
程序逻辑很简单:输入 flag,调用处理函数,然后比较结果。
第三步:深入分析编码函数
双击进入 sub_401570 函数内部(已有部分注释):
1 | __int64 __fastcall sub_401570(const char *a1, void **p_Buf1, int *p_Size) |
第四步:识别编码模式
通过分析可以看出,这是一个使用自定义字符集的 Base64 编码实现。虽然可以使用在线解码工具快速得到结果,但为了更好地理解编码过程,我们来手动编写解码脚本。
首先,在 main 函数中找到硬编码的密文:5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8==
然后在 sub_401570 函数中找到 Base64 字符映射表:qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD
理解编码逻辑后,手动实现对应的解码脚本:
1 | enc=('5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8==') |
第五步:解码验证
运行脚本,成功得到 flag:NSSCTF{a8d4347722800e72e34e1aba3fe914ae}
解题总结
这是一道经典的逆向工程题目,主要考察以下能力点:
静态分析能力:熟练使用 IDA Pro 进行反汇编和伪代码分析
自定义编码识别:准确识别出 Base64 的变体实现
编码逆向工程:深入理解编码逻辑并实现解码算法
通过仔细分析程序的编码表和处理逻辑,手动构建了对应的解码器,最终成功破解了 flag。
本文记录了个人解题思路和学习过程,旨在交流技术心得。如有错误欢迎指正!

