好友
阅读权限10
听众
最后登录1970-1-1
|
再见依然
发表于 2020-11-6 16:51
本帖最后由 再见依然 于 2020-11-6 16:55 编辑
我太惨了,单位组织ctf培训,5天的时间,就第一天参加了半天,其余三天半都被叫到其他地方搬砖了.然后第五天我终于有时间回来参加培训了,结果第五天老师没讲课,一天时间就搞了个模拟ctf比赛.
分享一下其中一道逆向都解题过程吧.纯新手,知识都是平时逛逛吾爱,偶尔学一点.题目放在附件里了,有兴趣都朋友也可以试试.
这个小游戏打开按enter开始,移动方向键,按enter确认,类似扫雷的玩法,会提示周边有几个雷,但是没其他可操作的,一踩到雷就马上提示游戏结束,然后重新开始.
一开始以为右上角的剩余雷数300是个突破口,猜测把剩余雷数变为0即可通关,后来废了很多波折,发现不行,应该就是个干扰项.
然后打算用od去调试一下,打开发现这么提示
百度搜过来说是64位程序,需要用64位的od去跑,就又下载了个64位的x64dbg
放上个吾爱破解的x64dbg下载地址
https://down.52pojie.cn/Tools/Debuggers/x64dbg_2020_09_14.zip
用X64dbg打开mine.exe
它会自动下了几个断点,先点几下运行,运行到正常的启动界面
然后点击顶上工具栏的Az图标,搜索字符串
然后会自动搜出几个中文字符串,按照经验,我一般喜欢在报错界面下断点,也就是游戏结束这里,下一个断点
然后在游戏里随便踩几个雷,这时候会停留在断点
后来摸索发现
lea rcx, ds:[0x00000000004861F8]
这段语句就是显示游戏结束的文字
lea rcx, ds:[0x0000000000486016]
4861F8修改为486016会显示剩余地雷:0,但是无实际意义
关键点在于下一句
call mine.40153B
执行了这段程序,游戏就结束了.
那么我首先想到的是,能不能跳过去,比如直接把这段代码改为下一个call mine.40157C
那就试试看
在这段代码上右键选择汇编
代码改成这样,然后点击确定.确定完会自动弹出修改下一段代码,我们只修改一段代码,所以直接点击关闭.
然后再运行
显示了个junkflag,被作者教育了一下,没这么简单.
不过接近真相了
期间绕了很多弯路,最终还是感觉要回到call mine.40157c上
PS:其实我汇编也学的不怎么样,以下是我猜出答案后再观察分析的,观察一下这段代码,感觉大概是这么个意思
cmp 比较了一个值
JNE 不等于就跳转mine.40164D
要么就跳转mine.4015FE
于是我就先修改为call mine.40164D
还是提示这个
然后把mine.exe关掉,手动用x64dbg重新打开(不然出来的flag是乱码的,不知道怎么回事)
重新打开后,直接修改这一段,改成4015FE,点击确定
点击继续运行,flag就出来了
注意!!!!我之所以说要重新打开mine.exe就是这个意思,有时候不知道怎么会flag乱码,反正不行就多打开几次吧. |
-
-
mine.zip
706.83 KB, 下载次数: 31, 下载积分: 吾爱币 -1 CB
题目
免费评分
-
查看全部评分
|