首页
社区
课程
招聘
[原创] 看雪CTF.TSRC 2018 团队赛 第六题
发表于: 2018-12-11 21:36 3296

[原创] 看雪CTF.TSRC 2018 团队赛 第六题

2018-12-11 21:36
3296

该程序是一个带窗口的程序,首先根据GetDlgItemTextA函数的交叉引用,来到sub_401040函数处,调用 GetDlgItemTextA函数 最多获取20个字符。



查看sub_401020函数没有任何关于输入的处理,查看区块发现有一个tls段,并且有一个tls回调函数,tls回调函数先于程序的入口点执行。


ida可以识别出tls回调函数,跟进该函数分析发现执行sub_401D50和sub_401C10两个函数后,启动了一个线程


跟进函数sub_401D50分析发现,这个函数获取了 sub_401020到 sub_401080的跳转距离。再看v5=0xE9,该值是一个jmp指令,最后保存到addr_414018,可以猜测这个程序可能使用了hook技术改变了执行流程。不过查看该全局变量的引用,addr_414018并没有被使用。


继续分析sub_401C10函数,结合动态分析发现该函数hook了 GetDlgItemTextA 函数。hook点在 GetDlgItemTextA函数地址加上32,跳转到目标函数sub_401A10


然后分析那个线程函数StartAddress,发现是一个死循环。根据dword_4147FC的值来决定是否执行sub_401C10这个hook函数。


接下来重点分析 sub_401A10这个目标函数。这个函数进行了sn的验证,在通过sub_401290和sub_4017B0这个两个函数的判断后,通过异或运算解密出输入正确的提示信息,OK和success两个字符串,并替换掉错误提示信息的字符串。



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//