首页
社区
课程
招聘
[书评]书已看完
发表于: 2013-6-15 12:29 21146

[书评]书已看完

2013-6-15 12:29
21146
看了两周半,最后的逆向分析技术应用+异常处理看了整整一周半。

建议读者看这本书时,有什么C++概念不清楚参考C++经典书,比如《C++程序设计语言》。书中代码与谭浩强的《C语言程序设计》有的一拼。C++概念有些地方也阐述的不到位。比如P269值得吐槽的太多了,挑倒数第二段吐下槽。记得当初学C++的时候,老师教我们父类和子类的关系是"是",比如手表是表的子类的话,那么手表是表。书中以张三与张三他爹比喻子类和父类实例,以像不像来说明父类和子类的关系。我只问一句儿子是老爸吗?难道儿子是老爸生的,儿子就是子类,老爸就是父类?要真这么想的话,那才"可能会给你的社会交际带来潜在的危险"(书中原话)。

缺少某些汇编指令的讲解,比如
        • test
        • setnz
        ...

第一章 熟悉工作环境和相关工具
自己制作SIG文件,让IDA可以识别第三方提供的库函数,这功能不错,更方便调试和学习。举了一个实际应用例子,很简略。后面用到了的操作再临时提出来。我喜欢,有虎头之风。

第二章 基本数据类型的表现形式
介绍了各类基本数据类型的汇编。作者对本章的定位"是学习后面内容的基础,读者应重点掌握"。没细看,一扫而过。

第三章 认识启动函数,找到用户人口
以前看过《程序员的自我修养---链接、装载和库》,重温了这部分知识。

第四章 观察各种表达式的求值过程
够深度,不仅介绍了篇幅不少的数学理论,还介绍了Release版本与Debug版本的不同以及编译器优化技巧。比较深的跳过,回头用到了再看。

例子先来一段源码,然后源码和汇编对比。这样比较浪费篇幅,要么只保留源码和汇编对比,要么一段源码,一段汇编。

P85 表4-1 条件跳转指令表

第五章 流程控制语句的识别
看了switch一节,终于确定作者对于效率异乎寻常的兴趣。效率与主题关系不大,但是由于作者的兴趣,效率相关的篇幅很大。有序线性跳转表、索引表与判定树跳过,有空时再看。
P394 分析OD删除硬件断点例子用到了switch跳转表

实在不欣赏使用goto语句模拟do循环(代码清单5-21)。

P140 "while 循环结构中使用了两次跳转指令完成循环,由于多使用了一次跳转指令,因此while循环要比do循环效率低一些。"结论很容易误导别人。while循环和do循环两者效率不可比,从功能上讲两者是不可替换的。效率之说也唯有可以替换的情况下才能谈吧,不然的话从何谈起?

第九章 结构体和类
P225 异常处理是动态运行时的代码吗?
理解
        • 浅拷贝
       
第十二章 从内存角度看继承和多重继承
P269值得吐槽的太多了,挑个吐下槽
倒数第二段。记得当初学C++的时候,老师教我们父类和子类的关系是"是",比如手表是表的子类的话,那么手表是表。书中以张三与张三他爹比喻子类和父类实例,以像不像来说明父类和子类的关系。我只问一句儿子是老爸吗?难道儿子是老爸生的,儿子就是子类,老爸就是父类?要真这么想的话,那才"可能会给你的社会交际带来潜在的危险"(书中原话)。
建议读者看这本书时,有什么C++概念不清楚参考C++经典书,比如《C++程序设计语言》。

第十六章 调试器OllyDBG的工作原理分析
OllyDBG的逆向分析很成熟,或许应该看看OllyDBG的逆向分析,从而学习逆向分析?

延伸课题:制作自己的OD。有点冲动,先看看别人怎么做的。

P396 汇编mov ecx, DebugEvent.dwProcessId解释获取异常类型,应为获取异常进程ID

第十七章 反汇编代码的重建与编译

重建反汇编代码很实用,我利用书中的ToUpper例子重新编译制作了DLL。

刚看完,尚未整理。有心再看一遍,等那时候再整理吧。

读书笔记(慢慢整理吧)
        • 补码
        • 栈底栈顶
       
        补码
        负数在内存中都是以补码存在的
        取反加一得到,0-x=x(反)+1
        推导过程
        因为 x + x(反) = 0xFFFFFFFF
        所以 x + x(反) + 1 = 0
        从而得到 0 - x = x(反) + 1
       
        栈底栈顶
        esp 栈顶寄存器
        ebp 栈底寄存器
       
        典型的进入函数开始代码
        push ebp
        mov ebp,esp
        sub esp,40h
       
        栈顶与栈底这段空间为栈空间,存放临时变量(参考堆栈相关知识)

函数参数在栈底+4连续内存中。栈底0存放返回地址。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
不同等级的读者读的感受不同啊。。一年前只懂点汇编+c+api,读起来要死不活啊。。
现在还好。。
2013-6-15 13:41
0
雪    币: 21
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我的汇编底子也就是看过《加密与解密》,还有就是平时调试的时候遇到点汇编代码。这书还好吧,至少能读的进。让我看《win32汇编程序设计》和王爽的汇编教程是压根看不进去了,看着看着就太监了。
2013-6-15 14:27
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
这倒奇怪了,那两本汇编语言我看着没问题。。。
2013-6-15 14:31
0
雪    币: 21
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5

只能说不是我的菜~工作5年了,让我看大学教科书似的书是有点为难我了,汗~
2013-6-15 14:38
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不同的层次要求不同啊
2013-6-26 12:13
0
游客
登录 | 注册 方可回帖
返回
//