170713 逆向-填数游戏

来源:互联网 发布:知乎平均水平 编辑:程序博客网 时间:2024/06/03 09:52

1625-5 王子昂 总结《2017年7月13日》 【连续第284天总结】
A. CISCN 结合WP再战RE
B. 这么久之后完整的wp终于出来了,回过头再做一遍之前的re
首先是最早放出的填数游戏
wp上直接写出了数独题目,然后在网上找到了做数独的地方再输入即可
我当时做的时候是卡在输入的地方,OD动态调的时候只有ASCII为9-12的输入能通过、继续循环,就一直纠结在那里。没有看别的函数。
现在想想一个地方卡着的话应该再看看别的地方,当时不应该执着于一处。
再打开IDA解析以后,从头分析立马发现了问题:
__main();
Sudu::Sudu(&v14);
Sudu::set_data((int)&v14, (Sudu *)&_data_start__, v5);

这里很明显就是初始化的地方,查看set_data轻松地发现&_data_start就指向了内存中的数独题目,写一个IDC把它跑出来:这里写图片描述 这里写图片描述
网上找一个数独解答就能得到解
但是现在再看仍然理不清输入的逻辑。在set_data函数中可以明白当输入为0时直接跳过该赋值,否则将1-9的值传入sudo结构体中。但是 std::operator>><char,std::char_traits<char>,std::allocator<char>>((std::istream::sentry *)&std::cin, &v15);这个形式不太理解,似乎是输入函数的重载,但是IDA的变量前后经常不一致,所以跟不清楚是做什么的,暂时还搞不定……
没有输入处理函数的话就不明白该以什么格式输入了
再等等别的WP吧
查看了一篇论坛上的WP,从set_number方法可以看出来赋值是连续的,即先行后列连续输入9*9个字符
这里写图片描述
不纠结于输入的重载而是查看关键算法对输入的处理
C.明日计划
apk crack复现

原创粉丝点击