博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

走出(一)

Posted on 2009-05-04 22:23  Sylvain的小屋  阅读(1818)  评论(6编辑  收藏  举报

 
走出系列,算是经历了惘之后,在博客园看了大伙的评论后,自己的历程,感谢博客园里头博友的评论,也感谢在Qzone里头留言的各位。

走出(一)

是时候给自己定位了,做安全的人不懂安全,实在是说不过去,现在计划并实施的是,学习程序漏洞知识,学习调试汇编代码和编写内存溢出的实验,学习经典密码学知识,吸收密码学的经典程序,学习程序编写思想。总体而言,是三本书的阅读,《代码之美》,《0day安全:软件漏洞分析技术》,《程序员密码学》。

今天《代码之美》看完了第5章,写一下自己的感想吧,一个很简单的正则表达式引擎的编写,完全的打破了我对C的认识,语言是来用的,不是研究的,虽然还是不能完全理解,但是以后会好的;subversion的增量编辑器的接口的设计,虽然也不懂,但是让我明白一点,好的接口不但能完成功能,给人一目了然,而且能经得住考验,这是最难能可贵的;quicksort的复杂度计算,这是我有史以来,看过的最妙的计算机理论的证明过程,我看懂了,并为之感动,这是一个计算机大师在上课的时候给学生推导的过程。经典名句:简单性并不是在复杂性之前出现的,而是在复杂性之后才出现的。在查找这一章节,第一句话,点明了计算机的作用,“计算机可以用来做数值计算,但这并不是人们用它的主要原因。”大部分的时候,计算机都是在处理查找的事务,作者用Ruby来写程序,并表达了观点,语言永远都是为使用者服务的,简单而强大,不要随便的否定一门语言,一门语言其实就是一门艺术,内建的搜索算法一般来说已经非常的优化,并表达出二分查找是相当好的方法,而且在写二分查找程序的时候,还有个窍门,不要以为找到值就停止循环会比全部搜索完要快,因为,用于比较的开销远大于把剩下搜索完的开销;接着的作者是完成JDOM和XOM的XML验证设计的工程师,他代码的优化过程,确实使我大开眼界,“不成熟的优化是编程的罪恶之源”,这句话太好了,他给出的优化过程是:该如何设计程序就如何设计程序,然后,必须是然后,再关心性能。其实我也是这么想的,呵呵,自己好好乐一把。

《程序员密码学》确实是一本好书,现在我正在开有关AES的章节,我在本科的课本中已经看过一回AES的加密算法,但是没有考虑过如何实现,这本书的实现,让我又一次大开眼界,发现自己原来写的加密代码,效率是如此的糟糕,我学会了该如何取得32位整形数的每一位,或者每8位,然后如何再把他们拼接起来,全部都是位运算,你说,这个的效率能不高吗?还有8阶的伽瓦罗域的很重要的一部分就是多项式乘法,在书本上起码好几段的描述,作者只用了不到4句话就完成了,而且还说,这个的效率还是不高,我很有兴趣的想知道,是个什么方法。另外在做行列混乱的时候,引入的那个矩阵,作者很巧妙的使用了多项式乘法,更巧妙的是他竟然使用了缓存,使得很多重复的运算得以消除。还有,原来真的有随机数的,但是要捕捉计算机的中断来实现,确实是个好办法。

《0day安全:软件漏洞分析技术》,对这本书的阅读,竟然让我着了迷,正如签名所说,似乎回到了当年的操作系统大作业,元旦那晚通宵调试Nachos的线程调度程序的时候,那种投入和兴奋是一样样的,终于明白了什么是内存溢出,如何通过将大块的内存,拷贝进入小块的内存,导致判断失效,跳转语句失效,并注入新代码的过程,通过使用ollydbg和Ida,能够看明白很简单的程序结构和流程,很有趣。尤其是第一个demo,老是不成功的时候,我急得连做梦都想着如何解决问题,最后终于找到问题的关键,书上说要用release版本,我使用了debug版本,太不容易了。