【2022春节】解题领红包之三 Windows 中级题
本帖最后由 天心阁下 于 2022-2-16 07:59 编辑第一次完成Windows 中级题的逆向,用了数天,IDA的伪代码着实看得头大。
本文适合于小白,文章思路及观点仅供参考。多图预警!!!
首先查壳,拖入查壳工具
很显然UPX,压缩壳尝试upx -d 命令脱壳,失败
手动脱壳,ESP定律载入OD,可以很明显可看到一个PUSHAD
F8单步,ESP变红,直接使用插件下硬件断点
F9运行
删除前面下的硬件断点,F8单步跳过一个循环或选中sub esp,-0x80 按F4运行到选中位置,再一直单步到OEP
用OllyDump脱壳
能直接打开,脱壳完成
IDA打开,F5查看伪代码
静态分析,由于伪代码看得极其头疼,只能大致找找,算法分析甚至还原就放弃了。
找到关键判断语句
进入sub_401520函数
一些字符串处理,找到关键判断语句
进入sub_403ED0函数
很明显是明文比较回到IDA View-A,通过Synchronize with找到memcmp指令位置
很明显的repe cmpsb指令,地址 0x403EFAOD载入,翻到0x403EFA,或者Ctrl+F查找repe cmpsb
在该指令处F2下断,F9执行
很明显的flag{Happy_New_Year_52Pojie_2022}把flag{Happy_New_Year_52Pojie_2022}作为Key再试
处理过后的字符串,符号位、数字位不变把aaaa{aaaaa_aaa_aaaa_52aaaaa_2022}作为Key再试
多次尝试,可以看出是字符偏移变换,并且偏移量与大小写和位置无关,根据偏移量还原字符串(UID不同,偏移量不相同)
结果正确
更改UID后,Key发生变化,很显然是根据UID计算一个偏移量,对Key的字母位进行偏移变换后明文对比。
页:
[1]