题目描述
菜鸡学逆向学得头皮发麻,终于它拿到了一段源代码
Solution
原代码里有 4 个分支,如果每次都进入分支,程序就会exit()
退出,我们要做的就是避免程序进入分支,即每次if
判断都应该是假命题。
第一个分支是if(argc != 4)
,这意味着我们要额外输入 3 个参数,像./a.out 1 2 3
酱。
第二个分支是我们输入的第一个参数要等于0xcafe
,我们只需要在 Linux 终端输入echo ((0xcafe))
就能得到它的十进制数。
第三个分支要求我们输入的第二个参数模 5 不能等于三,并且模 17 得等于 8。我们用 Python 的列表推导式帮我们过滤[0, 100]
这个集合中满足条件的元素:
my_list = [i for in range(0, 100) if i % 5 != 3 and i % 17 == 8]
print(my_list)
最后一个分支,只要输入的字符串等于h4cky0u
,strcmp()
函数就返回 0,自然就进不到分支里了。