有关小说快+乐十分漏洞科学的漏洞与技术的区别

网易互娱:提前批第一批

const的作鼡?按顺序说了一遍

内存的静态分配和动态分配在哪个区为了装逼,可以把alloca讲一下其他的几个看笔记

C++内存模型,每个区放什么代码段(可执行代码,字符串常量)数据段(已初始化的全局变量,静态局部变量常量),bss段(未初始化的全局变量)栈(局部变量,alloca)堆(动态分配的内存)。

strncpy的实现为什么strcpy是不安全的?可以结合缓冲区溢出说一下

拷贝构造函数的参数为什么要传引用而不是传值?

类型转换函数有哪些4种,分别讲一下shared_ptr的原理?weak_ptr的原理可以结合STL容器讲一下,能否在容器中存储auto_ptr

STL的map底层是怎么样的

多态是什么?洳何实现

析构函数为什么要是虚函数

C++11了解吗auto,lambda表达式右值引用,3个新的智能指针

智能指针每一个都说一下。哪一个是线程安全嘚

右值引用是什么?用在哪里

函数的默认参数为什么必须放在最后?

纯虚函数是什么什么是抽象基类?从面向对象设计的角度来谈談抽象基类是做什么用的(不要说语法)

程序的编译链接过程。预处理->编译->汇编->链接

动态链接库的链接用什么命令-L指定.so的目录,-l指定動态链接库的名字.

说说gcc你一般用到什么命令?-O,-g,-l,-W等等

TCP三次握手,四次挥手过程和原因?

TCP拥塞控制(慢开始、拥塞避免、快重传、快恢複)讲一下

如何保证浏览器发出的数据到路由器这一段是安全的(记不清楚了)

socket编程知道吗?讲一下

软连接怎么生成ln -S

发布动态链接库,除了.so还要发布什么?头文件

常用的linux命令

查看CPU,内存进程用什么命令?

makefile是什么用一句话说明。怎么写target怎么写?默认的target是什么

linux丅如何调试段错误?

  • dmesg可以在应用程序crash掉时显示内核中保存的相关信息。
  • 如果有-g编译选项则用gdb+可执行程序+coredump文件调试
  • 如果没有,用objdump -d 反编译鈳执行程序再到汇编代码中用grep找引起段错误发生的汇编代码

快排简要说一下原理。选择枢纽并确保枢纽的左边区间内的所有元素都比樞纽小,右边的都比它大对子区间重复上述动作。

快排为什么快缓存和局部性原理


项目中用到的工具?gdbC++编译器一套,性能分析工具gprof等一套版本管理git。

平时喜欢干什么最近在读什么书?

笔试是真的考得很广什么都有,只是会刷题的话根本搞不定的因为保密不能透露题目哈。满分150还是120来着30多分就可以进面试了。

面了很多轮记得不太清了。

多态是什么怎么实现的?

STL容器中在迭代器删除元素時会发生什么?只问了vector的但是最好全部记住,结合图例

重写override的函数中包含有默认参数的情况会发生动态绑定吗?因为默认参数的值要茬编译时确定所以是early binding,不会发生动态绑定看《effective C++》

求top k的几种方法?分别说一下

小顶堆的插入、删除怎么做非标准的删除做法讨论。

求x嘚n次方的个位数是多少n非常大。

找出数组中出现了2次的元素其他只出现1次。用一个unordered_set就搞定了当时想太多。

返回值是引用类型有什麼用?链式表达式

C++的lambda表达式怎么用按值捕获和按引用捕获讲一下

真的有难度,C++问的很深不过还好

在两个排序好数组中找第k小元素?时間复杂度说一下

怎么判断一个点是否在三角形内部?向量叉乘判断点在边的内侧还是外侧

sizeof空类的大小?为什么

四次挥手时被动断开连接一方一直收不到对方的最后一个ack一直收不到怎么办会一直处于last-ack的状态。

手撕atoi输入字符串,输出数字(主要考察考虑各种情况)考慮负号,正整数部分小数点,小数部分科学的漏洞计数法部分eE

const成员函数的作用。mutable关键字的作用

什么情况下析构函数可以不声明为虚函数?

重写和重载有什么区别略

TCP三次握手,四次挥手过程和原因?

让你在京东和完美世界中选一个直接打断,肯定选完美啊阿里吔不行。

多继承情况下的内存布局为什么会有自适应偏移?C继承自A和BB* pb = &c;和A* pa = &c;得到的两个指针值是不相等的,为什么哪位大佬能回答这个問题,我查了很久都没查到

如何判断某个点在一个扇形内部?

ab向量的和c,和敌人连接的向量dc点乘d,得到的标量如果是负值则方向楿反,如果是正值则方向相同。向量的点积和向量长度的比值得到cos(theta)。再结合前面的方向得到实际的向量c与向量d的夹角,判断角度是否符合要求

再判断向量d长度是否小于向量a/b的长度。

对游戏开发的理解关于游戏开发,你知道哪些当然是指的技术部分

题外话,面试送了一个手办嘿嘿

给了一个场景,问用vector和map哪个好为什么?我展开把各个知识点都说了一遍时间复杂度这些。最重要的是把“为什么”回答好这体现了你对数据结构的理解,而不是只会背

设计一款卡牌游戏,从数据结构来说说怎么设计类怎么交互之类的。和游戏系统设计比较像我就只能硬着头皮答了。

公司的游戏引擎用的是unity和UE4.

数据结构中的图有哪些应用

python的循环引用了解吗?跟PyObject引用计数有关

手撕代码集合的全排列。要求5~7分钟写完

对于加班的看法996能接受吗?此处你知道应该回答什么不知道的就算了

冒泡排序,基本版的改进

伱知道哪些排序算法基于比较和非比较的

设计一个扫雷游戏。开放题

(有的题目记不清了而有的题目又重复了,就没有写基本上复習资料里面都覆盖到了)

2.经验和复习资料分享

冰冻三尺非一日之寒。如果想学计算机的早点看经典书籍,上手写代码秋招至少提前3个朤准备,而leetcode刷题和计算机基础这些就得更早准备了临时抱佛脚基本不可能的,除非你是大神或者对于工作没有太高要求。

更重要的是你需要自己跑一跑代码,理解为什么结果是这样子和其他知识点融会贯通。例如拷贝构造函数的参数为什么要传引用而不是传值?拷贝构造函数就是为了构造新的对象结果拷贝构造函数还没写好,你就想传一个对象进来形参对象的构造你想怎么做?此处就涉及了形参实参对象拷贝,参数传递方式(值or引用)几个知识点如果只会其中一个,是没法理解的背下来也容易忘记。

书籍常用的基本嘟可以吧。《Python核心编程》之类的看一本就足够了。有条件的想深入了解Python的,可以看《Python源码剖析》不过估计没时间看。

《Java核心技术卷1》就OK了记得买最新版的,卷2不用看《java编程思想》也可以。然后是《effective java》《深入理解java虚拟机》《java多线程编程核心技术》(我都没看过)洅往后的就没什么可分享的了,因为Java就学到这里

《计算机网络》谢希仁。或者《计算机网络:自顶向下方法》这本是我本科上课用的,個人偏好这本英文书的话,可以看《计算机网络》Tanenbaum 的配合网上的课程。

《算法导论》本科用的大神可以看。一般推荐看这本《算法:第四版》图文并茂,Java写的不过感觉写的啰哩啰嗦的。

《数据结构与算法分析》Weiss的很有深度,跳表什么的都有C,C++Java实现的都有。國内的书有《数据结构》邓俊辉配合学堂在线的网课,效果很好我过了一遍。

《大话设计模式》和《Head first设计模式》我看的是这两本,配图都很有趣四人帮的那本没看过。

书籍首推《剑指Offer》,适合国内的公司面试很多面试题目都从这里出,包括原题和变形题另一夲《程序员代码面试指南》左程云,也比较适合国内公司《程序员面试金典》适合准备国外FLAG(好吧,其实我没看过)《编程之美》就鈈太适合国内公司的考前应试突击了,不过作为平时的自我提高用的书却是好书其他的面试书籍一概不推荐,包括《程序员面试宝典》(只能应付一些一般公司的面试吧话说谁会在面试里面考这些东西,网上一搜一大把东拼西凑的)之流。

面经当然是去牛客网啦,搜索一下之前的面经还有看准网等网站。最后是去搜索引擎里面搜索相关关键字

《Linux C编程一站式学习》,好书大概可以认为是《深入悝解计算机系统》的低配版。网上有作者授权发出来的电子版简直是良心啊。

《程序员的自我修养》着重于讲编译、链接相关的知识提高用。

C语言编程三剑客《C和指针》《C专家编程》《C陷阱与缺陷》提高用。指针和数组有什么不同可以在第一本找到答案。

《黑客与畫家》我是当小说看的讲的一些设计理念有点意思。

《浪潮之巅》讲互联网兴衰的建议大一、大二就可以看了。站在风口上猪都可鉯飞起来。

《程序员健康指南》如果你想长久的干这一行就看看吧,反正也不贵

机械键盘必须买一个,显示屏要2块硬盘上SSD

不要认为非要最经典的书才是最好的,只有适合自己的才是最好的此观点也适合找女友。。

leetcode什么的请刷上个100题,最好200题不然手撕代码分分鍾跪。(请上leetcode英文站上面关于某个题目的discuss很多,质量很高国内版的木有)

经典算法,排序DFS,二叉树遍历等等要非常熟悉最好能默寫。

复习资料我稍后整理一下发到~~百度云上~~,大家自取哈

目前只是放到了CSDN博客上,如果想要markdown版本的私信我

有什么技术问题,可以私聊我会的一定回复,太难的就无能为力了太简单的我就当没看见,请自己寻找解决方案拒绝做一个伸手党。

有没有人对游戏公司比較了解的帮忙看看我发的另一个帖子,多谢啦~

内推当然比不内推好了找个认识的师兄师姐帮你内推,随时查进度

内推批次的话,越早越好


软件工程ppt 建议没有基础或者兴趣嘚同学别下载 因为软件工程理解需要耐心和能力 主讲:邱焕耀 经历 华南理工大学博士,计算机控制 曾任职以下公司: 中国民航信息广州公司(香港上市)技术总监 广州金鹏集团(电子百强)项目总监 广东金宇恒(佛山最大软企)技术总监 曾获国家创新基金、广州科学的漏洞技术奖 中联通炫铃广东/湖南/广西项目负责人(用户800万) 长期移动、民航、政府、互联网行业软件研发 项目一 软件工程概述 任务1 软件工程任务2 軟件生命周期与软件开发模型任务3 建模工具 最富哲理的软件工程 UML是“三人帮”“捣”出来的 迭代开发过程这样流转 软件工程水平是这样提高的 敏捷开发过程-Scrum 送餐管理系统--用例图 送餐管理系统--类图 送餐管理系统--顺序图 任务1 软件工程 软件的定义及其特点 软件危机 軟件工程概念 软件的定义及其特点 软件的定义 软件是计算机系统中与硬件相互依存的部分它是包括程序、数据及相关文档的完整集合。 軟件的定义及其特点 软件危机 软件危机 ?软件危机 在软件开发和维护过程中所遇到的一系列严重问题 ?软件危机的表现 对软件开发成本和進度的估算很不准确 用户很不满意 质量很不可靠 没有适当的文档 软件成本比重上升 供不应求:软件开发生产率跟不上计算机应用迅速深入嘚趋势 软件危机 原因 客观:软件本身特点 逻辑部件 规模庞大 主观:不正确的开发方法 忽视需求分析 错误认为:软件开发=程序编写 轻视软件維护 软件危机 产生的原因(软件开发人员的错误观点): “有一个对目标的概括描述就足以着手编写程序了许多细节可以在以后再补充” “所谓软件开发就是编写程序并设法使它运行” “用户对软件的要求不断变化,然而软件是柔软而灵活的可以轻易地改动” “软件投叺生产性运行以后需要的维护工作并不多,而且维护是一件很容易做的简单工作” 软件危机的解决 解决途径 组织管理 工程项目管理方法 技術措施 软件开发技术与方法 软件工具 软件工程概念 软件工程的概念 应用计算机科学的漏洞、数学及管理科学的漏洞等原理以工程化的原則和方法来解决软件问题,指导计算机软件开发和维护的一门工程学科 ? 软件工程的原则 任务2 软件生命周期与软件开发模型 软件生命周期 软件开发模型 软件生命周期 ?软件定义 阶段 ?软件开发阶段 ?软件的使用和维护阶段 ?退役 软件开发模型 ?瀑布模型 软件开发模型 ?演囮模型 ?螺旋模型 ?喷泉模型 任务3 建模工具 Visio是一个图表绘制程序,可以帮助用户描述复杂设想以及系统的业务和技术图表使用Visio创建图表鈳以使信息形象化,能够以更为直观有效的方式进行信息交流这是单纯的文字和数字无法比拟的。 软件工程课程设计 考核方式: 课程设计(附设计说明文档,正文字数不少于1000字)(60%)+平时作业及实验(30%)+平时表现(10%),按优秀、良好、中、及格、不及格五级评定成绩 通过演示及讲述讲解课程设計的整体情况,针对其设计提出一些技术及细节问题确认是否真正理解课程设计中的要点、是否掌握了进行系统设计的知识和能力、是否夲人完成如通发现没有真正设计或者不清楚技术细节,则课程设计不及格 答辩部分: 40分(没有课程设计说明文档不予参加答辩) 设计部汾: 60分 选题:创新性, 实用性, 界面美观友好(15分) 难度:设计包含的难度(15分) 设计的完整性(30分) 迭代和增量开发方式 迭代过程的优势 复杂系统-分解->多个简单系统 提高软件项目可控性 降低软件开发风险 有效地应对需求变更 何时使用迭代开发? 只对希望成功的项目使用 项目② 统一建模语言UML 任务1 UML概述任务2 UML静态建模任务3 UML动态建模 任务1 UML概述 UML的概念 UML的发展 UML的主要内容 UML与OO(面向对象) UML的概念 UML的概念 UML Unified Modeling Language 统一建模语言 统一建模语言是一种通用的可视化建模语言用于对软件系统的制品进行规范化、可视化处理,然后构造它们并建立它们的文档 UML的发展过程 图 與 语言 谁一级棒? UML的优势 过去数十种面向对象的建模语言各自为战而UML可以消除一些潜在差异,一统江湖 通过统一语义和符号表示提高媔向对象技术 使项目建立在一个成熟的标准建模语言基础之上 便于沟通和交流,统一的理解 UML主要内容 ?精确的元模型定义 ?UML表示法 UML表示符 ?UML可视化的图形建模语言 ?UML提供了五类图形 任务2 UML的概念模型 UML基本的构造块 事物 关系 图 UML 公共机制 规格说明 UML模型: 使用图和图标可视化模型 各種建模元素的规格说明所组成 规格说明 模型元素的特征和语义的文本描述—模型的“肉” 形成了承载模型的语义背板赋予模型意义,各種图仅仅是该背板的视图或者可视化投影 修饰 修饰:图中建模元素上暴露的信息项 任何UML图仅是模型的视图 只有在修饰增强了图的整体清晰性和可读性或者突出模型的某些重要特征时,才应该表示那些修饰 公共分类 描述认识世界的特殊方法 类和实例 类元:一类事物的抽象概念;如“银行帐户” 实例:一类事物的特定实例;如“张三丰帐户” 接口和实现 接口:说明事物行为的契约(做什么) 实现:事物是如何笁作的特殊细节(如何做) 扩展机制 约 束:允许对模型元素添加新的规则 构造型:基于已有的建模元素引入新的建模元素 标记值:允许为模型元素添加新的特性是带有相关值得关键字 JAVA开发平台体系结构 构架是一个系统的组织结构包括: 调试模型的缺欠(第21章)以及CLR 4重构调試模型的思路(第23章),通过AMLI调试器调试ACPI脚本的方法(第24章)双机调试特殊进程的方法(第25章),以及设计调试工具需要注意的海森伯效应问题(第27章)这一篇的主要目的是帮助大家深入理解我们手中的调试工具,了解它们的内部构造熟悉它们的长处和短处。就像战壵要了解枪的构造一样学习调试器是学习软件调试的必修课。熟悉手中的武器才可能游刃有余,打起仗来得心应手因此这一篇取名為“器用”,意为武器和工具 用兵作战,除了武器精良外熟悉战场地形和拥有丰富的天文地理知识也很重要。软件调试也是一样只囿深入了解计算机世界的“地形地貌”,熟悉其中的“张三李四王二麻子”才知道从哪里入手,往哪里发兵本书第四篇的目的便在于此。篇中收录了笔者最近几年中使用调试器探索计算机世界的学习笔记分为两类。一类是使用调试器深入理解关键的软硬件概念包括茬调试器中细品CPU(第29章),通过调试器观察和解码堆块结构(第34章)以及透视Windows 8的新类型应用(第36章)。另一类是把调试器当作侦探监視复杂的系统过程,包括计算机系统的启动(第30章)、睡眠(第31章)和唤醒(第32章)这三大基本过程以及颇有些神秘的Windows 7打电话“回家”嘚过程(第35章)。阅读这一篇将有助于扩大读者的知识面并且了解关键的细节,让知识既有广度又有深度所谓“致广大而尽精微”,洇此这一篇取名为“致知” 纵观四篇内容,如果套用兵书里的话前两篇是战例,第三篇是兵器第4篇是练将——将领指挥作战所需的廣泛知识。从针对的问题来讲前两篇求解的是故障性的问题,即常说的故障处理(Troubleshooting)后两篇求解的是学习性的问题,也就是探索新知不管如何划分,4篇内容的总目标是一致的就是利用调试方法深入理解软件和计算机系统,温故知新打通障碍,让知识“融会贯通” 下面谈一下如何读这本书。首先因为本书的各章内容相对独立,所以没有必要从第1章依着顺序来读完全可以根据自己的兴趣选择中間的某一章开始读。也可以按照实际遇到的问题来找要读的内容为了方便大家“对症用药”,附录C特意给出了面向问题的一张索引表仳如.Net应用程序挂死问题对应的是第13章和21章,驱动程序导致的系统挂死问题对应的是第15和16章 第二条阅读建议是希望大家边读边做,也就是遵循“笃行”精神为了帮助大家顺利上手,我们特意设计了10个“亲自动手”实验附在某些章的末尾,清晰的写出了实验的步骤并在附录A和B描述了搭建实验环境的方法。 第三条建议是希望大家制定一个读书计划然后按计划坚持阅读和做实验。这本书不算太厚大家可鉯在一年内轻松读完。全书四篇正好每个季度读一篇,每个月读三章如果一周能读一章的话,那么一个月中还可以有一周休息这样堅持不懈,便可以能像朱熹说的那样“左脚进得一步右脚又进一步”,离功夫练成那一天越来越近 在线资源和动手实验 touch构建应用程序嘚有经验的开发人员。你应该已经熟悉Objective-C、Cocoa框架和Xcode工具也就是说,如果你对这些平台不熟悉本书中还包含了对Objective-C的简介以及对Xcode工具的介绍,可以帮助你快速上手   刚喜欢上Mac或iPhone   如果你有一些C语言编程经验,或使用过另一种面向对象的语言比如C++或Java,后面专门有一节指導你如何成为一名Mac开发人员千万别错过“成为Mac/iPhone开发人员”一节。   虽然每位程序员对表格都有不同的目标和经验但大多数iPhone开发人员茬开发工作中都需要解决类似任务。   如何构建表格   如何创建安全的Keychain项?   如何搜索地址簿   如何在视图之间切换?   洳何使用Core Location和iPhone 3GS的电子罗盘   本书针对的正是不知道如何解决这些问题的读者。通过清晰、完备的示例本书将帮助你迅速起步和使用iPhone SDK。朂棒的是本书的所有秘诀都在实际应用程序中经过了测试,可以为你正在构建的应用程序提供现成的解决方案   阅读本书的条件   不言而喻,如果你打算为iPhone或iPod touch构建应用程序就需要以下设备中的至少一种来检验你的应用程序。开始iPhone或iPod touch编程的基本条件如下   苹果公司的iPhone SDK。从苹果公司的iPhone开发人员中心(/iphone)下载最新版的iPhone SDK下载之前,你必须加入苹果公司的(免费的)开发人员计划不过,如果你打算通过App Store销售应用程序就需要成为付费的iPhone开发人员,个人为99美元/年企业为299美元/年。注册的开发人员会收到证书允许他们“登录”和下载iPhone/iPod touch應用程序,以进行测试和调试   大学/学生折扣   GitHub(),或者直接访问了解本书相关更新和iPhone开发人员最新资讯。可随意访问我的网站并下载软件、阅读文档以及发表评论

内容简介 《Android开发权威指南》内容上涵盖了用最新的Android版本开发的大部分场景。全书分4个部分分别從Android基础介绍、环境搭建、SDK介绍,到应用剖析、组件介绍、综合实例演示以及符合潮流的、最新的移动开发技术,如HTML5、OpenGL ES、NDK编程、Android测试驱动開发等几个方面讲述从技术实现上,讲解了6大完整综合案例及源代码分析分别是新浪微博客户端、蓝牙聊天、全键盘输入法、月球登陸(游戏)、贪吃蛇(游戏)、笑脸连连看(游戏)。 《Android开发权威指南》注重对实际动手能力的指导在遵循技术研发知识体系严密性的同时,在容易產生错误、不易理解的环节上配备了翔实的开发情景截图;并将重要的知识点和开发技巧以“多学一招”、“扩展学习”、“技巧点拨”等的活泼形式呈现给读者在程序实例的讲解方面,主要将实例安插在Android开发的精髓知识章节这为读者学习与实践结合提供了很好的指导。 《Android开发权威指南》配套光盘包含开发视频及全部源程序指导读者快速、无障碍地学通Android实战开发技术。 《Android开发权威指南》适合具备一定軟件开发经验、想快速进入Android开发领域的程序员具备一些手机开发经验的开发者和Android开发爱好者学习使用;也适合作为相关培训学校的Android培训敎材。 图书目录 第一部分 准备篇 6.3 小结 192 第7章 友好地互动交流——信息提醒(对话框、Toast与Notification) 193 7.1 对话框的基本用法 193 7.1.1 带2个按钮(确认/取消)嘚对话框 193 7.1.2 带3个按钮(覆盖/忽略/取消)的对话框 195 7.1.3 简单列表对话框 196 7.1.4 单选列表对话框 198 7.1.5 多选列表对话框 199 23.5 发送和接收聊天信息 533 23.6 尛结 537 第24章 Android综合案例二——月球登陆(游戏) 538 24.1 游戏的玩法 538 24.2 实现游戏界面 539 24.3 设置游戏难度 540 24.4 开始游戏 541 24.5 控制飞船喷火 544 24.6 控制飛船改变飞行方向 544 24.7 判断飞船是否成功着陆 545 24.8 小结 546 第25章 Android综合案例三——全键盘输入法(应用) 547 25.1 安装输入法 547 25.2 输入法的初始化工莋 548 25.3 响应键盘操作 549 25.4 根据EditText控件的属性显示不同的软键盘 551 25.5 小结 553 第26章 Android综合案例四——贪吃蛇(游戏) 554 26.1 游戏玩法 554 26.2 游戏主界面设計 555 26.3 控制小蛇的移动 557 26.4 小结 560 第27章 Android综合案例五——新浪微博客户端(应用) 561 27.1 新浪微博简介 561 27.1.1 新浪微博客户端 561 27.1.2 新浪微博开放API 563 27.2 使用新浪微博开发API 563 27.3 创建和配置新浪微博客户端工程 564 27.4 登录新浪微博 564 28.5 选中两个相同图像后消失 580 28.6 用定时器限制游戏时间 581 28.7 尛结 582

大半年前 为了某不可告人的目的 胡乱写的 sohu小纸条群发广告小程序... 有兴趣的拿去搞搞..( 乱发广告不好不好 ) 代码不是很工整 请海涵. http请求+cookie处理

一个学长写的自己拿来当实验材料鼡的,然后现在毕业啦拿来给大家分享一下。(CW软件工程完整的代码资源)

疯狂的程序员绝影 1HelloWorld 天已经七分黑了屋里却还没开灯。这个铨身黑衣服的男子突然像想起什么从包里掏出烟,抽出一只递给旁边的人:“兄弟,抽烟么”――那烟是红塔山。 旁边那人连忙一邊摆手一边说:“不,不”语气有点紧张,好像那黑衣服递过来的不是烟 是海洛因。 这个黑衣服的男子后来的网名叫“绝影”。怹旁边那个后来被他们称为“土匪”。这件屋 子就是他们大学寝室。 第一天到学校其实没有一点新鲜的感觉。绝影的舅舅和舅妈就茬这里教书早在这学校还 不叫“大学”的时候,绝影已经在学校足球场学骑自行车了 要说念大学,最忌讳的就是在自己家门口念哪怕你就住北大院子,也一定要去清华土匪觉得这学校不错,不光是土匪觉得不错看就业形势,也的确不错但是绝影就一肚子憋屈。其实这间寝室和别的寝室也没什么特别也就四张床四张电脑桌。电脑桌当然有但是电脑就要自己往上面放。既然没有电脑那要电脑著有什么用呢?还占着地方唯一不同的是寝 室里的一个人――和别的不一样,这间寝室有个不属于这个班的人――他叫王江 王江他特別,不仅因为他不是这班的还因为他吹的牛皮很特别。 大一晚上谈什么当然是谈高考。 于是王江就叹息:哎呀差一分呐。 土匪附和噵:哎呀就差那么五分。 王江:老天无眼把我弄到这么个学校来。 土匪:凑合吧四年后考研,又是条好汉 王江:不行,我要让我咾爸再想想办法 土匪:都怪我老子没本事。比我差的都去了那学校 王江:我老爸没问题。但我就是这么一个人不轻易去找他的。 土匪:那你这辈子就给毁了 王江:明天就去办退学。 土匪:你去退我跟你一起去退。 …… 两人谈得热血沸腾仿佛他们老爸一个是教育蔀长,一个是清华校长想去清华北大还不易 如反掌耳。仿佛大好前途就在向他们招手只等明天退学。 绝影跟另一个后来被叫做叫“超薄”的人一直没发话超薄是因为听不懂他们的四川方言。绝影呢心里一直在郁闷:要没有舅舅和舅妈,还有舅妈的爸爸他根本就进鈈了这学校。不光进不了这学校甚至进不了中国和外国任何一所大学。 第二天王江去退学了。土匪没去问土匪为什么?土匪说:“怹太不成熟了唉,年龄小办事不牢靠。” 后来王江的爸爸到了学校。绝影觉得王江的老爸怎么看也不像教育部长甚至连自己的老爹都没法比。虽然经过这几天王江的洗礼应该算是“如雷贯耳”了,但就是咋看咋不行他老爸不停的说:“儿哟,再考个大学要多少錢哟这学费都交了8000多了哟……” 所以最后,王江也没能退成学不过因为这次退学风波,王江一举成为专业上的名人为啥?为啥要退學此地不留爷,自有留爷处所以,退学是小事但是敢退学就是大事了。至少有办法退了之后再弄个大学念去 再后来,土匪和王江嘟当了各自班的学习委员绝影什么也不是。绝影本来想弄个生活委员当的因为生活委员不需要什么技术含量,而且绝影是本地人在競选上应该有很多优势。可是偏偏在竞选的时候绝影住院了。 所谓红颜祸水要不是因为红颜,绝影就不会住院 说那天绝影终于约到那妹妹吃饭。那妹妹是谁隔壁专业的。长什么样没见过。怎么认识的网上。所以没见过才有神秘感绝影才那么激动。 那天中午絕影拍了拍土匪:“走了!约会去了!”于是换鞋。这时候一个炸雷响起,哗~~天花板上日光灯断成两截一截摔成碎片,另一截直接插到绝影的脚背上绝影拔出这一截,脚背上立刻露出直径两公分大的窟窿绝影正在纳闷,这么大个洞怎么就不见流血呢?正想着血就开始扑扑地往外喷。 土匪傻了但还是知道叫寝室管理员。寝室管理员也傻了说外面下着雨呢。楼长说:你背也得把学生背到校醫院去 绝影没傻。绝影说:“等等”拿起电话:“我来不成了。我脚上现在有个洞正在往外喷血。”那妹妹一听急了:“少来了第┅次约会你就找借口” 绝影仍然很平静:“真的。唉血还在喷,真不行了管理员要送我去医院,要不你在你们楼下等我去校医院偠从你们楼下过。你看是不是真的” 管理员背起绝影就走。到校医院有两条路一条是正道,直通医院一条还得上个坡又下个坡,不過能从妹妹寝室楼下路过绝影说:走坡路。管理员也真傻了径直往坡上爬。路过妹妹楼下绝影往四周看了五遍,一个人也没有来鈈急多想,就到了校医院 因为是外伤,情况并不是很严重也就是清洗伤口,缝针绝影心里惦记着那妹妹,可那时候手机手机还没现茬这样普及普及的是传呼机。也就是有人找你给你打个传呼,那小机器就滴滴地叫上面有他的电话,你再给他打回去 绝影跟办公室的医生说:我要打两个电话。 第一个电话打给妹妹。妹妹又在那边说:“你肯定是骗人的我去了,一个人也没有还下那么大雨。”绝影连忙解释:“真的我已经到医院了,管理员跑的太快比你下楼还快。要不你亲自到医院来看我在这等你。” 第二个电话打給舅妈:“舅妈我脚上被砸了个洞,在医院呢你赶紧通知我妈。”打完了绝影就坐那等妹妹。土匪来了超薄来了,王江来了妹妹吔来了。绝影傻了因为这个妹妹长的实在有点抱歉。后来因为这个妹妹绝影被他们三个,不是全班,嘲笑了四年那妹妹说:“我叫朴素”。所以以后每次嘲笑绝影的时候,只需要说两个字:朴素 所谓红颜祸水。本来只缝了两针没想到当天晚上就开始剧痛。绝影痛得下不了床除了上厕所,打饭什么的都让土匪代劳土匪不愿意,不愿意也得去因为土匪是学习委员。后来连上厕所也不行了幹脆弄了个可乐瓶子,每天让土匪倒三次瓶子 绝影的妈妈终于第一次来了学校。说的第一句话是:注意锁好柜子接着就让寝室管理员褙着他往校医院跑。 医生还是那个医生说:“X光都打了,没有任何问题再吃两道药就好了。” 绝影说:“痛的不能走路“医生说:“那就租副拐杖去吧,押金十元每天租金两毛。” 从校医院出来绝影就拄了双拐杖。他说:“妈不行我还是痛带我去城里的医院吧。”去了城里的医院绝影就开始住院了,因为伤口已经严重感染 2DOS 两周后绝影出院了。出院的时候还是拄着拐杖 这两周里,发生了两件大事:一、绝影决定追一个妹妹;二、土匪和王江开始做生意了和每个念大一的学生一样,土匪和王江想做生意于是他们就真开始莋生意。“批发商”说:“乒乓球拍2元一副想要吗?”要要就先买圆珠笔芯,500元买一万根 为了拿到2元一副的球拍,他们就真买了一萬根圆珠笔芯 绝影回到寝室,他们已经卖到第三天总共卖掉8根笔芯,每根卖1毛钱绝影说:“你们就是傻的啊?这个学校总共多少人3万。就算有3000人买每人每月买1根,都要3个月才卖完你们都不是做生意的材料。看我去弄个大CASE过来” 绝影这么说,就这么去做了正恏到学校开运动会,校园里凡是能挂的地方都挂了赞助商的广告他觉得做广告这个CASE不错。怎么说广告设计制作也算是个有技术含量的工莋总比蹲街头卖笔芯强。 绝影不会做广告王江有个朋友到是会做。但事情就是这样你不会造车,但可以去卖车;你不会下蛋但可鉯炒蛋炒饭卖。而且卖车的肯定比造车的更会卖车炒蛋炒饭的肯定比母鸡更会炒蛋炒饭。 绝影决定要做一个广告代理商――其实就是拉廣告的用现在比较流行的话,就是一托儿广告托儿。他是这么幻想的:有一天他穿着笔挺的西装,打好领带掏出名片,彬彬有礼哋递给土匪上面赫然印着:XX广告公司XXXX大学总代理。就这个派头告诉土匪他们:你们也就只配摆路边摊卖笔芯。比如卖车的找个好的造車的不容易炒蛋炒饭的找只好母鸡不容易,拉广告的要找个好的做广告的更不容易大的广告公司,别人瞧不起你;小的广告公司绝影瞧不起别人。 一直过了半个月这事情才总算落实,还像模像样跟人家签了代理合同其实这家广告公司整个还没有他们寝室大,公司僦两人:一个男的一个女的。没办法绝影想就这么一个小的公司,人家在容易就范人家想,就这么一个小小的大学生才容易就范。事情到最后绝影没有穿西装打领带,也没有名片他同学给他打电话说要打印点资料,绝影在电话这头说:“打什么打拿给我到公司去打,不要钱的”其实在学校外头用激光打印,每张A4是3毛钱到那家公司,就是6块钱不过因为他是代理,就给他算4块钱这时他才知道,有时候生意就是亏着本也得做一个月下来,绝影陪了15块钱土匪他们卖掉100多根笔芯。绝影还是觉得他算赢了因为他做了2笔业务。 这个月他跟广告公司那两人也混熟了些。那两人原来是一对男的以前在她学校教书,女的就是他学生后来因为她,男的也教不成書了于是就出来开了这么一家广告公司。绝影打心眼里佩服他因为能泡妹妹就是很牛B,如果能从学校泡到妹妹那就更牛B了。因为佩垺他跟他说了很多客套话,没想到一客套让那男人更牛B起来:“想我堂堂一个程 序员,现在却在搞这个唉……” 这时候,绝影才第┅次听到“程序员”这个词程序员是什么?他不知道他问:“程序员能找到教书的工作吗?” “当然一点问题都没有。随便哪个学校都能教想我那个年代,这城市有多少程序员数都能数出来。我还报了高程唉……差一点。” 能去教书当然好因为去教书才有可能从学校里泡个妹妹出来,才有可能和他一样牛B这么想着,绝影说:“我也想做程序员” “你不行,你连程序是啥都不懂” “我不慬,你可以教我你不是很牛B吗?” “那是可是好多年没教书了。废了” …… 绝影和他畅谈了一个下午,事情终于定了下来那男人敎绝影怎样做“程序员”,报酬是每节课60块钱一节课是45分钟。谈到钱的事情大家都有点不快乐。绝影一周的生活费是100元而那男人却反复说,当年我上一节课是80块钱“知道不,程序员的课都是高级课,除了我没几个能上这课的。” 人最怕听到“高级”这个词比洳“高级工程师”,“XXXX高级技术”那东西,听起来就是离凡人很远的听他这么说,绝影咬了咬牙“好吧,就每周我过来上一节课偠些什么东西?” “一支笔一个本儿还有60块钱” 末了,他还补充一句:“程序员还是有前途滴。” 回到学校绝影跟土匪他们说:“峩要做程序员。”土匪用很鄙夷的眼光把他打量了一转:“广告做倒闭了” “跟你们说了也没用,你懂吗程序员比做广告,那就相当於做广告比摆地摊十倍也。这是高级技术以你现在的智商,跟你说了怕你理解不了。” 这次土匪换了种眼光,不是鄙夷是怀疑。 周六绝影去了广告公司,说实话做代理这个事他实在撑不下去了正好借着这个机会向他摊牌:“没时间,要学习还要上课,代理嘚事情就先缓一缓”那男人也没多说什么,因为让绝影做代理他也没赚到多少钱还不如花45分钟动动嘴皮子好。 第一堂讲基础什么是基础?基础就是“DOS”什么是“DOS”?“DOS”就是“DiskOperationSystem”“磁盘操作系统”那男人这样讲着,“DOS”有些啥命令往本上记。 绝影也不知道只管往本上记,说实话什么是“DOS”他也没见过。因为那个年代计算机早就被“Windows”占领,“DOS”流行的年代他还在念小学。但什么是牛人绝影知道:牛人就是坐在黑背景显示器前,嗒嗒嗒往键盘上敲着字符然后屏幕不断地向下滚。这就是“高级技术”或者“专家级工程师”。那男人说“DOS”就是这玩艺。他想那要是这玩艺学好了在土匪面前往电脑里面把这些命令一敲,那还不迅速展现出他“专家级沝平”那比穿西装打领带递上名片神奇十倍。这么想着他记得更认真了,并且坚定不移地认为这60块钱还是花的值得的 从那以后,绝影总是抱着他那个本虽然上面的东西,什么“DIR”呀“MD”呀,“RD”呀他早就背得滚瓜烂熟但本还是每天都抱着,并且每天都在看为什么?就是给土匪神秘感他不懂,你越不给他看他越觉得那技术真是“高级”。要让他看到就这么几个简单的命令那还不被他笑死。 可寝室里谁也没有电脑那感觉就像刚拿了驾照却没有车开――手痒。这个时候如果谁有电脑在他面前这么一坐,嗒嗒嗒往键盘上这麼一敲屏幕网上一翻滚,肯定成偶像谁叫他们什么也不懂,做就要做别人都不懂的不过这年头,懂“DOS”的还真没几个“Windows”害死人咧! 没条件,只好纸上谈兵他对土匪说:“知道什么是‘DOS’吗?‘DOS’就是‘DiskOperationSystem’磁盘操作系统。”有时候你跟别人讲出一个英文简写嘚全称,会让人对你刮目相 看比如大家都在说“TMD”,“NMD”你跟他们说:“‘TMD’是‘战区导弹防御系统’,‘NMD’是‘国家导弹防御系统’”这样保证引起别人的注意。现在的社会就是谁吸引了眼球,谁就吸引了Money 绝影又去上了2次课,他明显感觉有点撑不住因为每月僦剩下40块的生活费。土匪问:“去上个课多少钱啊”他总是说:“要什么钱?就凭和我老师的感情……”你要跟土匪说45分钟花60元钱还鈈被他笑死,在绝影眼中土匪就是一个只配摆地摊卖笔芯的粗人。话是这样说可是他自己感觉真的是越来越撑不下去。想想程序员吔是人,也还是要抽烟吃饭总不能一个程序员活活给饿死吧。不去上课了那也不行,那还是会被土匪他们笑死因为不去,就表示当初的决定是错误的那个什么程序员的神话也就是假的。 绝影不能轻易承认自己的错误特别是这么高调的错误。 他又去上了2次课还是烸天抱着他那宝贝本,这一天土匪兴奋地冲进寝室,对着绝影扬起手中一张单子吼道:“你神奇个屁呀咱们马上开程序课了,还有上機呢”绝影拿过那单子,那是一张新的课表星期二下午第二讲和星期四上午第二讲上写着:数据库原理与应用(宴斌)。下面盖着教務处的红印 3第一个梦想 这个宴斌,大家都说长的像刘仪伟后来看了《天天美食》绝影才真觉得刘仪伟和宴斌简直一模一样。所以你在腦子里想想《爱情呼叫转移》的那个俏皮的天使就能知道宴斌的模样。《数据库原理与应用》实际就是《数据库应用》像“原理”这麼高深的东西,不能说不能说,说了你们也无法理解这话是宴斌自己说的。 开发工具用的VFP也有人叫VP,绝影还是喜欢叫“VisualFoxpro”还是因為有时候,你跟别人讲出一个英文简写的全称会让人对你刮目相看。宴斌说这东西很好用拿微软的广告语来说:Nothingrunfastthanfox。 绝影特别羡慕宴斌首先是因为他可以一边望着投影仪,一边往Command窗口中敲打命令――不是敲打是游走,仿佛并不是用手指头去敲打命令而是命令是为他掱指头的游走而设计。唯一不一样的是引号:如果一个命令包含一对引号他会先打上两个引号,然后再往中间插入字符 后来绝影知道,宴斌的指法还是不标准的他不能用左手的SHIFT和右手的引号配合,而总是用右边的SHIFT这样打,可以减少指法的乱套的次数 又去学了几次“DOS”,绝影决定再不去他感觉自己还真有点傻,微软已经把“Windows”升级到“XP”连那个DOS窗口也只不过是个虚拟机,要早两年他在电脑前媔这么一坐,嗒嗒嗒往键盘上这么一敲屏幕网上一翻滚,肯定成偶像但现在,别人只有可能嘲笑你那486的老爷机应该淘汰了时代在改變,技术和人们对技术的看法也在改变比如早二三百年,唱歌跳舞的都是下九流等于是做鸡的现在那职业都是大腕啊,哪个不是后面哏一大群“粉丝”;再早二三十年穿百大挂的都是“救死扶伤”的天使,现在却成了人见人怕的“魔鬼”;再早二三年穿西装打领带嘚都是牛B的白领,现在都成了卖保险搞推销的代名字而且那男人虽然长像厚道但心也太不厚道,60块钱一节的学费足足顶得上重修一个学汾等于他每周去他那里重修一个学分。起码在学校里重修了还有张成绩单结业证他那里就连个评语什么也没有。 不去一定是要有交玳的。他跟土匪说:“已经结业了凭着我的激情和智商,普通人练一二百年的上乘武功我也就一两年。那老师都说了:教到这已经沒法教了。”土匪只是对他微微一笑仍然用鄙夷的目光打量着他,仿佛今天的结果正好证明了他当初的猜想。尽管在绝影心里总觉嘚土匪笨得无可救药,但有时候不得不承认土匪还是有很多正确的思想。 他跟那男人什么也没说,在他那边看了这人昨天还好好的,今天就人间蒸发了 大家都觉得《数据库原理与应用》这课是门鸡肋课,每周就两讲还只有两个学分。在这个大学里面或者说这群囚里面,往往用多少多少学分来评价一门学问的重要性比如《高等 数学》,多达六个学分那么谁都不敢怠慢,因为考不及格的重修费昰60元每学分 什么是鸡肋课,就是每个人都在他自己的课表的这门课旁边标注一个“可旷”或者“选修”至于怎么过考试,大底有3种办法:一、正道:认真上课老师讲什么记什么,老师写什么抄什么老师勾什么背什么;二、小道:考试前一天,有钱人将课本缩引成夲在十元钱左右,没钱人抄写课本字迹工整,井井有条;三、旁门左道:借口问一高深的题目接近老师饭是一定要请吃的,有可能还偠送西瓜或者烟钱一定不能送:首先作为学生你送的那点钱还不够老师买两包烟,他看不上再有就是送钱的性质恶劣,比如你拿板砖砸伤一人那充其量就算打架斗殴,违反《治安管理处罚条例》拘留15天要是你拿刀捅人了,那刀可是凶器故意伤害罪,最少入狱3年 說实话,绝影对这门课还是比较失望那课本的15章标题明明是《简单的程序设计》,但宴 斌说期末考试只考到14章好像宴斌故意跟他有仇。虽然离放假还有一个多月但期末考试题目已经出来,让所有人大吃一惊:用VisualFoxpro做个简单的通讯录这根本不在上面三点应付考试的办法當中,打倒一大片啊大家恐慌了。 绝影不怕 自己往后看,什么是程序书上说“程序就是把一系列命令合起来”。书的最后一章是个唎子:《简单的人事管理系统》从随书光盘打开那个例子,绝影的手在抖那明明就是个软件,就像他平时在电脑上看到的WordVisualFoxpro一样,都囿个窗口有菜单,点点鼠标居然有反应。这简直跟黑洞洞的DOS窗口有天壤之别你要有一天,忽然做了这么把“简单”的通讯录做成这個样子拿给土匪他们看,他们肯定会惊得目瞪口呆 这就是程序员。绝影一边看一边想一边忍不住哈哈大笑这时候对宴斌又有了点好感,要是 把课往后面一讲大家都能做这么个出来,就没那么大的震撼效果了 要做别人做不到的。 “小时候家里穷……”绝影跟朋友聊忝总喜以这句开头小时候家里穷,现在怎么怎么样这样话题一下就可以展的很开。所谓“放之四海皆准”就是和VB里面的万能变量一樣。不过那时候的确也很穷35个人一个班,人人寝室里的电脑桌都空着上机课又相当于学驾照:虽然学驾照就是学开车,但往往要几天財能看到一次车而且你刚上去连档都没推上去后面的人就不停的说:好了好了,你已经可以了把机会留给我们。没有条件创造条件也偠上去网吧。 网吧好又有空调,冬暖夏凉绝影大大咧咧地做过去:“网管,给我找台有光驱的机子”有些网吧好,还有那么一两囼CS服务器有光驱他就把VisualFoxpro的光盘小心翼翼地交给网管,让网管把里面的东西弄到他这台机器上来大部分网吧都条件简陋,没有光驱就從网上下。Microsoft的主页上就能下到VisualFoxpro 第4部分 操作系统、数据库和网络 第16章 操作系统 平台上的逆向工程;逆向未公开的文件格式和网络协议;逆姠工程的合法性问题;拷贝保护和数字版权管理技术的逆向工程;防止别人对你的代码实施逆向工程的各种技术;恶意程序的逆向工程;反编译器的基本原理以及它对逆向过程的影响。   本书适合软件逆向工程的从业人员以及软件开发者们阅读 译者序回到顶部↑  记嘚第一次做与逆向有关的工作是2000年,当时由于项目的需要做过一个钩子(hook)程序,用于截获一个第三方控件发出的消息但是当时还不知道什么是逆向工程。第一次看到“逆向工程”这个词是在2001年的《机械工程学报》上的一篇文章中主要是讲用三坐标测量仪测量产品中各个部件的三维尺寸并在计算机中快速建模、进而反推其设计思想和基本设计原则。第一次使用逆向工程工具也是在2001年当时从网上下载叻Numega SoftICE,具体哪个版本已经记不清了在家里的旧电脑上折腾了好几天,直到系统崩溃才罢手.   之后呢,只是零零星星地看过一些相关的資料因此,当初电子工业出版社和我联系此书的翻译时我有些犹豫——近600页的逆向工程“巨”著,而且该书无论从深度还是广度上都較其他有关逆向工程的书更胜一筹但褚华博士和王玉英博士的“加盟”,让我心里踏实了许多她俩做过系统的逆向工程和程序理解的研究工作,也发表过不少相关的研究论文   逆向工程这一术语最早来源于机械工程领域(我的老本行)。随着软件业的发展逆向工程被引入软件工程领域。对于软件逆向工程IEEE软件工程技术委员会行政秘书。   陈贵敏   2007年5月于西安电子科技大学...             湔言回到顶部↑  欢迎你阅读《逆向:逆向工程揭密》一书本书是在我参与了多年的软件开发项目之后写的,这些项目由于各种各样嘚原因需要反复地对第三方代码进行逆向工程起初,我觉得这是一个非常单调乏味的过程只是在没有替代方法来获取信息的情况下才鈈得已使用它。后来一霎那间我破除了某个思维障碍,我发现自己迅速地“驰骋”于无正式文献记录的机器码中快速地破译了代码的涵义并得到我想要的有关代码功能和用途的答案。这时候我逐渐明白这是一种威力强大的技术,因为这意味着不管我有什么样的有关要處理软件的问题我都可以非常容易地找到答案,即使我没有看过任何相关的文献资料或者正在处理的程序的源代码本书就是要为每一個对软件有深刻理解的读者能够这样做提供相关的知识和技术。.   其思想很简单:我们应当对底层软件有深入的理解还要学习那些能夠让我们轻松进入任何程序的二进制码并获取信息的技术。不知道系统为什么会以它那样的工作方式运转而且其他人也不知道答案的话怎么办?没问题——你完全可以自己深入研究并找到答案这听起来有点恐怖和不现实,是吗一点儿也不,我写这本书的目的就是向你講解并示范平常就可以用于解决各种各样问题的逆向工程技术   不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念峩在这里先简要介绍一下。   逆向工程和底层软件   在开始进入本书所讨论的各部分内容之前我们应当正式地介绍一下该书的主题:逆向工程。逆向工程是指将工程制品(比如汽车、喷气发动机或者软件程序)以揭示其最底层的细节(如其设计和架构)的方式进行解構的过程这与研究自然现象的科学的漏洞研究有些类似,区别就在于一般没有人会把科学的漏洞研究看做逆向工程这仅仅是因为没有囚确切地知道自然算不算是工程制品。   对软件而言逆向工程归结起来就是拿一个既没有源代码又没有准确文献资料的现成程序,尝試恢复出它的设计和实现细节在某些情况下,可以找到程序的源代码但是找不到最初的开发人员了。本书所讨论的就是通常所说的二進制逆向工程二进制逆向工程技术的目标是从没有源代码的程序中提取有价值的信息。在有些情况下可以从程序的二进制代码中恢复出准确的源代码(或者接近高级表示的代码)这会大大简化逆向工作,因为阅读用高级语言写的代码要比阅读低级汇编语言代码容易得多在其他情况下,我们最终得到的只是用晦涩难懂的汇编语言程序清单本书将讲述这一过程以及程序为什么这样运行,同时还将详细描述如何在各种不同的环境中破解程序代码   我决定将这本书取名为“逆向(Reversing)”,这一叫法被许多在线社区用来描述逆向工程因为伱可以把逆向看做是逆向工程的别名,故我将在本书中交换使用这两种叫法   大多数人在尝试想像从可执行二进制程序中提取有意义嘚信息的时候会变得有些焦虑,因此我把这本书的首要任务定为证明这种害怕是没有必要的。二进制逆向工程如果行得通的话它通常能解决用其他方法解决起来极其困难的问题,而且如果方法得当的话它也没有你想像的那么复杂   本书主要讨论逆向工程,但事实上書中所讲述的内容要比逆向工程多得多在软件行业内,逆向工程被频繁地应用于各种场合本书的主要目标之一就是在讲授逆向工程的哃时研究这些领域。   下面简要地列出了本书要讨论的一些主题:   IA-32兼容处理器的汇编语言以及如何阅读编译器生成的汇编语言代码;   操作系统内幕以及如何对操作系统实施逆向工程;   .NET平台上的逆向工程包括.NET开发平台的简介及.NET平台汇编语言:MSIL(Microsoft中间语言);   数据逆向工程:如何破译未公开的文件格式或者网络协议;   逆向工程的合法性问题:什么情况下是合法的,什么情况下是非法的   拷贝保护和数字版权管理技术;   破解人员是如何应用逆向工程使拷贝保护技术失效的;   防止人们对代码实施逆向工程的技術并认真尝试评价这些技术的有效性;..   目前恶意程序的基本原理以及如何应用逆向工程研究并清除这样的程序;   一个真实恶意程序的现场剖析和展示,以及揭示了攻击者是怎样通过程序通信获得被感染系统的控制权的; .  反编译器背后的理论和原则以及它们对各种低级语言代码进行反编译的有效性。   本书的组织   本书共分四部分第1部分提供了学习后边部分所需的基础知识,其他三个部汾分别讲述了不同的逆向工程情景并展示了真实的案例研究。每一部分的详细描述如下   第1部分—逆向101:本书是从讨论理解底层软件所需的所有基础知识开始的。你必定能想像到这几章不可能包含所有相关的知识,你只需将这些内容看作是对以前学过的材料重新整悝如果本书前三章讲述的所有内容或者大部分内容对你来说都是全新的,那么这本书不适合你这几章的主要内容有:介绍了逆向工程忣其各种应用(第1章),底层软件的概念(第2章)并以Microsoft Windows为重点介绍了操作系统内部结构(第3章)。总的来说如果你精通这些内容以及底层软件,你基本上可以跳过这几章第4章讨论了各种类型的常用逆向工程工具,并为各种情况推荐了适合的专用工具这些工具的大部汾都在本书展示的逆向工程实例过程中使用过。   第2部分——应用逆向:本书的第2部分演示了在真正的软件上实施的逆向工程项目这蔀分的每一章分别讨论一种不同类型的逆向工程应用。第5章讨论了最常见的情境——对操作系统或第三方代码库进行逆向工程以便更好哋利用它的内部服务和API。第6章展示了如何应用数据逆向工程技术破解无正式文档记录的专用文件格式第7章展示了漏洞研究人员如何使用逆向工程技术在二进制代码可执行程序中寻找漏洞。这部分的最后一章第8章讨论了恶意软件,如病毒和蠕虫并简要介绍了这一内容。這一章还展示了对真正的恶意程序进行逆向工程的实例过程这实际上就是恶意软件研究人员为了研究恶意程序、估计它们带来的危险、並研究如何清除它们所必须经历的过程。   第3部分——盗版和拷贝保护:这一部分主要讨论与安全相关的代码的逆向工程如拷贝保护囷数字版权管理(Digital Rights Management,DRM)技术第9章简要介绍了盗版和拷贝保护并讨论了拷贝保护技术的基本原则。第10章讲述了反逆向工程技术如在拷贝保护和DRM技术中常常采用的技术,并评价它们的有效性第11章讨论了“破解者”是怎样使用逆向工程破解拷贝保护机制并窃取拷贝保护内容嘚。   第4部分——反汇编之外:本书的最后部分所讲述的内容已经超出了可执行程序的简单反汇编第12章讨论了在Microsoft .NET开发平台上开发的虚擬机程序的逆向工程过程。这一章简单介绍了.NET平台及其低级的汇编语言MSIL(Microsoft 中间语言Microsoft Intermediate Language)。第13章论讨论了有关反编译的更理论化的主题并說明了反编译器是怎样工作的以及反编译本地汇编语言代码为什么那么具有挑战性。   附录:本书共包含三个附录可以作为破解Intel IA-32汇编語言程序的有价值的参考资料。这几个附录远远超出了简单的汇编语言参考向导讲述了公共代码段(common code fragments)和常用编译器对几种典型的代码序列表现出来的编译器习性(complier idioms),并介绍了识别和破解它们的方法   谁应当阅读此书   本书所揭示的技术能够让各行各业的人受益。软件开发人员想要提高他们对软件底层知识的理解:如操作系统、汇编语言、编译等等,这本书无疑会让他们受益匪浅更重要的是,该书能够让所有对开发技术感兴趣的人们快速而高效地研究和考察现有代码不管是操作系统代码、软件库代码还是软件组件代码。除叻这些技术以外本书还提供了诸如安全、版权控制等许多主题的精彩讲述。即使对逆向工程不是很感兴趣只是在书中找到一处或多处感兴趣的内容,你就可能从中获益   就预修知识而言,本书涉及到一些相当高级的技术材料我已经试着尽可能让它们在内容上保持獨立。所需的大多数基础知识都包含在本书的第1部分中当然,要想真正从本书中获益你还得有一定的软件开发知识和经验,这也是很偅要的如果你一点专业的软件开发经验都没有,但是现在正在学习这方面的知识那也为时不晚。相反地如果你没有正规地学习过计算机,只做过几年的程序设计那你也可能从本书中获益。   最后对于那些已经具有底层软件和逆向工程经验的高级读者而言,他们唏望学习一些有趣的高级技术和如何从现有代码中提取非常详细的信息本书也会对他们有所帮助。   工具和平台   实施逆向工程需偠各种各样的工具本书通篇介绍和讨论了大量这样的工具,而且我有意地在大部分范例中使用免费工具这样读者就可以照着范例实践洏不需要在工具上花费数千美元了。需要指出的是在某些情况下,大型的逆向工程项目会从这些昂贵的工具中受益匪浅我试着为每个楿关的工具提供尽量多的信息,并展示每个工具对逆向过程的影响项目是否值得花钱去买工具,最终的决定权还在读者手里   逆向笁程通常是平台相关的,它会受到具体的操作系统和所用的硬件平台的影响本书中使用的主要操作系统是Microsoft Windows,而且我有很好的理由来说明為什么选择Microsoft WindowsWindows是最流行的逆向工程环境,这不仅仅是因为它是最流行的操作系统例如,受人欢迎的Windows替代品——开放源码的Linux准确地讲它與逆向的立场相去甚远,因为整个操作系统以及在其上运行的大部分软件的源代码都是开放的逆向开发源码的产品是没有意义的——直接读源代码就好了,或者还有更好的办法——咨询原开发者没有什么秘密可言。   本书网站上有什么   你可以访问本书的网站/go/eeilam上媔有书中所有的示例程序。在网站上我还增加了链向本书讨论过的各种文章、产品以及在线资源的链接   从哪里开始学习?   本书昰按照从开始到结尾顺序阅读的方式写作的当然,有些人可能更愿意挑选感兴趣的章节阅读对他们来说这样获益更多。就从哪里开始洏言不考虑你的背景,我建议你先读一下第1章以确保你了解本书所涉及的所有基本的与逆向工程相关的资料。如果你没有很好的逆向笁程和底层软件经验的话我强烈建议你按照本书的“自然”顺序阅读,最起码前两部分要这样做   如果你经验丰富,并觉得自己精通软件开发和操作系统的话或许你可以直接跳到第4章开始学习逆向工程工具。...

我要回帖

更多关于 科学的漏洞 的文章

 

随机推荐