运行 发现 程序应该是 一个计算。
里面的 字符串 提示。
发现 里面 有几个 很长的 sleep 函数 ,为了 方便动态调试,先 nop 掉。
首先发现 这里存在 三次输入。然后发现每次 输入 后下面都有 很多 没有特别多 作用的函数。应该是对存储空间的一个设置函数。
三次 输入后就 开始 进行的 关键比较。
这里 发现 在 每次输入后,我们的输入都被放到了 一个 对呀的 结构体进行保存。
name_struck{
int * valu;
int * buf;
}
而且发现 buf 地址和 valu 地址是 连续保存的。但是我们输入的每个 字符 是用 4字节 保存的也就是说当 (**(buf)-** (valu)) >> 2 = len(num)
然后 分析 下面的函数。
num1 < num3
num2 < num1
所以 得到我们的 输入应该满足的 要求 num2 < num1 < num3
。
然后 就进入到 计算。先进行了 依次 初始化
(a+b)****3 - 3**a**(b****2) - 3**b**(a***2) == (c+4)**3 - 12(c***2) - c*48 - 22
推出
a**3 + b**3 - c**3 == 42
百度得到 下面是 得到 flag