前面写遇到了一个陷阱,
这里记录一下另一个v5(&loc_804C257, &v4);(其中v5=0),是在函数0804c217中,
我们看下F5自动翻译会出现哪些问题,如上。
那么,我们把v5(&loc_804C257, &v4)这段汇编代码改一下,让F5再运行一遍,看一下结果。
最后一张图是重新执行F5后的伪代码,这里pivot_root(,)的第二个参数变成了flags,而不是原先的a1。这估计是因为F5插件在汇编代码更改以后,意识到了flags这个变量在发生改变,所以pivot_root(,)的第二个参数变成了flags,这里原先的汇编代码中其实也是flags的,只不过如果没有下面的循环,等于flags和等于a1是一样的,F5自动优化为将pivot_root(,)的第二个参数改为a1了。
通过这段代码说明:以后碰到这种循环,可以把它先改为循环的逻辑,然后重新运行F5,这样可以省去我们重新一段一段阅读代码的时间。可见,这个break的crackme也真够变态的。