re学习笔记(62)2020网鼎杯-白虎组-Re-恶龙

题目:恶龙
题目描述:这是一个与史莱姆和恶龙战斗的故事,请战胜三头恶龙,取得flag。张三长老说,试图patch这个程序的人会得到错误的flag…

IDA64载入进入main函数
在这里插入图片描述
main函数会循环执行dround函数,次数是3次,次数bossexist在main函数之前的init里被初始化。outflag函数输出flag

init函数
在这里插入图片描述
同时被初始化的还有unief=100 coin(金钱) =5

此时outflag的一个参数flag4已经知道了。。

dround函数里面有三个选项,数字1打小怪,数字2打boss,数字3商店买东西。
在这里插入图片描述
小怪是随机打过的,商店store函数里可用两个金币换1战斗力

boss函数里面有判断,分别当bossexist == 3、bossexist == 2、bossexist == 1的时候并且战斗力eff高于boss的时候执行三个加密函数。而只有三次选择事件的机会,也就是说这三次事件都是2 打BOSS

看了一下加密函数的参数都是固定的,,题目描述说不可以patch会得到错误flag,大概是因为按顺序执行加密函数吧。

两个思路:一个是断点下断,然后改跳转标志位达到预期走向。

另一个就是修改战斗力eff了。

真不知道题目描述中张三长老说的话是提示还是啥,,,

战斗力eff是全局变量,随便下个断点,断下来后修改全局变量,进行byte patch

修改成ffffff7f,也就是int的最大值(小端序存放
在这里插入图片描述
在这里插入图片描述
然后连续三天都打boss,,flag就出来了。。
在这里插入图片描述

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forgo7ten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值