不管是读程序、还是写程序,都要把自己当作是计算机,在脑中将代码执行一遍,用各种各样可能的数据来执行,看代码有没有漏洞。1楼的函数,遇到0x20就结束循环,把当前的指针地址返回给调用者,宣称已经把左边的空格过滤掉了,这是什么逻辑?想象一下,传入的字符串形如"ab cd"这样的,它删左边的空格吗?这时返回得到的是"cd","ab"到哪了?
好,就算把!=改为==,再看:如果遇到空格就结束,对吗?仍然不对!这样只能滤掉第一个空格,不是左边所有的空格。
尝试把各种各样的字符串灌进去,看它有什么动作,哪里有漏洞,怎样修正这种漏洞。这样才是学程序的主要功课。写程序的时候,也是要这样不断地攻击自己的程序,检查有没有遗漏东西、是否有漏洞。不尝试攻击自己的程序,只凑对的结果,那是学不会写程序的,写出来的也是垃圾程序。
[
本帖最后由 TonyDeng 于 2011-8-5 16:34 编辑 ]