【Rreversing.kr】 MusicPlayer
本帖最后由 whklhh 于 2017-9-24 01:47 编辑Reversing.kr是韩国的一个逆向题目网站
有分国度的排行榜,还是挺有意思的
本题即来自于第四关MusicPlayer
http://reversing.kr/challenge.php可以下载到文件
下载的压缩包解开有三个文件
ReadMe.txt显示,现有程序只能播放1分钟,我们需要绕过这个显示从而得到flag,程序有多次检测。
从图标和提供的msvbvm60.dll可以知道是VB写的
OD加载发现从ntdll以后F9就直接飞了
用IDA加载也空空如也,只有三个子函数call dll,应该是反调机制?
遂打开VB Decompiler,这次清晰地得到了结构和事件
我本来以为程序是OPEN文件以后,点击PLAY时间轴出现0:00/1:00
是直接截取前一分钟的内容加载播放
在PLAY的代码里找了半天,也只发现一个HS_POS.MAX=CINT(600)
前后搜索了一下都没找到相关内容,按地址去OD中下断可以断下来
但是没有找到600
无奈,去翻了下大佬的WriteUp,发现实际上是播放到1:00时弹窗,然后停止
VB弹窗调用的API是rtcMsgBox
在模块中查找未果
估计是因为根目录下提供了msvbvm60.dll,把它改了个名字,Ctrl+G就可以看到加载的dll换成c盘的系统msvbvm60.dll了,这个时候再查看所有调用可以找到rtcMsgBox,不过调用树中仍然是空的
在函数内部下断,运行,断住,ALT+F9返回程序领空才终于找到调用:
http://img.blog.csdn.net/20170924003618893?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
向上翻几句,发现时间对比和关键跳转:
```
0040455D 8B85 5CFFFFFF mov eax,dword ptr ss:
00404563 3D 60EA0000 cmp eax,0xEA60 ; 时间比较
00404568 8945 E8 mov dword ptr ss:,eax
0040456B 0F8C 8D000000 jl Music_Pl.004045FE ; 关键跳
```
将关键跳改为jmp,运行发现报错:
`运行时错误:380`
参照WriteUp,断Kernel32.RaiseException(同样调用树无结果,在函数内部下断)
似乎是OD的分析问题,断点位置的代码分析不整齐,导致再运行的时候理应被断住的地方报错了
不过没关系,虽然提示不太一样,在OD中F12暂停下来仍然可以找到调用
理论上来说ALT+K应该就能找到调用,不知道为什么仍然是空的
但是堆栈中还是可以看到,向上翻直到出现用户模块Music_Pl的调用:
http://img.blog.csdn.net/20170924011253369?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
找到调用后向上看一眼就能发现关键跳转,重新运行jmp掉即可:
http://img.blog.csdn.net/20170924011436136?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
最后password出现在标题中,完成。
最后复盘的时候想起,这个事件应该来自于计时器
每秒检查一次时间是否超过60000ms
正好在VB Decompiler中有TMR_POS_Timer事件,检查发现:
http://img.blog.csdn.net/20170924013203197?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
确实反编译出来了,未通过则调用STOP事件
不过之后的弹窗理论上来说应该在goto loc_00404795之前
但是这里的反编译却毫无显示
http://img.blog.csdn.net/20170924013704206?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hrbGhoaGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
学长说应该是反调或者花指令……之后得研究一下OD的去花插件了_(:з」∠)_
本帖最后由 whklhh 于 2017-10-15 01:12 编辑
gunxsword 发表于 2017-10-13 19:20
这个破CM,在XP下运行当一下就没了,WIN7下到是能运行了,播MP3就报MCI初始化错误,不想折腾,允许我做个弊,求个 ...
想了一下还是不要公布flag吧_(:з」∠)_不自己做就没意义了嘛,少一个分数又不影响其他关卡…… Sound 发表于 2017-9-24 17:30
1年多之前我就做了这一些,当时截了个图留了下来。后面就给他做完了。 练手很不错。
嗯嗯0-0之前都在做CTF的逆向,感觉这个网站的类型区别挺大的,能学到很多东西 膜拜大神 完全看不懂。。。 VB6 生成的代码实在是太难懂... 已经放弃了... 强无敌aaa 棒子的什么东东。
.kr是缓存文件吗? 支持一下了 多谢分享 zz0147 发表于 2017-9-24 11:49
棒子的什么东东。
.kr是缓存文件吗?
棒子的一个逆向题目网站,.kr是域名结尾撒
1年多之前我就做了这一些,当时截了个图留了下来。后面就给他做完了。 练手很不错。 Sound 发表于 2017-9-24 17:30
1年多之前我就做了这一些,当时截了个图留了下来。后面就给他做完了。 练手很不错。
CRC1怎么做?
页:
[1]
2