方程1和方程2求差,得到(a-b) = 0x02040f1a得到 a = 0xe8f508c8 – c -3*(a-b) =0x7a7fa298-3*0x2040f1a = 0x7473754a, 对应字符“Just”
得到 b = a - 0x02040f1a = 0x726f6630,对应字符“0for”
最后串起来得到对应输入字符串:Just0for0fun11A
解题过程的基本思想是用污点传播找出输入影响到的指令及跳转分支,根据验证码的唯一性去求分支的“取等”条件(往往也是随机输入对应的另外一条未走过的分支),构造出方程求解。但是到此为止还未弄清楚程序最后如何输出"You get it!" 为了剖析出题者的思路,我们Trace记录下程序处理正确验证码的过程,在通过层层验证之后,经过了一系列的条件跳转,设计者通过大量的跳转垃圾指令干扰分析,选出核心的16条指令如下所示