《老"码"识途:从机器码到框架的系统观逆向修炼之路》以逆向反汇编为线索,自底向上,从探索者的角度,原生态地刻画了对系统机制的学习,以及相关问题的猜测、追踪和解决过程,展现了系统级思维方式的淬炼方法。该思维方式是架构师应具备的一种重要素质。《老"码"识途:从机器码到框架的系统观逆向修炼之路》内容涉及反汇编、底层调试、链接、加载、钩子、异常处理、测试驱动开发、对象模型和机制、线程类封装、跨平台技术、插件框架、设计模式、GUI框架设计等。
第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 汇编的学习之路——阅读RTL 68
1.10 程序设置说明 76
习题1 76
第2章 庖丁解“码”:底层的力量与乐趣 79
2.1 解密之hello world 80
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
习题2 127
第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
习 题 3 182
第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_cast 232
4.9 静态覆盖 235
4.10 静态与非静态成员函数的区别 235
4.11 遥远的风景:管窥 .NET对象 235
习题4 236
第5章 底层与抽象的混沌:一个跨平台线程类的封装、错误与进化 239
5.1 先学习多线程编程吧 240
5.1.1 概念 240
5.1.2 Windows下的线程接口 240
5.1.3 第一个线程程序 242
5.1.4 那些复杂的参数和bug 243
5.2 简单、重用,让我们构造线程类吧 247
5.2.1 无赖的尝试,原来是它——static 248
5.2.2 可爱的virtual和可恨的this 249
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
习题5 268
第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
习题6 291
第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
习题7 332
《素描800例,一本就够》内容简介:本书提供了动物、静物、植物、食物、人物、交通、建筑、风景等类别中的131种事物,共计867幅图例
《文化的江山01:文化中国的来源》内容简介:公元前4000—前2500年,彩陶和玉器时代,孕育出文化中国。8000年前的全新世大暖期开启
《计算机主板维修不是事儿(第2版)》内容简介:本书是计算机主板芯片级维修的技术指导参考书,从电路基础、电路工作原理到维修思路
《情绪自控》内容简介:10个经典又各具风采的女性,10种常见又容易失控的情绪 《情商是什么》作者李筱懿多年沉淀,用心理学知识教你
Geomagic Studio逆向工程技术及应用-(含光盘) 本书特色 《Geomagic Studio逆向工程技术及应用》是由清华大学出版社出版的。Geoma...
智能家庭物联网系统 本书特色 本书以实际开发出来的智能家庭物联网系统为例,全面系统地介绍了智能家庭物联网系统的分层架构,包括家电数据采集与传感控制层、网络传输及...
《了不起的王德妙:消防安全篇2》内容简介:本套丛书以漫画故事小贴士相结合的形式呈现,本书讲述消防安全知识。书中内容取自于隔壁
《赢家智慧》内容简介:本书是庄恩岳先生的最新力作。在本书中,作者结合亲身管理实践经验及大量鲜活的案例,将自己在工作与生活中
《毛福轩 蔡寿民传》内容简介:本书为烈士毛福轩、蔡寿民的合传。毛福轩是第一届中共韶山特别支部最早的五位成员之一,早年跟随毛泽
《淘宝美工店铺装修实战宝典》内容简介:《淘宝美工店铺装修实战宝典:Photoshop+Dreamweaver》由经验丰富的设计师编写,采用循序渐
GPS与ArcGIS基础与实践(第3版) 内容简介 本书是全球定位系统(gps)和地理信息系统(gis)方面的一本难得的入门书,它将基本原理与实践操作紧密...
《百年求索:演进与跃迁》内容简介:书稿内容来自2019年春节在北京中法大学旧址举办的中华优秀传统文化进入山东地方必修课程研讨对
《Head First Go语言程序设计》内容简介:Go是为高性能网络和多处理而设计的,但与python和javascript一样,该语言易于阅读和使用。
网络共和国 本书特色 东方编译所译丛。 科技的发展越来越展现出双刃剑的特征,凯斯·桑斯坦在本书中即探讨了网络对个人行为以及整个社会的影响:信息随时获取同时带来“...
本书深刻且通俗地揭示JavaWeb开发内幕,使您由内而外地明白使用Java进行Web应用开发的全过程——从XML基础知识到HTTP详述及相关体
《犹太人智慧书》内容简介:本书对《塔木德》《财箴》和《诺未门》中浩如烟海的智慧进行了归纳和总结,将其分为四个类别:经商智慧
设计并不是凭空产生的。本书始于对构成设计的所有要点的探究,包括经济、伦理道德、技术以及其他艺术领域的理论与发展。它审视了
本书通过大量的实际开发应用实例阐述Python语言的基础知识,介绍如何使用计算机进行问题求解、结构化编程以及面向对象编程。本书
《胡须爷爷讲《论语》》内容简介:丫丫是一个可爱的8岁女孩,她喜欢新奇有趣的事物,但面对艰辛的学习,存在畏难情绪。在生日会上,
WEB+DBPRESS是日本主流的计算机技术杂志,旨在帮助程序员更实时、深入地了解前沿技术,扩大视野,提升技能。内容侧重于Web开发的