内容简介 · · · · · ·
本书既是一本全面而系统地讲解反汇编与逆向分析技术的安全类专著,又是一部深刻揭示C++内部工作机制的程序设计类著作。理论与实践并重,理论部分系统地讲解了C++的各种语法特性和元素的逆向分析方法和流程,重在授人以渔;实践部分通过几个经典的案例演示了逆向分析技术的具体实施步骤和方法。
全书共分为三大部分:第一部分主要介绍了VC++6.0、OllyDBG和反汇编静态分析工具的使用,以及反汇编引擎的工作原理;第二部分以C/C++语法为导向,以VC++6.0为例,深入解析了每个C/C++知识点的汇编表现形式,包括基本数据类型、表达式、流程控制语句、函数、变量、数组、指针、结构体、类、构造函数、析构函数、虚函数、继承和多重继承、异常处理等,这部分内容重在修炼“内功”,不仅讲解了调试和识别各种C/C++语句的方法,而且还深入剖析了各知识点的底层机制;第三部分是逆向分...
本书既是一本全面而系统地讲解反汇编与逆向分析技术的安全类专著,又是一部深刻揭示C++内部工作机制的程序设计类著作。理论与实践并重,理论部分系统地讲解了C++的各种语法特性和元素的逆向分析方法和流程,重在授人以渔;实践部分通过几个经典的案例演示了逆向分析技术的具体实施步骤和方法。
全书共分为三大部分:第一部分主要介绍了VC++6.0、OllyDBG和反汇编静态分析工具的使用,以及反汇编引擎的工作原理;第二部分以C/C++语法为导向,以VC++6.0为例,深入解析了每个C/C++知识点的汇编表现形式,包括基本数据类型、表达式、流程控制语句、函数、变量、数组、指针、结构体、类、构造函数、析构函数、虚函数、继承和多重继承、异常处理等,这部分内容重在修炼“内功”,不仅讲解了调试和识别各种C/C++语句的方法,而且还深入剖析了各知识点的底层机制;第三部分是逆向分析技术的实际应用,通过对PEiD、“熊猫烧香”病毒、OllyDBG调试器等的逆向分析将理论和实践很好地融合在了一起。
本书适合所有软件安全领域的工作者、想了解C++内部机制的中高级程序员,以及对Windows底层原理感兴趣的技术人员阅读。
作者简介 · · · · · ·
钱林松,资深安全技术专家、软件开发工程师和架构师,从事计算机安全和软件开发工作12年,实践经验极其丰富。尤其精通软件逆向分析技术,对C/C++技术和Windows的底层机制也有非常深入的研究。武汉科锐软件技术有限公司创始人,教学经验丰富,多年来,为国内计算机安全领域培养和输送了大量的人才。活跃于看雪论坛,有较高的知名度和影响力。
目录 · · · · · ·
第一部分 准备工作
第1章 熟悉工作环境和相关工具 / 2
1.1 调试工具Microsoft Visual C++ 6.0和OllyDBG / 2
1.2 反汇编静态分析工具IDA / 5
1.3 反汇编引擎的工作原理 / 11
· · · · · · (更多)
第一部分 准备工作
第1章 熟悉工作环境和相关工具 / 2
1.1 调试工具Microsoft Visual C++ 6.0和OllyDBG / 2
1.2 反汇编静态分析工具IDA / 5
1.3 反汇编引擎的工作原理 / 11
1.4 本章小结 / 16
第二部分 C++反汇编揭秘
第2章 基本数据类型的表现形式 / 18
2.1 整数类型 / 18
2.1.1 无符号整数 / 18
2.1.2 有符号整数 / 18
2.2 浮点数类型 / 20
2.2.1 浮点数的编码方式 / 21
2.2.2 基本的浮点数指令 / 23
2.3 字符和字符串 / 26
2.3.1 字符的编码 / 27
2.3.2 字符串的存储方式 / 28
2.4 布尔类型 / 29
2.5 地址、指针和引用 / 29
2.5.1 指针和地址的区别 / 30
2.5.2 各类型指针的工作方式 / 31
2.5.3 引用 / 34
2.6 常量 / 35
2.6.1 常量的定义 / 36
2.6.2 #define和const的区别 / 37
2.7 本章小结 / 38
第3章 认识启动函数,找到用户入口 / 40
3.1 程序的真正入口 / 40
3.2 了解VC++ 6.0的启动函数 / 40
3.3 main函数的识别 / 44
3.4 本章小结 / 46
第4章 观察各种表达式的求值过程 / 47
4.1 算术运算和赋值 / 47
4.1.1 各种算术运算的工作形式 / 47
4.1.2 算术结果溢出 / 82
4.1.3 自增和自减 / 83
4.2 关系运算和逻辑运算 / 85
4.2.1 关系运算和条件跳转的对应 / 85
4.2.2 表达式短路 / 86
4.2.3 条件表达式 / 88
4.3 位运算 / 92
4.4 编译器使用的优化技巧 / 94
4.4.1 流水线优化规则 / 97
4.4.2 分支优化规则 / 101
4.4.3 高速缓存(cache)优化规则 / 101
4.5 一次算法逆向之旅 / 102
4.6 本章小结 / 109
第5章 流程控制语句的识别 / 110
5.1 if语句 / 110
5.2 if…else…语句 / 112
5.3 用if构成的多分支流程 / 115
5.4 switch的真相 / 119
5.5 难以构成跳转表的switch / 128
5.6 降低判定树的高度 / 133
5.7 do/while/for的比较 / 137
5.8 编译器对循环结构的优化 / 143
5.9 本章小结 / 148
第6章 函数的工作原理 / 149
6.1 栈帧的形成和关闭 / 149
6.2 各种调用方式的考察 / 152
6.3 使用ebp或esp寻址 / 155
6.4 函数的参数 / 158
6.5 函数的返回值 / 160
6.6 回顾 / 163
6.7 本章小结 / 165
第7章 变量在内存中的位置和访问方式 / 166
7.1 全局变量和局部变量的区别 / 166
7.2 局部静态变量的工作方式 / 169
7.3 堆变量 / 173
7.4 本章小结 / 177
第8章 数组和指针的寻址 / 178
8.1 数组在函数内 / 178
8.2 数组作为参数 / 181
8.3 数组作为返回值 / 185
8.4 下标寻址和指针寻址 / 189
8.5 多维数组 / 193
8.6 存放指针类型数据的数组 / 199
8.7 指向数组的指针变量 / 201
8.8 函数指针 / 204
8.9 本章小结 / 206
第9章 结构体和类 / 207
9.1 对象的内存布局 / 207
9.2 this指针 / 212
9.3 静态数据成员 / 217
9.4 对象作为函数参数 / 219
9.5 对象作为返回值 / 226
9.6 本章小结 / 231
第10章 关于构造函数和析构函数 / 233
10.1 构造函数的出现时机 / 233
10.2 每个对象都有默认的构造函数吗 / 243
10.3 析构函数的出现时机 / 245
10.4 本章小结 / 254
第11章 关于虚函数 / 256
11.1 虚函数的机制 / 256
11.2 虚函数的识别 / 261
11.3 本章小结 / 268
第12章 从内存角度看继承和多重继承 / 269
12.1 识别类和类之间的关系 / 270
12.2 多重继承 / 292
12.3 虚基类 / 298
12.4 菱形继承 / 299
12.5 本章小结 / 307
第13章 异常处理 / 308
13.1 异常处理的相关知识 / 308
13.2 异常类型为基本数据类型的处理流程 / 314
13.3 异常类型为对象的处理流程 / 323
13.4 识别异常处理 / 329
13.5 本章小结 / 341
第三部分 逆向分析技术应用
第14章 PEiD的工作原理分析 / 344
14.1 开发环境的识别 / 344
14.2 开发环境的伪造 / 353
14.3 本章小结 / 356
第15章 “熊猫烧香”病毒逆向分析 / 357
15.1 调试环境配置 / 357
15.2 病毒程序初步分析 / 358
15.3 “熊猫烧香”的启动过程分析 / 360
15.4 “熊猫烧香”的自我保护分析 / 366
15.5 “熊猫烧香”的感染过程分析 / 369
15.6 本章小结 / 379
第16章 调试器OllyDBG的工作原理分析 / 380
16.1 INT3断点 / 380
16.2 内存断点 / 385
16.3 硬件断点 / 390
16.4 异常处理机制 / 396
16.5 加载调试程序 / 402
16.6 本章小结 / 406
第17章 反汇编代码的重建与编译 / 407
17.1 重建反汇编代码 / 407
17.2 编译重建后的反汇编代码 / 410
17.3 本章小结 / 411
参考文献 / 412
· · · · · · (收起)
丛书信息
喜欢读"C++反汇编与逆向分析技术揭秘"的人也喜欢的电子书 · · · · · ·
喜欢读"C++反汇编与逆向分析技术揭秘"的人也喜欢 · · · · · ·
C++反汇编与逆向分析技术揭秘的话题 · · · · · · ( 全部 条 )



C++反汇编与逆向分析技术揭秘的书评 · · · · · · ( 全部 2 条 )

对做逆向工程的来说帮助很大

> 更多书评2篇
-
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。 看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。 其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。 笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk;=1746716968
2014-05-11 17:41
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk=1746716968回应 2014-05-11 17:41 -
咚咚 (活的随意点)
栈结构在内存中占用一段连续的存储空间,通过esp与ebp两个栈指针寄存器来保存当前的起始地址与结束地址(栈顶与栈底) 栈帧中可以寻址的数据有局部变量,函数返回地址,函数参数等 不同的两次函数调用,所形成的栈帧也不相同。当由一个函数进入到另一个函数中时,就会针对调用函数开辟出其所需要的栈空间,形成此函数的栈帧。当这个函数结束调用时,需要清除它所使用的帧空间,关闭栈帧。(栈平衡) 0040D3E0 push ...2013-10-07 16:21
栈结构在内存中占用一段连续的存储空间,通过esp与ebp两个栈指针寄存器来保存当前的起始地址与结束地址(栈顶与栈底)栈帧中可以寻址的数据有局部变量,函数返回地址,函数参数等不同的两次函数调用,所形成的栈帧也不相同。当由一个函数进入到另一个函数中时,就会针对调用函数开辟出其所需要的栈空间,形成此函数的栈帧。当这个函数结束调用时,需要清除它所使用的帧空间,关闭栈帧。(栈平衡)0040D3E0 push ebp0040D3E1 mov ebp,esp0040D3E3 sub esp,4Ch0040D3E6 push ebx0040D3E7 push esi0040D3E8 push edi0040D3E9 lea edi,[ebp-4Ch] //lea有效地址传送指令区别MOV传送指令:MOV传送的是地址所指的内容,而LEA只是地址。0040D3EC mov ecx,13h //将重复执行指令的次数放到ecx0040D3F1 mov eax,0CCCCCCCCh //初始化eax (int 3)0040D3F6 rep stos dword ptr [edi] //用eax中的值初始化到edi指向的地址,长度为dword,循环执行数为ecx中的值回应 2013-10-07 16:21 -
数组名是个地址常量值,保存数组元素的首地址。 对于数组的识别,应判断数据在内存中是否连续并且类型一致,符合即可将此段数据视为数组。 字符串处理函数在Debug版本下直接识别call xxx, 而release版本下被作为内联编译处理,因此没有call。 以下说点题外话,以C标准来说的话,1.数组是数组,数组名是数组名;2.指针是指针,地址是地址。都不可以无条件替换。 尽管内建&名为address-of,实际上取的是指针。..
2013-05-31 10:57
数组名是个地址常量值,保存数组元素的首地址。对于数组的识别,应判断数据在内存中是否连续并且类型一致,符合即可将此段数据视为数组。
以下说点题外话,以C标准来说的话,1.数组是数组,数组名是数组名;2.指针是指针,地址是地址。都不可以无条件替换。尽管内建&名为address-of,实际上取的是指针。地址无法被语言直接表达——你摆脱不了类型。内建&返回的总是有类型的指针值(或者按C++的说法,指针类型的prvalue)。对数组作用&,得到的是指向数组的指针。对数组的元素作用&,得到的是指向数组元素的指针。数组名作为表达式,可以指称整个数组,只是通常会隐式转换为指向首个元素的指针而不再是整个数组。但是有少数例外:如作为&/sizeof的操作数时。所以说“数组名在C语言中表示数组首地址”在各种意义上都是不严格的说法。访问数组的两种方法:下标访问和指针访问。函数指针:函数指针式比较特殊的指针类型,由于其保存的地址数据为代码段内的地址信息,而非数据区,因此不存在便宜情况,为了防止函数指针发生错误偏移,编译器将在编译器进行检查,不允许函数指针进行加减法等没有意义的运算。字符串处理函数在Debug版本下直接识别call xxx, 而release版本下被作为内联编译处理,因此没有call。
回应 2013-05-31 10:57
-
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。 看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。 其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。 笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk;=1746716968
2014-05-11 17:41
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk=1746716968回应 2014-05-11 17:41 -
因为IDA和OllyDBG用得少,所以快捷键老记不住,在这里存个档好了。很早以前就读过了,这本书。 OllyDBG基本快捷键和功能 F2------断点,其实就是int 3,软件断点 F3------加载exe,进行调试分析 F4------程序执行到光标处 F5------缩小,还原当前窗口 F7------单步步入 F8------单步步过 F9------直接运行程序,遇到断点,中断 Ctrl+F2-------重新运行程序到起始处,用于重新调试程序 Ctrl+F9-------执行到函数返回..
2013-05-27 09:57
因为IDA和OllyDBG用得少,所以快捷键老记不住,在这里存个档好了。很早以前就读过了,这本书。OllyDBG基本快捷键和功能F2------断点,其实就是int 3,软件断点F3------加载exe,进行调试分析F4------程序执行到光标处F5------缩小,还原当前窗口F7------单步步入F8------单步步过F9------直接运行程序,遇到断点,中断Ctrl+F2-------重新运行程序到起始处,用于重新调试程序Ctrl+F9-------执行到函数返回处,用于跳出函数实现Alt+F9-------执行到用户代码处,用于快速跳出系统函数(API)(其实也就是返回到程序领空)Ctrl+G------输入16进制地址,在反汇编窗口快速定位到该地址小插曲
IDA常用快捷键使用说明Enter------跟进函数实现,查看标号对应的地址Esc------返回跟进处A------解释光标处的地址为一个字符串的首地址B------16进制与2进制数转换C------解释光标处的地址为一条指令D------解释光标处的地址为数据,每按一次将会转换这个地址的数据长度G------快速查找对应地址H------16进制与10进制数互换K------将数据解释为栈变量;-------添加注释M------解释为枚举成员N------重新命名O------解释地址为数据段偏移量,用于字符串标号T------解释数据为一个结构体成员X------转换视图到交叉参考模式Shift+F9------添加结构体IDA图标是“世界上第一位女程序员”Ada,Lovelace的头像
回应 2013-05-27 09:57 -
1.lib2obj 这步是为了从lib中得到obj,有时候我们直接就得到obj就可以略过此步. 要取出lib中的obj,我们需要先使用link -lib /list libname枚举lib内部的obj 然后使用link -lib /extract:objname libname取出相应的obj 对应的批处理代码如下(%1为libname) for /F %%i in (‘link -lib /list %1.lib’) do link -lib /extract:%%i %1.lib 这个批处理有个缺点,如果objname带空格就无法成功. 2.obj2pat 使用pcf.exe把obj..
2012-02-15 13:54
1.lib2obj这步是为了从lib中得到obj,有时候我们直接就得到obj就可以略过此步.要取出lib中的obj,我们需要先使用link -lib /list libname枚举lib内部的obj然后使用link -lib /extract:objname libname取出相应的obj对应的批处理代码如下(%1为libname)for /F %%i in (‘link -lib /list %1.lib’) do link -lib /extract:%%i %1.lib这个批处理有个缺点,如果objname带空格就无法成功.2.obj2pat使用pcf.exe把obj转换为pat,命令如下pcf.exe objname对应的批处理代码如下,可以把当前目录下全部obj文件转换为patfor %%i in (*.obj) do pcf %%i3.pat2sig使用sigmake把pat转换为sig,命令如下sigmake -n”libname” *.pat signame第一次运行可能会出现冲突,sigmake会输出信息到exc文件打开exc文件去掉前两行保存,重新运行sigmake就成功了.对应的批处理代码如下(%1为libname):sigmake -n"%1.lib" *.pat %1.sig if exist %1.exc for %%i in (%1.exc) do > abc.exc more +2 "%%i" copy abc.exc %1.exc del abc.exc sigmake -n"%1.lib" *.pat %1.sig
4.lib2sig上面提到的程序在随书代码(见参考资料)里可以找到下面的bat也是随书代码里面的,整合了上面1~3操作,我随手注释掉了一句我觉得没有用的功能.md %1_objs cd %1_objs for /F %%i in ('link -lib /list %1.lib') do link -lib /extract:%%i %1.lib for %%i in (*.obj) do pcf %%i sigmake -n"%1.lib" *.pat %1.sig rem if exist %1.exc for %%i in (%1.exc) do find /v ";" %%i > abc.exc if exist %1.exc for %%i in (%1.exc) do > abc.exc more +2 "%%i" copy abc.exc %1.exc del abc.exc sigmake -n"%1.lib" *.pat %1.sig copy %1.sig ..\%1.sig cd .. del %1_objs /s /q rd %1_objs
BAT使用帮助将pcf.exe、sigmake.exe所在的目录加入环境变量 path 中将要生成sig文件的LIB文件与批处理文件放同一个目录在DOS下运行,将LIB的文件名做为第一个参数即可(去掉后缀.lib)5.sig4ida把第4步生成的sig文件复制到IDA目录中的sig目录下按Shift+F5打开IDA签名窗口,添加刚才的sig文件,然后随便点几下就可以看到效果了.参考资料《C++反汇编与逆向分析技术揭秘》 随书代码 http://bbs.pediy.com/showthread.php?t=141304原文地址:http://peonrun.com/2012/sig-for-ida/回应 2012-02-15 13:54
-
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。 看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。 其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。 笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk;=1746716968
2014-05-11 17:41
断断续续,除了最后几章实战外,几乎看完此书了,发发我看此书的笔记。看此书的童鞋可当作是导引,我提到了一些与本书相关的一些基础知识的获得方法,还有读本书的方法。其实基本上除了第四章讲编译器除法优化的部分之外,我都是蜻蜓点水,所以本笔记对看第四章不明白的童鞋会更有帮助。笔记下载地址:http://yun.baidu.com/share/link?shareid=2849339737&uk=1746716968回应 2014-05-11 17:41 -
咚咚 (活的随意点)
栈结构在内存中占用一段连续的存储空间,通过esp与ebp两个栈指针寄存器来保存当前的起始地址与结束地址(栈顶与栈底) 栈帧中可以寻址的数据有局部变量,函数返回地址,函数参数等 不同的两次函数调用,所形成的栈帧也不相同。当由一个函数进入到另一个函数中时,就会针对调用函数开辟出其所需要的栈空间,形成此函数的栈帧。当这个函数结束调用时,需要清除它所使用的帧空间,关闭栈帧。(栈平衡) 0040D3E0 push ...2013-10-07 16:21
栈结构在内存中占用一段连续的存储空间,通过esp与ebp两个栈指针寄存器来保存当前的起始地址与结束地址(栈顶与栈底)栈帧中可以寻址的数据有局部变量,函数返回地址,函数参数等不同的两次函数调用,所形成的栈帧也不相同。当由一个函数进入到另一个函数中时,就会针对调用函数开辟出其所需要的栈空间,形成此函数的栈帧。当这个函数结束调用时,需要清除它所使用的帧空间,关闭栈帧。(栈平衡)0040D3E0 push ebp0040D3E1 mov ebp,esp0040D3E3 sub esp,4Ch0040D3E6 push ebx0040D3E7 push esi0040D3E8 push edi0040D3E9 lea edi,[ebp-4Ch] //lea有效地址传送指令区别MOV传送指令:MOV传送的是地址所指的内容,而LEA只是地址。0040D3EC mov ecx,13h //将重复执行指令的次数放到ecx0040D3F1 mov eax,0CCCCCCCCh //初始化eax (int 3)0040D3F6 rep stos dword ptr [edi] //用eax中的值初始化到edi指向的地址,长度为dword,循环执行数为ecx中的值回应 2013-10-07 16:21 -
数组名是个地址常量值,保存数组元素的首地址。 对于数组的识别,应判断数据在内存中是否连续并且类型一致,符合即可将此段数据视为数组。 字符串处理函数在Debug版本下直接识别call xxx, 而release版本下被作为内联编译处理,因此没有call。 以下说点题外话,以C标准来说的话,1.数组是数组,数组名是数组名;2.指针是指针,地址是地址。都不可以无条件替换。 尽管内建&名为address-of,实际上取的是指针。..
2013-05-31 10:57
数组名是个地址常量值,保存数组元素的首地址。对于数组的识别,应判断数据在内存中是否连续并且类型一致,符合即可将此段数据视为数组。
以下说点题外话,以C标准来说的话,1.数组是数组,数组名是数组名;2.指针是指针,地址是地址。都不可以无条件替换。尽管内建&名为address-of,实际上取的是指针。地址无法被语言直接表达——你摆脱不了类型。内建&返回的总是有类型的指针值(或者按C++的说法,指针类型的prvalue)。对数组作用&,得到的是指向数组的指针。对数组的元素作用&,得到的是指向数组元素的指针。数组名作为表达式,可以指称整个数组,只是通常会隐式转换为指向首个元素的指针而不再是整个数组。但是有少数例外:如作为&/sizeof的操作数时。所以说“数组名在C语言中表示数组首地址”在各种意义上都是不严格的说法。访问数组的两种方法:下标访问和指针访问。函数指针:函数指针式比较特殊的指针类型,由于其保存的地址数据为代码段内的地址信息,而非数据区,因此不存在便宜情况,为了防止函数指针发生错误偏移,编译器将在编译器进行检查,不允许函数指针进行加减法等没有意义的运算。字符串处理函数在Debug版本下直接识别call xxx, 而release版本下被作为内联编译处理,因此没有call。
回应 2013-05-31 10:57
论坛 · · · · · ·
不知道这本书有没有介绍X64的汇编? | 来自acel | 2 回应 | 2013-12-10 |
居然有? | 来自AirSpuer | 1 回应 | 2011-10-21 |
在哪儿买这本书 · · · · · ·
在哪儿借这本书 · · · · · ·
以下豆列推荐 · · · · · · ( 全部 )
- 中国匿名者 (@AnonOpsCN) (532EEDC9400A0)
- 逆向工程 (Rover)
- 信息安全 (x(i,n)->g)
- 3.debug (再出发)
- 近三年国产信安非屎类目前仅四本 (532EEDC9400A0)
谁读这本书?
二手市场
订阅关于C++反汇编与逆向分析技术揭秘的评论:
feed: rss 2.0
1 有用 摇滚喵喵子 2018-02-09
只需要一些汇编基础就可以看,很适合入门逆向,不管是为了深入了解C++,还是学习逆向工程都很有帮助。还有楼上吐槽VC6的,我就想问这和vc6有啥关系?这些技术学了之后都是通用的。
0 有用 lemon 2012-11-29
关于逆向的最全面的介绍书籍,哦还有加密与解密,也可以深入了解程序编译的内在机制
0 有用 combine 2012-09-26
汇编不很熟,大概读了一遍。C++反汇编揭秘部分由于读过《深度探索C++对象模型》,了解些原理,翻得很快。
0 有用 包子 2017-11-24
汇编进阶好书,实例分析相关基础技术概念。
0 有用 和梦无 2013-08-06
深入C++的底层,比C++对象模型更逛,但也欠缺了点深度。但是。。。够用啦
0 有用 anyujh 2018-04-01
快速浏览了此书,我主要目的是为了加密自己的程序,想通过了解常用的反汇编及逆向工程来找到对程序更好的保护方法。了解到两个强有力的反汇编工具,以IDA Pro为代表,看了此书后,对自己加密程序已经没有了信心,后来查看Stack Overflow上对于反汇编与反逆向工程的评价及《软件加密与解密》,了解到只要有足够的时间、资源任何加密都是无效的,但让反编译者花费更多的时间还是有意义的,不过一般地软件加密技术真的是没啥用。
1 有用 摇滚喵喵子 2018-02-09
只需要一些汇编基础就可以看,很适合入门逆向,不管是为了深入了解C++,还是学习逆向工程都很有帮助。还有楼上吐槽VC6的,我就想问这和vc6有啥关系?这些技术学了之后都是通用的。
0 有用 Addict 2018-01-29
正在重读第二遍,感觉虚函数理解的还不深刻
0 有用 包子 2017-11-24
汇编进阶好书,实例分析相关基础技术概念。
0 有用 slight 2017-07-12
C++反汇编,这一本就够了,C++工程师进阶必看。