图书介绍
老“码”识途 从机器码到框架的系统观逆向修炼之路PDF|Epub|txt|kindle电子书版本网盘下载
- 韩宏,李林著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121173820
- 出版时间:2012
- 标注页数:332页
- 文件大小:99MB
- 文件页数:346页
- 主题词:程序设计
PDF下载
下载说明
老“码”识途 从机器码到框架的系统观逆向修炼之路PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章欲向码途问大道,锵锵bit是吾刀1
1.1全局变量引发的故事2
1.1.1剖析赋值语句机器码2
1.1.2修改赋值语句机器码6
1.1.3直接构建新的赋值语句7
1.1.4小结10
1.2理解指针和指针强制转换11
1.2.1指针和它丢失的类型信息11
1.2.2指针强制转换13
1.3函数调用和局部变量15
1.3.1计算指令中的跳转地址15
1.3.2返回故乡的准备16
1.3.3给函数传递参数17
1.3.4函数获取参数18
1.3.5局部变量20
1.3.6返回故乡20
1.3.7返回点什么23
1.3.8扫尾工作28
1.3.9调用惯例30
1.3.10函数指针31
1.4数组、结构体34
1.4.1数组34
1.4.2结构体35
1.5无法沟通——对齐的错误37
1.5.1结构体对齐37
1.5.2无法沟通41
1.6 switch语句的思考44
1.6.1 switch机制探索45
1.6.2 switch语句一定比if-else语句快吗50
1.6.3 switch的再次优化50
1.7关于其他高级语言要素的反汇编学习54
1.8全局变量的疑问——重定位和程序结构54
1.8.1独一无二的全局变量54
1.8.2不变的地址和重定位56
1.8.3动态链接库中的重定位64
1.9汇编的学习之路——阅读RTL68
1.10程序设置说明76
习题176
第2章庖丁解“码”:底层的力量与乐趣79
2.1解密之hello world80
2.2奇怪的死循环83
2.3我们都犯过的错——指针的指针85
2.4互通的障碍(跨语种调用)87
2.5错误的目的地90
2.6网络发送出错了91
2.7为什么代码运行完毕却出错93
2.8失效的管道96
2.8.1管道的力量97
2.8.2我要控制Telnet客户端101
2.8.3不是所有管道都可抽象等价101
2.8.4一动不动的48小时103
2.9异常世界历险记112
2.9.1学习基础概念112
2.9.2如何返回113
2.9.3那些状态保存到哪里了117
2.9.4意外的秘密120
习题2127
第3章成长:与程序一起茁壮131
3.1初写系统132
3.1.1代码风格132
3.1.2常量133
3.1.3最简单的电话簿(1):功能设计和相关库函数学习134
3.1.4最简单的电话簿(2):系统实现,分割函数141
3.1.5空字符结尾串的警觉143
3.1.6让程序更有组织性144
3.2有序的世界:可测试与可跟踪的系统146
3.2.1电话簿扩展(1):硬盘结构体数组146
3.2.2指针的陷阱148
3.2.3动态数组149
3.2.4变化的压力与出路:重构、单元测试和日志151
3.2.5电话簿扩展(2):可测试的恩赐155
3.3优雅的积木155
3.3.1可复用硬盘数组155
3.3.2分享它(1):理解编译链接过程161
3.3.3分享它(2):我的丑陋链接器167
3.3.4分享它(3):静态链接库173
3.3.5分享它(4):动态链接库175
3.3.6搭积木的艺术178
习题3182
第4章让我们创造面向对象语言吧185
4.1“封装”数据函数合一,陈仓暗度this传递186
4.1.1那些讨厌的事186
4.1.2像芯片一样工作(1):数据合一187
4.1.3像芯片一样工作(2):行为与数据合一188
4.1.4不想让你传递“自己”189
4.1.5创造吧,新的语言190
4.1.6是这样吗?我们需要证明191
4.2太麻烦了,需要更简单的创造与销毁194
4.2.1创造构造函数和析构函数194
4.2.2构造中分配资源,析构中释放资源197
4.3对比C语言的“对象”和面向对象199
4.4体验封装的力量201
4.4.1生死原点,整体资源管理201
4.4.2文件流203
4.5整体资源管理的爱恨204
4.5.1扩展技巧:保证成对出现,巧妙的自动线程锁204
4.5.2美丽的幻影:不可靠的自动析构205
4.5.3隐藏的敌人:不请而至的析构和拷贝构造206
4.6封装之强化:内外之别,亲疏之分209
4.6.1私有的诞生209
4.6.2私有?阻止不了我210
4.6.3理解继承的机制(1):模型211
4.6.4理解继承的机制(2):在C语言中“玩”继承214
4.6.5保护的诞生218
4.7“变”的烦恼与出路:创造虚函数218
4.7.1“三变”之苦:格式化字符串218
4.7.2函数指针,请带我走出不断修改的泥潭220
4.7.3再进一步:做成对象221
4.7.4我们需要性能更好的版本223
4.7.5我们需要新语法,创造虚函数吧225
4.7.6验证虚表机制(1):反汇编分析226
4.7.7验证虚表机制(2):直接用虚表来调用虚函数227
4.8虚函数的那些事儿227
4.8.1理解“=”227
4.8.2纯虚函数,从DLL导入对象230
4.8.3 C语言实现虚函数231
4.8.4魂归何处:析构之“虚”232
4.8.5理解运行期类型判断dynamic_cast232
49静态覆盖235
4.10静态与非静态成员函数的区别235
4.11遥远的风景:管窥.NET对象235
习题4236
第5章底层与抽象的混沌:一个跨平台线程类的封装、错误与进化239
5.1先学习多线程编程吧240
5.1.1概念240
5.1.2 Windows下的线程接口240
5.1.3第一个线程程序242
5.1.4那些复杂的参数和bug243
5.2简单、重用,让我们构造线程类吧247
5.2.1无赖的尝试,原来是它——static248
5.2.2可爱的virtual和可恨的this249
5.2.3私有、保护、公有、只读、纯虚函数,一个都不能少251
5.2.4析构中释放资源252
5.2.5我们发现了一个设计模式252
5.2.6我关心,你通知——我们的第二个设计模式253
5.3跨平台的线程设计255
5.3.1讨厌的Linux版本255
5.3.2源代码跨平台技术256
5.3.3跨平台的版本257
5.4崩溃,哪里出错了262
5.4.1寻找错误262
5.4.2 C++下整体资源管理的反思265
5.4.3生生死死虚表误,剥离策略世界殊——重生267
习题5268
第6章插件养成记271
6.1一个修改已有功能的实例272
6.2一个可以动态添加功能的简单实例273
6.3一个可以动态添加功能的复杂实例276
6.4从函数到插件对象280
6.5 delete的灾难:谁的书283
6.5.1释放内存的崩溃283
6.5.2解决之道:新生活,各管各288
习题6291
第7章天堂的阶梯293
7.1遥望天堂,那些美丽与简洁我向往294
7.2从最基础开始吧,SDK编写窗体程序295
7.2.1 hello window和基本原理295
7.2.2来个复杂点的窗体程序298
7.3构建我的GUI组件(1):简单组件300
7.4构建我的GUI组件(2):天堂的机器码跳板304
7.4.1调试,我要看清你304
7.4.2我们的自定位代码313
7.4.3自定位代码版Button类314
7.4.4自定位代码版Form类315
7.4.5为什么不错呢316
7.5构建我的GUI组件(3):更多的组件317
7.6天堂阶梯,玩赏框架那如花散落的繁复与如索串珠的简洁之美319
7.7构建我的GUI组件(4):我的天堂326
7.8天堂一瞥330
习题7332