.rainbow

一、rainbow

1>查壳拖入ida

查看伪代码

点击跟进hide-flag。

2>分析代码

点开 xor_encrypt发现是简单的异或,分析得出flag异或后得到encryped-flag。

打开output文件。

3>写脚本

发现是十六进制字符串,写代码把它转换成字节再进行异或即可得到flag。

二、小明的note

1>查壳拖入ida

upx -d脱壳,进入主函数查看伪代码。

2>分析伪代码

进入decryped_flag,发现是dest的异或,又是异或!并且v6又是十六进制字符,要转化为字节。

a1是dest,即长度便是dest的长度

往前看发现unk_2010值赋给了dest,查看unk_2010。

3>写脚本

三、checker

查壳32位ida分析,跟进check_flag,跟进encrypt flag,发现又是异或。

再查看encrypted_flag

写脚本