2020 XCTF 天津垓

总结:

① 没有仔细观察 IDA 反编译的结果,导致在爆破第一个字符串时浪费了很多时间

② 没有第一时间想到 Smc ,没有观察导入函数以及数据之间的联系,匆忙进入动调,导致在调试时陷入繁复的代码中,没有厘清思路。

程序有一个简单的反调试窗口名称查询,将 GetWindowTextA 的窗口句柄参数置 0 即可。

查字符串,找到程序流程,进入第一个函数 1004011F6()

注意下面的循环,v1 实际只有 13 个,但循环给出了 18 个,反编译错了,查看源代码并将 v1 的数组长度修改为 18。

爆破解出字符串。

输入字符串后,程序继续运行,出现了新的字符串,而该字符串在程序载入时并未能搜索到,因此可能为自解码运行,查看导入函数,确实发现了相应的函数。

X64 dbg 中定位到该函数地址,下断点。观察可得函数的解码起始地址,在解码完成后,下断点并 dump ,放入 IDA。

爆破出字符串。

 

posted @ 2021-02-25 15:39  Rev_omi  阅读(83)  评论(0编辑  收藏  举报