题目的意思:数字游戏
exeinfo查壳无壳?
64位 ida分析
看着感觉有点熟悉,结构也很像二叉树的中序遍历(看了wp才知道就是中序遍历,没看出来也没 关系,不影响做题),反正经过了某些变换这个是可以看出来的。
sub_400881
就是将变换后的值放到地址中
接下来就是最后一个函数了sub_400917
1 4 # 2 3
3 0 # 1 #
0 # 2 3 #
# 3 # # 0
4 2 # # 1 这样明显了啊,也就是每一行不同,每一列也不同。
典型的数独啊 那么数字就是0421421430,
但是前面有个函数做了一些变换。 那就动态调试吧,
为了使变换顺序明显的话,输入0123456789
然后把jz该为jnz,这样就能跳转了
tree = list("0421421430") # 变换后
ztree = list("7381940526") # 变换后的循序
flag = ['0']*10
for i in range(10):
flag[int(ztree[i])] = tree[i] # 顺序还原
print(''.join(flag))
得到原顺序 1134240024