-
-
[原创]看雪CTF.TSRC 2018 团队赛_第6题WP
-
发表于:
2018-12-12 13:55
6323
-
[原创]看雪CTF.TSRC 2018 团队赛_第6题WP
程序拿到手之后,在Win10以及Win7_x86都没有跑起来,后来在Win7_x64中可以正常运行
关键函数的定位好像很简单,看导入表发现GetDlgItemTextA和MessageBoxA这样的敏感函数,下断后就来了
程序的流程看起来简单清晰,小菜就喜欢这种简单粗暴的
仔细一看,好像有“猫腻”,没找到注册成功的提示
看起来只有那个sub_401020()函数有可疑成分,跟进去一看,是个“空壳”。其实WinMain也是一个“空壳”
猜测是哪里进行了代码修改之类的,对那两个全局错误提示的字符串参考引用,发现都是落在了sub_401040()这个函数内部。这就很头大了。。。
突然间在IDA中Ctrl+E,看到了TLS回调,故事开始了…
TLS回调中使用SMC技术,对代码进行修改
其实关键是修改user32.GetDlgItemTextA,看看它修改前后的汇编代码变化效果
修改前的GetDlgItemTextA:
修改后的GetDlgItemTextA:
很显然“猫腻”就出现在这个jmp指令上
这也就是,之前F8步过GetDlgItemTextA函数时,所有的萎缩操作都完成了,给我们看到的只有“try again!”
接着跟进,看到初始化一个状态数组
接着跟进sub_401380()函数,这时F5就看起来有些吃力了
还是手撸吧,老是F5容易营养不良
其实逻辑很简单了,说来真惭愧,撸成下面这样才突然想起来是“八数码问题”,记性真是差的够呛
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2018-12-12 14:12
被DCO编辑
,原因: