2008年12月24日星期三

你有多少想当然?

想当然,这个东西我想应该出现的概率是相对来说非常大的。因为我们习惯在逻辑思考中偏移到想当然里。虽然说,想当然这一个词出自《后汉书·孔融传》,但是,这却是一个固有的思维习惯,远比记载要早上很多。在小说西游记中,所有的猴子都在认为瀑布后面仅仅是个石壁的时候,其实里面却别有洞天。

不过这样好像扯远了。说道想当然,很多时候也会出现在程序设计中。简单的想当然是很好分辨的,就像单纯的堆栈溢出,堆溢出,在进行代码审计的时候,完全可以实现检测的。但是可怕的不在这里,而在逻辑上的错误。一般来说,简单的错误在代码审计下无疑会现出原形,但是逻辑错误,很多是隐晦的,不容易理解的。

举个很简单的例子。相信很多逆向脱壳的人大多使用过PELord这款工具。但是这款工具由于设计较早,存在一个较大的BUG,不支持60+个进程,一旦你的进程项多于60个,程序就会崩溃。(希望我没记错数字:) )就当时的程序设计者来说,这里完全没有什么问题,以当时的硬件水平,机器根本无法运行60个进程的。但是谁知道多少年后,这个不衰的工具却遭遇到了他设计者所留下的瓶颈呢?

平时的时候,大家写猥琐的东西,无所谓,挫点就挫点了,能用就成了。但是如果你是在做产品呢?尤其是安全产品的时候。而且,逻辑上的问题,往往又是最难发现的。

没有评论: