问题 单项选择题

已知某高级语言源程序A经编译后得到机器C上的目标程序B,则______。

A.对B进行反编译,一股不能还原出源程序A
B.对B进行反汇编,不能得到与源程序A等价的汇编程序代码
C.对B进行反编泽,得到的是源程序A的变量声明和算法流程
D.对A和B进行交叉编译,可以产生在机器C上运行的动态链接库

答案

参考答案:A

解析:本题考查反编译、交叉编译等相关概念。
计算机软件反向工程(Reverse Engineering)也称为“计算机软件还原工程”,指通过对他人软件的目标程序(可执行程序)进行“逆向分析和研究”推导出该软件所使用的思路、原理、结构、算法、处理过程及运行方法等设计要素,作为开发软件时的参考,或者直接用于自己的软件产品中。
高级语言源程序经过编译变成可执行文件,反编译是其逆过程。但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。反编译是一个复杂的过程,所以越是高级语言越难于反编译。
反汇编是把目标代码转为汇编代码的过程,通常利用如C及Pascal等高级语言编程,然后经过编译程序生成可以被计算机系统直接执行的文件。反汇编将这些执行文件反编译还原成汇编语言或其他高级语言,但通常反编译后的程序与源程序会存在许多不同。虽然执行效果相同,但程序代码会发生很大的变化,非编程高手很难读懂。
交叉编译简单地说是在一个平台上生成另一个平台上的可执行代码,这里所谓的平台实际上包含体系结构(Architecture)和操作系统(Operating System)两个概念。同一个体系结构可以运行不同的操作系统,同一个操作系统也可以在不同的体系结构上运行。
需要交叉编译的原因一是在项目的起始阶段,目标平台尚未建立,因此需要交叉编译以生成需要的bootloader(启动引导代码)及操作系统核心;二是当目标平台能启动之后,由于其资源的限制,所以当编译大型程序时依然可能需要用到交叉编译。
本题选项A是正确的,反编译只能转换成汇编程序,不能把可执行文件变成高级语言源代码。相应地,B和C是错误的。交叉编译在一个平台上生成另一个平台上的可执行代码,不是在源程序和目标程序之间进行,因此D是错误的。

填空题

国家发改委、财政部、交通运输部和国家税务总局于2008年12月5日公布了《成品油价税费改革方案(征求意见稿)》(简称《方案》),《方案》于2009年1月1日起实施。某校高三(2)班以《税费改革与汽车行业的生产与消费》为题分组开展了研究性学习活动。

第一组同学就《方案》的实施对国内汽车生产的影响进行问卷调查。除赞成油价税费改革方案的人以外,还有人提出了如下建议:①国家对汽车等相关行业给予高额补贴;②进一步提高燃油税率;③利用国际能源价格下降,加大石油进口;④大幅度降低我国成品油油价。

第二组同学就《方案》的实施对国内汽车消费的影响进行了问卷调查,了解到如下情况:

将减少用车频率的持观望态度的购买小排量车型的购大排量车型的长期使用电动自行车的
42.22%17.6%33.1%6%18.1%
注:受国际金融危机的影响,国际汽车市场销量锐减,国内汽车销售市场不景气,汽车行业的“严冬”正在来临。

第三组同学通过网上查阅,收集了如下信息:《方案》起草过程中,国家有关部门根据对宏观经济形势的判断和基层实际,几易其稿。2008年12月5~12日又向社会公开征求意见,共收到各类反馈意见48643条。他们认真研究吸收社会各界提出的意见和建议,及时调整完善了《方案》。

(1)假如你参加第一组同学讨论,请选择其中一项建议,研究其合理性和可能产生的负面影响。

(2)随着《方案》的实施,针对第二组同学的调查结果,请你为汽车行业的突围下招。

(3)第三组同学收集的信息,对我们求索真理有何启示?

(4)请用一句话,概括本课题内容研究的社会价值。

单项选择题