首先下载文件点击出现下面界面
![](https://img-blog.csdnimg.cn/img_convert/44b3f7ad44d23c1f156f96a7ea4d11a2.png)
发现对解题没什么用,然后拖进exe
![](https://img-blog.csdnimg.cn/img_convert/ff15c692bc0afada0057c4c0b301f95c.png)
由图可知32bit,接下来拖进ida中分析
![](https://img-blog.csdnimg.cn/img_convert/e0a1458a3deae81155ffa1d1f80ddbba.png)
按f5反编译得
![](https://img-blog.csdnimg.cn/img_convert/5acd62af9ed63427fa3b1a0d27acad13.png)
然后shift+f12,划到最底下发现有这样一行代码BJD{%d%d2069a45792d233ac}
![](https://img-blog.csdnimg.cn/img_convert/5a1c7c9203ec8157afe691ce27584af2.png)
发现其很像一个flag,又和题目中的BJD接应,但发现有两个%d%d,我们不难想到应该是填入数字,与开头点击数也呼应。没有头绪,不妨先回到一开始f5地时候,一行一行反编译试试,发现到DialogFunc时出现以下界面。
![](https://img-blog.csdnimg.cn/img_convert/474e224efc5e49ee4944d7be760a9661.png)
发现sprintf(String, " BJD{%d%d2069a45792d233ac}", 19999, 0);
不难知道,19999和0就是应该填进去的数。
即 BJD{1999902069a45792d233ac};
即答案为flag{1999902069a45792d233ac};