首页
社区
课程
招聘
[原创]第十二题 深入内核
2023-10-1 00:08 3423

[原创]第十二题 深入内核

xym 活跃值
4
2023-10-1 00:08
3423
1
2
3
4
一开始中规中矩的分析,发现很不顺利,main函数是很多奇怪的重复指令组成,不知道是解释执行器还是纯干扰,程序中还带了base64之类的编码算法。中间还带了一个加密的文件叫KCTF_ENC_FILE,貌似是整个程序的执行流程控制脚本的加密文件。
用户输入的用户名和序列号使用硬件断点后发现被sub_41EC4A和sub_41EDAB两个函数反复加密和解密,导致浪费了大量时间。用户名在若干次加密的时候会带上KCTF2023的后缀再次加密,貌似加密解密只是字符串传递的手段。但是后面发现一血和二血都出来的时候,就发现自己研究的方向不对了。
重新确定分析方法,这次把分析的重点放在'Success, GoodJob!''error'字符串的输出上,却发现一直断不下来,因为前面的判断条件一直恒不成立。但是这次分析的过程中却发现程序额外调用了memcmp这个函数,比较的内容居然就是输入的序列号。
于是重新修改输入用户名为KCTF,在memcmp的父函数sub_469F92的调用处设置断点,由于程序没有任何反调试,因此程序很快就被断住并显示以下内容。
1
2
3
0045257E | 8BD6                     | mov edx,esi                                        | esi:&"47a62c6eb8a72031a27b89abc3d976f7"
00452580 | 8BC8                     | mov ecx,eax                                        | eax:&"35090e1336f1d1e872ba798256db1bfb"
00452582 | E8 0B7A0100              | call crakeme_kctf2023.469F92                       | 关键比较
1
稍微有点经验的一看就知道这个比较代表了什么。第一次在KCTF上看到这种比较,实在是浪费了我之前分析的几个小时。这个程序里面应该还有很多很精彩的设计,因为这个结果的出现也没有分析的动力了。因为中秋的原因,就不在继续研究了,坐等作者的设计思路,并祝所有选手和出题人双节快乐。

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

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 19299
活跃值: (28938)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-10-1 21:16
2
1
感谢分享
游客
登录 | 注册 方可回帖
返回