[结构软件学而思]

1管窥软件的文件组成

绝大多数准司机在顺利通过驾驶执照的考试后就欢天喜地开着一堆铁和工程塑料的组合体上路了,在他们眼里,方向盘、仪表基本上代表了汽车。这个世界上,还会有一小部分司机在学会开车后,还想了解车盖里的、底盘下的那些铁器是如何工作的,如果您是这样的人,请继续向下看,如果您是前者,请跳过本章。

绝大多数结构工程师在大学里都修过编程的课,甚至在初中高中就已经接触软件编程了。但是绝大多数学校给土木系的学生开的计算机编程的课是以古老的FORTRAN 为例来讲授的。众所周知,搞图形界面这活儿并不是FORTRAN 的特长甚至可以说是其软肋,而上世纪90年代随着微软的WINDOWS 平台大行其道,没有绚丽的图形界面的软件已经不好意思出来见人了。

当年学了FORTRAN 编程的工程师看到界面五彩缤纷的结构软件后,总觉得自己白学了——明明在大学里拿到了学分甚至考了高分,可是真要想编出一个哪怕是求工字形截面的惯性矩这种仅需要一个对话框的小程序来,还是感觉无从下手,所以觉得能编写这些软件的“码农”有一种神秘感。本章就为您在窗户纸上戳个小窟窿,对我们常用的软件做个入门级的剖析。

DLL 和exe 都是什么文件1.11.1DLL

打开任何一个基于Windows 平台的软件的安装目录,映入眼帘的是一堆堆的Dll 、exe 文件,可能还有少量的ocx 或者arx 为后缀的文件。这些文件都是所谓的PE (Portable Executable )格式的

文件。

话说PE 这种格式,得归功于微软公司在1989年前后聘请

的来自DEC 公司的外援,特别是其中有位叫做Dave Cutler 的。

PE 格式是由Unix 中的COFF 格式修改而来的。1993年,

Windows NT 3.1问世,PE 格式首次作为操作系统的可执行文件格式。PE格式也在不断升级,目前最新版本是2010年9月

发布的8.2版本。

设计这种格式的初衷是定义一种在所有Windows 平台上

和所有CPU 上都可执行的通用文件格式。单词“Portable ”体

现了这个意图。

从Windows 这些年的各种版本来看,应该说PE 格式达到

了当初的设计初衷。图3-1Dave Cutler

Linux 和大多数Unix 版本中的格式是“可执行与可链接格式ELF(ExecutableAnd Linkable) ”(同样也是COFF (Common file format )格式的变种),而苹果操作系统的格式是Mach-O 。

有兴趣对PE 格式进行深入研究的读者,不妨去读读文献i 。不过笔者不推荐结构工程师在这方面花很多时间。

DLL 文件里都有些啥信息呢?对于软件的使用者(非程序员)而言,我们都能从这些文件里挖掘出什么信息呢?如何挖掘呢?请看下节。

1.2软件整容软件

软件也能被整容?当然,不需要懂编程也可以给软件整容的,就像不懂电路原理的人可以把电视机外表装饰得漂亮一点一样。

软件的对话框、示意图等信息一般存储在一些dll 或者exe 文件中,有很多软件可以把这些dll 或exe 文件中的那些对话框、示意图等暴露出来,比如由Angus Johnson 开发的“Resource Hacker”这个免费软件(http://www.angusj.com/resourcehacker)、或者Colin Wilson 开发的软件“XN Resource Editor ”(,开放源代码的)或者Anders Melander 开发的免费软件“Resource Editor ”(http://melander.dk/reseditor)我们可以利用这些软件来给我们所用的软件来整整容。

也许您想到了,所谓的软件汉化,是不是也算是一种整容呢?没错,就是利用上述这些软件来把一些软件界面上的洋文改成中文。汉化软件常用的工具软件还有eXeScope 以及ResScope 等。STAAD

里的大部分对话框都可以在D:\SProV8i\STAAD\Language\Chinese\USEnglish_chs.dll这个文件里找到。

如果您觉得某些字句翻译的不够准确,您完全可以在下图相应位置修改那些字句(比如将“终端颜色”改为“末端颜色”),然后点击“Compile Script ”按钮,保存后退出“Resource Hacker ”,重

新打开STAAD 的某个模型文件,并点击图标,在弹出的对话框里选择“标注”,看看是不是已经改为“末端颜色”了。挪动控件的位置也是类似的方法,在Resource Hacker 选中想要挪动的控件,用键盘上的箭头键挪动即可,做了改动之后别忘点击“Compile Script ”按钮:

其英文版本的在D:\SProV8i\STAAD\Language\USEnglish\USEnglish.dll

这个文件里:

您甚至可以在“Bitmap ”那里找到STAAD-III (上世纪90年代的版本)这个版本的初始界面:

1.3软件DNA 鉴定利器——Dependency Walker 、ViewAPI Dependency Walker 使用说明

QQ 群30787198,敲门请写“玩结构的”

i 戚利,Windows PE 权威指南,机械工业出版社,2011/10

1管窥软件的文件组成

绝大多数准司机在顺利通过驾驶执照的考试后就欢天喜地开着一堆铁和工程塑料的组合体上路了,在他们眼里,方向盘、仪表基本上代表了汽车。这个世界上,还会有一小部分司机在学会开车后,还想了解车盖里的、底盘下的那些铁器是如何工作的,如果您是这样的人,请继续向下看,如果您是前者,请跳过本章。

绝大多数结构工程师在大学里都修过编程的课,甚至在初中高中就已经接触软件编程了。但是绝大多数学校给土木系的学生开的计算机编程的课是以古老的FORTRAN 为例来讲授的。众所周知,搞图形界面这活儿并不是FORTRAN 的特长甚至可以说是其软肋,而上世纪90年代随着微软的WINDOWS 平台大行其道,没有绚丽的图形界面的软件已经不好意思出来见人了。

当年学了FORTRAN 编程的工程师看到界面五彩缤纷的结构软件后,总觉得自己白学了——明明在大学里拿到了学分甚至考了高分,可是真要想编出一个哪怕是求工字形截面的惯性矩这种仅需要一个对话框的小程序来,还是感觉无从下手,所以觉得能编写这些软件的“码农”有一种神秘感。本章就为您在窗户纸上戳个小窟窿,对我们常用的软件做个入门级的剖析。

DLL 和exe 都是什么文件1.11.1DLL

打开任何一个基于Windows 平台的软件的安装目录,映入眼帘的是一堆堆的Dll 、exe 文件,可能还有少量的ocx 或者arx 为后缀的文件。这些文件都是所谓的PE (Portable Executable )格式的

文件。

话说PE 这种格式,得归功于微软公司在1989年前后聘请

的来自DEC 公司的外援,特别是其中有位叫做Dave Cutler 的。

PE 格式是由Unix 中的COFF 格式修改而来的。1993年,

Windows NT 3.1问世,PE 格式首次作为操作系统的可执行文件格式。PE格式也在不断升级,目前最新版本是2010年9月

发布的8.2版本。

设计这种格式的初衷是定义一种在所有Windows 平台上

和所有CPU 上都可执行的通用文件格式。单词“Portable ”体

现了这个意图。

从Windows 这些年的各种版本来看,应该说PE 格式达到

了当初的设计初衷。图3-1Dave Cutler

Linux 和大多数Unix 版本中的格式是“可执行与可链接格式ELF(ExecutableAnd Linkable) ”(同样也是COFF (Common file format )格式的变种),而苹果操作系统的格式是Mach-O 。

有兴趣对PE 格式进行深入研究的读者,不妨去读读文献i 。不过笔者不推荐结构工程师在这方面花很多时间。

DLL 文件里都有些啥信息呢?对于软件的使用者(非程序员)而言,我们都能从这些文件里挖掘出什么信息呢?如何挖掘呢?请看下节。

1.2软件整容软件

软件也能被整容?当然,不需要懂编程也可以给软件整容的,就像不懂电路原理的人可以把电视机外表装饰得漂亮一点一样。

软件的对话框、示意图等信息一般存储在一些dll 或者exe 文件中,有很多软件可以把这些dll 或exe 文件中的那些对话框、示意图等暴露出来,比如由Angus Johnson 开发的“Resource Hacker”这个免费软件(http://www.angusj.com/resourcehacker)、或者Colin Wilson 开发的软件“XN Resource Editor ”(,开放源代码的)或者Anders Melander 开发的免费软件“Resource Editor ”(http://melander.dk/reseditor)我们可以利用这些软件来给我们所用的软件来整整容。

也许您想到了,所谓的软件汉化,是不是也算是一种整容呢?没错,就是利用上述这些软件来把一些软件界面上的洋文改成中文。汉化软件常用的工具软件还有eXeScope 以及ResScope 等。STAAD

里的大部分对话框都可以在D:\SProV8i\STAAD\Language\Chinese\USEnglish_chs.dll这个文件里找到。

如果您觉得某些字句翻译的不够准确,您完全可以在下图相应位置修改那些字句(比如将“终端颜色”改为“末端颜色”),然后点击“Compile Script ”按钮,保存后退出“Resource Hacker ”,重

新打开STAAD 的某个模型文件,并点击图标,在弹出的对话框里选择“标注”,看看是不是已经改为“末端颜色”了。挪动控件的位置也是类似的方法,在Resource Hacker 选中想要挪动的控件,用键盘上的箭头键挪动即可,做了改动之后别忘点击“Compile Script ”按钮:

其英文版本的在D:\SProV8i\STAAD\Language\USEnglish\USEnglish.dll

这个文件里:

您甚至可以在“Bitmap ”那里找到STAAD-III (上世纪90年代的版本)这个版本的初始界面:

1.3软件DNA 鉴定利器——Dependency Walker 、ViewAPI Dependency Walker 使用说明

QQ 群30787198,敲门请写“玩结构的”

i 戚利,Windows PE 权威指南,机械工业出版社,2011/10


相关内容

  • 浅谈软件体系结构评估技术
  • 浅谈软件体系结构评估技术 摘要: 作为在软件生命周期早期保障软件质量的重要手段之一,软件体系结构评估技术是软件体系结构研究中的一个重要组成部分.现有的软件体系结构评估方法可以划分为3类:基于场景的评估方法.基于度量和预测的评估方法以及特定软件体系结构描述语言的评估方法.按照团建体系结构评估技术的评价 ...

  • [软件设计与体系结构]教学大纲
  • <软件设计与体系结构>课程教学大纲 课程名称 课程编码 课程性质 学分数 学时数 课外学时 执笔者 制订单位 软件设计与体系结构/Software Design and Architecture 0603025 课程类型 专业选修课 专业主干课 适用范围 软件工程专业 2 先修课程 面向 ...

  • 公共基础教材
  • 第一章数据结构与算法 1.1 算法 ★算法:是指解题方案的准确而完整的描述. 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计. 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止. ★特征包括: (1)可行性: (2)确定性, ...

  • 软件体系结构论文:一种面向方面软件体系结构模型
  • 软件体系结构论文:一种面向方面软件体系结构模型 摘 要: 为了分离软件系统中的核心关注点和横切关注点,通过引入面向方面软件开发的思想设计了一种面向方面软件体系结构模型,并详细分析了该模型的三个基本构成单元,即构件.连接件和方面构件.最后通过一个网上支付实例验证了该模型具有一定的理论意义和实用价值. ...

  • 软件工程基础知识点整理免费版
  • 软件工程基础知识点整理 一. 软件工程基本概念: 1. 软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序.数据以及相关文档的完整集合. (1)程序是软件开发人员根据用户需求开发的.用程序设计语言描述的.适合计算机执行的指令(语句)序列. (2)数据是使程序能够正常操作信息的数据结构. ( ...

  • 软件体系结构
  • 软件体系结构试题 一 .选择题 1.设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2.下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是 3.要依赖于抽象,不要依赖于具体.即针对接口编程 ...

  • 软件工程基本概念
  • 软件工程基本概念 考点1 软件的定义与软件特点 1软件的组成 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序.数据和相关的文档. 软件由两部分组成: (1)机器可执行的程序和数据: (2)与软件开发.运行.维护及使用等有关的文档. 2软件的特点 软件具有如下特点: (1)软件是逻辑产品,而 ...

  • 软件工程导论(第五版)课后习题答案
  • <软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意. (2)软件产品的质量往往靠不住. (3)一般软件很难维护. (4)软件生产效率很低 ...

  • 软件工程导论试题(打印)
  • 软件工程导论试题(老师给的) 一.选择 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义.可行性研究.软件需求分析. 系统总体设计.详细设计.编码.测试和运行.维护.八个阶段又可归纳为三个大的阶段: 计划阶段.开发阶段和 ( ). A.详细计划 B.可行性分析 C.运行阶段 D.测试与排错 2. ...

  • 软件工程重点知识
  • 第1章软件工程学概述 1.1软件危机 概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题.实际上,几乎所有软件都不同程度地存在这些问题. 原因: 1. 与软件本身的特点有关.1)软件不同于硬件,缺乏"可见性",它是计算机系统的逻辑部件而不是物理部件.2)软件不同于一般程 ...