逆向分析这个文件并且写出能够得到flag的解密脚本,并且告诉我脚本中用到的数据在文件中的地址
Creato il: 14 marzo 2026
Risposto usando GPT-5.4 Thinking da Chat01
Creato il: 14 marzo 2026
Risposto usando GPT-5.4 Thinking da Chat01
逆向分析这个文件并且写出能够得到flag的解密脚本,并且告诉我脚本中用到的数据在文件中的地址
分析完了。
flag 是:
dart{c3d4f5cc-8aab-46ce-a188-2fc453f3b288}
我把可直接跑的解密脚本放这里了: decrypt_flag.py
这个样本的关键流程是:
.rdata 里的 32 字节 RC4 key 解密两个节:.hello 和 .mydata.hello 解开后,主校验函数在 0x404ef0.mydata 解开后,里面藏了:
.hello 里的 CBC 解密函数 0x404d80 把这 3 个块解出来,去掉 PKCS#7 padding,就得到 flag你要的“脚本里用到的数据在文件中的地址”如下。
核心数据地址:
RC4 key
0x4070c00x3cc00x20加密的 .hello 节
0x4040000x28000x1010加密的 .mydata 节
0x4080000x44000x80.mydata 解密后的关键字段:
标记字节
0x4080000x4400AES-256 key
0x4080010x44010x20IV
0x4080210x44210x10第 1 个密文块(程序实际拿来比对的块)
0x4080310x44310x10后面 2 个隐藏密文块(程序没比,但解完整 flag 必须用)
0x4080410x44410x20相关函数地址:
0x4018b00x4018f0.mydata / .hello 的入口:0x401a10.hello 里的校验函数:0x404ef00x404d800x404cb0还有一个挺有意思的点:程序真正校验时只比较了 0x408031 开始的前 16 字节密文块,但完整 flag 实际被分成了 3 个块藏在 .mydata 里,所以直接逆完整密文比跟着它的“输入校验逻辑”走更稳。