170923 逆向-Reversing.kr(MusicPlayer)
来源:互联网 发布:中金 薪水 知乎 编辑:程序博客网 时间:2024/06/03 14:57
1625-5 王子昂 总结《2017年9月23日》 【连续第356天总结】
A. Reversing.kr-Music Player
B.
ReadMe显示,现有程序只能播放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返回程序领空才终于找到调用:
向上翻几句,发现时间对比和关键跳转:
0040455D 8B85 5CFFFFFF mov eax,dword ptr ss:[ebp-0xA4]00404563 3D 60EA0000 cmp eax,0xEA60 ; 时间比较00404568 8945 E8 mov dword ptr ss:[ebp-0x18],eax0040456B 0F8C 8D000000 jl Music_Pl.004045FE ; 关键跳
将关键跳改为jmp,运行发现报错: 运行时错误:380
参照WriteUp,断Kernel32.RaiseException(同样调用树无结果,在函数内部下断)
似乎是OD的分析问题,断点位置的代码分析不整齐,导致再运行的时候理应被断住的地方报错了
不过没关系,虽然提示不太一样,在OD中F12暂停下来仍然可以找到调用
理论上来说ALT+K应该就能找到调用,不知道为什么仍然是空的
但是堆栈中还是可以看到,向上翻直到出现用户模块Music_Pl的调用:
找到调用后向上看一眼就能发现关键跳转,重新运行jmp掉即可:
最后password出现在标题中,完成。
最后复盘的时候想起,这个事件应该来自于计时器
每秒检查一次时间是否超过60000ms
正好在VB Decompiler中有TMR_POS_Timer事件,检查发现:
确实反编译出来了,未通过则调用STOP事件
不过之后的弹窗理论上来说应该在goto loc_00404795之前
但是这里的反编译却毫无显示
学长说应该是反调或者花指令……之后得研究一下OD的去花插件了(:з」∠)
C. 明日计划
本来以为Reversing.kr的难度不大,就把最前面三个看起来很简单的题跳过了
现在看来还是很有意思的,回头把那三个也做了吧
EasyCrack
- 170923 逆向-Reversing.kr(MusicPlayer)
- 170925 逆向-Reversing.kr(Replace)
- 170926 逆向-Reversing.kr(ImagePrc)
- 170927 逆向-Reversing.kr(Position)
- 170928 逆向-Reversing.kr(Direct3D_FPS)
- 170929 逆向-Reversing.kr(Ransomware)
- 170930 逆向-Reversing.kr(Twist)
- 171001 逆向-Reversing.kr(WindowsKernel)
- 171002 逆向-Reversing.kr(AutoHotKey)
- 171003 逆向-Reversing.kr(CSHOP)
- 171010 逆向-Reversing.kr(PEPassword)
- 171011 逆向-Reversing.kr(HateIntel)
- 171013 逆向-Reversing.kr(AutoHotKey2)
- 171014 逆向-Reversing.kr(x64 Lotto)
- 171017 逆向-Reversing.kr(CSharp)
- 171018 逆向-Reversing.kr(Flash Encrypt)
- 171019 逆向-Reversing.kr(MetroApp)
- 171020 逆向-Reversing.kr(Multiplicative)
- 由前序和中序数组重建二叉树
- PAT basic 1008. 数组元素循环右移问题 (20)
- Java设计模式——工厂模式(Factory Pattern)
- 那些遇到一两次的BUG
- pygame编写飞机大战(2)-pygame快速入门
- 170923 逆向-Reversing.kr(MusicPlayer)
- SSH与SSM学习之Struts212——标签
- Python中zip()函数用法举例
- Hibernate学习---第八节:关联关系
- DraggableFlagView(自改版)的使用
- 高可用集群管理工具的总结
- Hibernate学习---第九节:继承关系的映射配置
- Hibernate学习---第十节:Hibernate之hql
- Hibernate学习---第十一节:Hibernate之QBC、样例查询&离线查询