171108 逆向-SWPU(re200)
来源:互联网 发布:女生风油精滴下体 知乎 编辑:程序博客网 时间:2024/06/02 04:18
1625-5 王子昂 总结《2017年11月8日》 【连续第404天总结】
A. 08067CTF-re200
B.
这题我觉得难点在于对程序架构的分析理解,找出各个变量、函数的意义,最终锁定关键函数
比起做题来说更类似对程序的逆向,flag在正常流程中不会出现,但却符合思路。所以虽然做起来很困难,但我觉得这种题对成长更有帮助
首先拿到程序,main函数中没有什么东西
于是从字符串入手,查看一番发现这段加载音频的地方
很明显它是从加密文件中读取音频,然后装载到内存中,通过dword_458b88指针数组来调用
观察可以看到n_gun(n枪声)、bonus(奖励声,实测发现是吃到枪的声音)等等游戏中出现的音频文件
查看这个数组的交叉引用,就能跟到各个地方的处理了:
比如说dword_458B88[4],p_death的调用函数肯定就是死亡处理:
向上查看交叉引用,将它Hook住就可以达到不死效果了
再比如dword_458B88[11], bonus的调用应该是吃到枪的处理,调试发现吃到枪会使分数增加,那么就可以推断出加分的函数add_points:
然后查看add_points的交叉引用就可以接着推断出其他加分的情况,例如杀怪等等
我Hook了死亡函数,通关以后直接回到第一关╮(╯_╰)╭没有任何反应
于是猜测flag是否与分数有关,考虑到结算画面有08067的字符出现:
于是对该字符串查找,定位到这里:
向上查看交叉引用,定位到外层:
根据经验,分析出==8的变量是关卡………………(╯‵□′)╯︵┻━┻我从来没打到过第四关让我拿什么分析啊!
通过在43E710中下断可以发现这里是进入关卡的画面显示函数,word_4586DC应该就是生命数了
我觉得当第八关死亡重来的时候貌似就会显示flag的样子?
直接call它,或者死亡后将level变量写成8就会显示flag:
这里需要一点灵性,自己做的时候断到这个函数了,但是没注意if(dword == 8)这个判断
C. 明日计划
re400
- 171108 逆向-SWPU(re200)
- 171218 逆向-TPCTF(re200)
- 171109 逆向-SWPU(re400)
- 171106 逆向-SWPU(Re300-初窥)
- 171107 逆向-SWPU(Re300-解密)
- 一个SQL注入绕过分析(来源swpu web700)
- SCTF-RE200破解笔记
- swpu-acm集训队补充周赛(2016/12/24)题解
- SWPU-ACM集训队周赛之个人赛(3-18)----题解
- SWPU-ACM集训队周赛之个人赛(4-3,蓝桥杯模拟赛)----题解
- 详解2016 SWPU CTF web4
- SWPU CTF 2017 Web WriteUp
- 170707 逆向-南邮CTF逆向(WxyVM1)
- 170708 逆向-南邮CTF逆向(maze)
- Rescue(逆向BFS)
- Hdu4857逃生(逆向)
- APP逆向(上)
- APP逆向(中)
- 通过 hover 来改变 border 颜色大小的时候,标签位置发生移动的问题
- 不玩没用的,双十一搞促销十万人民币送起来
- C++中使用clock()函数测试程序时间
- iOS 一一 frame和Bounds 以及frame和bounds区别
- 20171109Link
- 171108 逆向-SWPU(re200)
- 码农晋升修炼指南,这些方法你要知道
- RecyclerView的极尽升华:BaseRecyclerViewFragment
- IE与非IE浏览器调用PC摄像头拍摄并且上传
- Windows驱动开发之入门篇(一)
- mysql/Java服务端对emoji(utf8mb4编码)的支持有关的问题
- 百度地图api 常用demo
- python configParser模块详解(转载)
- Java线程面试题 Top 50 (转载)