运行看看正常情况是怎么样的
进来显示后接受输入。
IDA 反编译看情况
这里我们发现 输入后 直接有个 if 判断,所以我认为这个 if 语句里面的函数调用才是最关键的。
sub_3B1240
计算输入是否在我们的数组里面
现将数组放置到 table 里面
然后函数 sub_3B1000 这个函数里面是对一个数组0的位置填入我们的输入。
得到 对应的数独 原本的格式
利用网上的在线工具得到解密的答案
result = [[5, 4, 6, 7, 1, 9, 2, 3, 8],
[9, 2, 1, 8, 3, 4, 6, 5, 7],
[8, 3, 7, 6, 2, 5, 4, 1, 9],
[7, 1, 8, 4, 6, 3, 9, 2, 5],
[4, 5, 3, 2, 9, 1, 7, 8, 6],
[6, 9, 2, 5, 8, 7, 1, 4, 3],
[2, 8, 4, 9, 5, 6, 3, 7, 1],
[3, 6, 5, 1, 7, 2, 8, 9, 4],
[1, 7, 9, 3, 4, 8, 5, 6, 2]]
这样我们可以得到我们所需要输入的值,然后我们会发现,我们的输入是每9个一组 在 table 中找到对应的偏移的。
从而就可以进行 对应的计算了。