近期学习记录
最近一个星期花时间恶补了一下 CSAPP. 在此记录一下。
我看的是第三版中文版。之前自己有点排斥各种技术类书籍的中译版,主要是觉得翻译质量不佳,且还得找专有名词对应的英文词汇。但是现在又觉得还是中文阅读速度高(不确定是不是真的比英文高很多,对于我扫视单位面积文字获取的信息量来说我猜是中文高),好像阅读的心智负担小一些。 总之觉得没有必要强求自己看英文版。
可能由于我事先对中译的要求放得比较低,读下来感觉质量还好,没有什么特别大的理解上的障碍。反而英文原版在排布代码段和插图上明显不如中译版人性化(离对应文字太远,得来回看)。
阅读重点在“第二部分:在系统上运行程序”。第一部分看上去主要是计组和体系结构的内容,我感觉实际编程中实用性不如后面两部分。而第二部分介绍了 ISA 和操作系统共同为上层应用程序提供的机制,包括链接、异常控制流和虚拟内存。链接里的 GOT 表和 PLT 表和 pwn 以及 PLT Hook 技术直接相关。异常控制流并不只是指一些语言里 try catch 这样的异常机制,它与普通的顺序执行、条件跳转和循环等正常控制流相对,是除了这种正常控制流以外一切控制流的总称。虚拟内存中重要的知识点有内存和外存之间的换入换出机制,共享/私有内存以及相关的 CoW 机制,以及堆内存管理。
其实我第一次看 CSAPP 是两年多前,当时自己还没转来计算机专业,也没学过数字逻辑和计组这两门先导课程,所以读不下去。如今在学校里学了一遍各种计算机专业课的考研导向版本,想着回来补一补正统的计算机科学教育,倒确实轻松一些。就算之前学的已经忘得差不多了,看着各种隐约有点印象的名词也会有些亲切感,自然就不觉得难了。读书百遍,其义自现。
之前玩逆向的时候遇到不懂的地方总是想着这么复杂怎么可能学得完,于是会想方设法地逃避和绕过。对理解比较庞大复杂的系统总有种惧怕感。如今学得越来越多,感觉虽然距离真正理解还很遥远,但也不是不可能的事。
单纯看书的缺点在于学了不少理论,但是缺乏实践,很多地方还是有不少 gaps. 春招在即,恐怕来不及好好做南大的 ICS PA 了,下一步可能还是为了找工硬啃一下 Android Runtime. 不知道能学得多明白呢?
评论
发表评论