前置工作
这道题是浙江省赛决赛的逆向签到题目,因为对 Reverse 不熟悉,所以我没做出来,是一天后向学长请教才知道怎么搞的
先用 ExeInfoPE 查壳,发现是 UPX
然后就是 upx -d ida_pro.exe
,结果发现行不通
Ultimate Packer for eXecutables |
这种就是 UPX 特征被篡改过了,用 010 Editor 打开看一下
修复 UPX 特征
问题出在这里
有人把 UPXX 改成了 OPXX,所以改回来就行了
然后再 upx -d ida_pro.exe
,就能脱壳了,用 IDA 打开脱壳后的程序
按照提示,我们需要从 Strings,Functions 和 Xref 中找 Flag 的缺失部分
从 String 中找 Flag
Shift+F12,一眼就看到了第一段 DASCTF{Wow
从 Functions 中找 Flag
翻最左边的 Functions 栏目,一下就看到了
int _Comp1et3ly_Uns7and_(void) |
第二段就是 _Comp1et3ly_Uns7and_
从 Xref 中找 Flag
这里说 Find out which function refer to me!
,结果发现就是下面这个 sub709()
函数
进入 sub709()
函数
int sub709(void) |
把这些十进制转换成字符即可,得出第三段 Flag 是 h0w_t0_us3
最后就能得出总 Flag 为 DASCTF{Wow_Comp1et3ly_Uns7and_h0w_t0_us3_988b8cc45bcb}