FORTRAN反编译工具系统的分析与设计.docx
- 文档编号:12012437
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:17
- 大小:29.79KB
FORTRAN反编译工具系统的分析与设计.docx
《FORTRAN反编译工具系统的分析与设计.docx》由会员分享,可在线阅读,更多相关《FORTRAN反编译工具系统的分析与设计.docx(17页珍藏版)》请在冰豆网上搜索。
FORTRAN反编译工具系统的分析与设计
本文由huarongtv贡献
pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
仲工反椎编译
工乎乞
维普资讯
≥一,FRRN反译具统分与计'OTA编工系的析设
_.7澍大明沈嘲辑(西南自动化一室,.200绵靼610)
一
T,1
…,…通…过
一
前言
…
;言的序八期;;晶程.五
间他们的目标是把此工作移植到36机8
上,加实用化,更目标是完垒自动化,可尽能少的人工干预.国内从事这方面工柞的还有几个革位,复旦大学,京信息工程学院,京如北南
1.向置的提出随着电子计算机在我国各行各业得到
广瑟的使用,算机软件生产正在进^工计程亿,标准化生产阶段.教件开发是一个循序渐进的过程.如
果一个大型软件垒部从头开始由自己开发,必然把局期拉得很长,至失去它的这甚开发价值.如果在B开发软件的基础上杀开发新的教件,也是理所当然的,有勋这这于缩短开发周期,鉴已开发软件的优秀借
大学等等.他仍所从事的研究都是在C语
言方面.在国内从事F而ORTRAN语言反
编译工作的还未见报道和听说.
国际上,于涉及到知识产权和歌件由保护等问压.此,有见到这方面的公开因投报道.据卸,括美国在内,在从事邀包也
面的工作.
成果,并可对它的功能进行修改和扩充.这就提出了一々如何取褥.祈,群贩束分理
发的软件,把它有效地引入到新系统中并去的问题.从丽提出了软件逆向工程的概念.软件逆向工程是软件工程研究领域的
一
二,编译的分类反反编译嚣的任务是把二进制的机器码转拽为高级语言程序.因此它和机器的指令系统有关,s如uN一3与SUN一4的
十重要课庙,于软件的维护,值,对移理
解和复甩都具有重要意义.2.罾内外反编译的状况
国内最早从事反编译研究的是台肥工业大学徽机所,8年完成600机上C于780语言的反编译工具.它把C编译生成的目标代码经过人工反汇编获得汇编程序,然后对编程序进行反编译.88年开始把此成果移向P机,在功能上作了扩充和C并
编指令系统就有很大的差别.因此,同的不
CPU它的反编译嚣也不同.另外,和目它
标高级语言有关.如FTA,ASORRNP-CAL的语句形式和结构都不同,它们的反编译器也应不同.时,进制执行文件结伺二构跟操作系统有关,在不同的操作系统下,
它的二进制执行文件结构形式有所不同.
一
提高.系统^工干璜较多,用性差,实需有定基础的人(懂褥该系统知识的人)才能上海交通大学计算机科学与工程系于
因此反编译器和操作系统也有关.由此可见,在一定条件下开发的反编译器,的应它用范围受到一定限制,只能在相应条件下
应用.
使用.于86年开始在MarcoVAXIVMS操作系统下开发c语言反编译系统.它可犄适量长度(c行)语膏镪程序经c编译:
∞cc
是否可以将用A语言源代码编译产
生的执行码反编译为B语言搦程序?
从理c论上讲这可能,但这样做,使系统变得根复
29
维普资讯
杂,虱丑蕃叠矗童田B舶结构形言
式不届.H)TR^N语言是块如R
状结柯.C语言和PC酉ASAL
语言是嵌套结构.2)各种高曩语言的功能持
点不旁.如C语言的逻辑运算功能强,它
能进行使操作,psaFTR面a.l,ORAN语c言赠授有位操作功能;ORTRAN语言的FI0方式和播黄十分灵活,aclc语,psa和
言没有;alC语言有指针的应用,pn和FTRAN语言授有.oR3)不屑语言疆用备自不同的编译程
1.把镳程声执行语言翻译娥二遗剖执行指令藏;2把数据和指令接它们的性质分配.在呵鲍程序段;3.建立萱定位袁.连接程序的瑰鼗娃:
L.按程亭性贾进行鳍类.鼍置空间作的最后分配;掇据重定位表辫决全局符号的引
用.
序毒,王成特定鹩功毖I完2)反冀泽是为群好地理解分}:
象程尊.尽量保持原程序翁设风格.应}j)一觳说来,们并不清楚瘭程序各我个模块的功熙,何来验证反编译后得到如墨穿正馥性也是一个要考虑的问题,我们采用编译后生成的二进剩码编形式相同的方击来验证.若反编译成犀种语言,无法赣这一点.为各种高级语麓因言程序氅萍后生成的二进甜码汇编形_式是不同的.基于t述鬣因,耵只考虑目标语言嚣昶曩c序语畜是糍的蒂况,考虑异种程语言之嗣豹反编译.异手语言程序之间的p
可见级语言漂程序的二连嗣执行高
码在编译阶段巳基本确定.连接程序是解
决最终各程牟譬一:
_拿
用.
垒局号的{:
在Sn0中连接命令l—个开关uSd有sr若加上此开关,在最后生成的执行tip.列文件中除符号表;不加此开关,保留若舅符号表.诙符号表插述了全督全局符号的
定义:
它的值和类型.FTRORAN程序鲁个帮宇单位所用局部聂据医的地址.这些信息对褥耆进行F'TR^】(RN厦肇译鹕一
定的用处.为此,暑F番】ORTRAN反编译
转接可以在曩爵上实现.如北京大学计算
机系开发曲将FTR67漂程序翻译oRN7戚c豫程序曲软件工具——F7t软7oC件.它告在薯码的基础上,F将oR_
工具的第—步,为是在执行文件中包含认
丁符号裹的基础上进行.
一
.
下面对语言冀译程序的肇谭过爱f进步的讨论.
TRN7转换=C语氰A7毫
高级语言编译—般分戚下述凡步;固(
2)
在此对高缓语言瀛程序到二进铡执行
词法分折:
成把蔼程序的外部形式转换完啦更适合计算机处理的内蔷形式.具体迪
代码
袭进程童爸一些{论.亍
高级语言源程序到执行代码要经过编
说有如下功篦;
1.识别程序中童义独立的量小司法
泽,接爵次变换.其吏按藏程如下雷1连.这里稿译程序的功篮是:
3o
单位——单诃.每个单诃包含再_信息:
千萆
维普资讯
诃的类别和值.
被丢失.
2.删除表征程序格式和可读性的空格,回
车及注释.
2.程序的控翻执行流在编译阶段已完全确定,无论是中闻代码和目标代码郡
保留了源程序的含义.
3.发现词法错误,报告出错.
句法和语义分析:
是编译程序中的这
3.若不加调试开关,全都全局符号定义和描述被删除.它们的特性体现在茸标
代码的执行指令和分配存储区中,且这而种体现是不完整的.如;psa程序中,在acl
关键部分.它根据语言规定的文法规则,接
受词法分析的输出,解其中的文法结构分进行相虚的语言检查,后输出.应的中最相间代码和构造相应的符号表条目.中间代码是一种介于高级语言和机器指令之间的
一
字符,逻辑枚举类塑变蛩都占用一个字节,
按字节进行运算和存取.这就无法确定原本意是哪一类变量;
又如,虑下述二个F考ORTRAN程
序:
种宏操作指令,操作码和撵作数.作有操
码的种类和形式由设计者自定,作数通操
常是各类符号表中的元素.中间代码的执
行次序反映了用户程序的原义.符号表记录了各类标识符的性质.括标识符名字,包
程序lItgra();nce.8,a(13:
1)0,a(3t1)2-7
类垄,,组维数,,值数上下界等.简单地说,
句法和语义分析完成:
I.进行语义检查;2.生成中问代码和符号表.
i一()a()a()4+l4+24
ia()a(+2+a(=.j+j)tj
*2+】)
ed
代码生成:
它接收句法和语义分析的输出,最终生成机@-进错执行代码,代-按码性质在各类存储区内分配相对地址,并形成重定位表,连接程序使用.一般来供
说,不加调试开关,述各种标识符性质若描的符号表被删除,在可重定位表中保留只
程序2Itgra()a(3,:
nee.8,l1)
a(8±1)i.4qa()a()—a()-12+l3
i·j+丑()lj)=a()1j+a(*2
edn
全局符号及其特性,供连接程序使用.从上述分析可见,高级语盲探程序编译,连接后,保留,丢失的信息情况妞下:
L增加程序可读性的格式化符号匍
注释行在编译的第一阶段,词法分析时即
二个程序镉码不一棒,它们螭译后f但产生的二进制码是完全一囊舶.
因此,编译过程甫逆性分析如下:
对·1(.镉程序的执行漉在二进制文件中
基本保留下来,编译所得到的目标程序反应正确反映源程序的执行漉.
31
维普资讯
z.漂程序的标识符说明,即说明语句
在二进翻文件中只部分地体现,些根本有
表中的某一项.
c控制结构提取.对执行流进行分.
就反囊不出来,些在指令格式上得到反有浃,案果不是唯一的.此有些结果的舍但眉理性言要综合多蠢指令种使用情况的各复杂推理后,蕾确定.才因此,编译中最困难的工作是如何反尽可蕾正确.理|映,理出原程序中舍耋反推致据结梅的定义.
四,n3FfTRANSu.O}
析,确定逻辑表达式.gt,doo讧,o等语句,执行流表进对行修改.d.数据特性分析.过对各种数据描通
述表的分析,确定各变量的类型,组维数数
和上,界等.下e.语句生成.由数据描述表生成说明语句;由执行流表生成执行语句.3由亍逆蔷译过程的不确定性和应)
反编译器系统设计
1.系统设计
用对象的复杂性,目前的系统作以下简对
化:
在Sn工作蜡上甩FRPI7u0T,N7语~言编写的程序经过编译后产生的目标执行支件,透过事系统逆向处理后,毖获得功能
一
a)不考虑IMPLIFAVE,N-C,S~E
TY语句和语句函数定义语句;冀b数据特性分析最后的确定是交互)式的,逐步加入自动分析确定功能}
.)控铽结梅提取是逐步实现全自动
的;
致.式基本相同的FTRN馕程形0RA
序.由于编译,接过程中丢失了不少信莲息,虞遵向推理过程带有一定的不确定性.
面系统宴际应用对象(要逆编译的执行文
件)生戒僚况是十分复杂的,医此本系统是
—
d目前考虑执行文件是带有符号表)(不是调试符号表)沮.3.系统结构系统打总体框图如田3.
十交互式工具软件.2.设计墓鬈1oR)FTR^语言是一种块状结椅N
方式的程序设计语言,个程序块(程每主序,饲行程序,子函数子程序,据块子程数序)对独立,可啮毽缡译.罨穿之间穗并通过谓甩参数地址引用和公用块地址共享,理通信.因此,冒的逆编译也以程实我]序块为单位.
反攫中生
e控曩
高t鹭址
kS
拉薯
健曩
苴簪
i攥葺
ft
再垃
螭
构
■
墟
譬忻墙扭
*魄
DS^
幻
生
z.遗编译的实现通过以下五步:
)a.反i籀.|二进捌机器码转换戚易[巴=于分析的编形式,时提取程序块数据同
^
STc
CSE
田1.罩牧l蚱≮霸直
区信息.b.中间代码生成.中问代玛是一种介于{编指令和高袅语言语句之阊的表选亡
式.把执行疽和数据类星描述分离,立它建
下面对各模块进行说明:
1)总控模块SUP(uevsrro-Spr~dQo
uel)
各种描述表.在执行澎描述中,吾个操作效
不再是寄存嚣蛮存储重元,是各种描述雨
32
a.任务总控填块完成以下任务:
维普资讯
a.提取逆编译对象执行文件)
数组记录子程序正文段全部指令
的总体信息;b.实现对其它摸块的调用和)
控制;
及其操作数的值和特征.它直接被
中问代码生成模块引用.
c.完成一些公用子程序)b.赢程图(4图)
UU
打开执行件
一定厦簟诤螬■t相lf嚏t
一宣墨■辱电干覆庠
一甩Is^
王
——
甩
_cc
日s瓦£量檀挂框田
七=
月甩cEs
七==
■用D^s
b.框图(5图)
3)中间代码生成模块MC(dlGMied
cdegnrtroeeao)
a.任务
逐条分析r¥a,指令操作码转换成语a一8把啊码,算符;操作对象从寄存器,储运把存单元转换成高级语言中定义的变量.形成描述执行藏的mio表以及各种数据描述e
2反汇编模块RR—sel))AGeasmber
a.任务:
)
表.数据描述根据操作致的种类分成如下几张表:
存器袭(e—)工作单元表寄rgt,(okt,变元表(r—)变量表(a-'r—)哑wagt,vt
RAs根据区确定的子程序,取获
t,)地~(dr)转移表(r)过程和ad—,tb—.t
函致表(urt.另外还有一张引用表sb—)
(e-)它的作用是用于把一个操作数在rft,子程序中不同的使用地方建立一条约链.这对以后的数据结构分析很有用.以上各
b.流程图(6图)
该子程序局部数据区分配信息,并把正文段转换戚绱语言内部格式,内部格式中,在转换指令的相对位移值,为相对于本子程序入改
对位移值改为绝对地址值.里的这汇编语言内部格式是我们定义的
一
口地址的位移值,子指令中的相,表都是结构致组的形式.转
4.控制结构提取模块cE(ot[)SGnro
srcrxrco)tu~eetatr
33
个结梅致组lSsO—a.这个结构
维普资讯
s!
Jtrnlsr~lcneaaye)
艇据前面的讨沦.个F一ORTRAN语寄的源程序经过编译,接之后,的数据连它结的类型的说啊被丢失而反映在忙编指令上的类型是不完整的因此由中闻代码生成程序产生的数据描述表所描述的数据特性也是不完整的,可能会前后矛盾也不相容【同一个存储单元既作整数运算如又作实数运算).为此,们给每个描述表我
的每一项都建立了一个引用表指针,引用
表记录了全部引用此敦据项的地点.最后
图B中问代{生成f艟流程囝.}【
根据这条引用链练舍推理各种引用方式确定该数据项的特性.这个综合推理的过程比较复杂,困难.因此有些地方采用交互式来确定敦据特性.
DS流程图:
图8A()
我们知道F0RTRAN语言的逻辑运算符,AND,如OR,NOT等以及控制语句
如id.f0计算gt,00语句等等.它们都无法条忙编指令上反映出采必须形成程
一
序的控制瀛程图后才能确定控制结构提取模块的任务是分析执行流表mio的结构以形成控制流程图,后c然
i
:
;^档:
;:
6I+
主青;
^i
人相应的逻辑运算符或控制语句操作
符对mi再eo表进行相应的修改CE流程图(7S图)
H^
':
揖_td_蛐¨'tTH#la,wa#d
^!
}苎
目ItE9iⅡ■
b.语句生成模块s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FORTRAN 反编译 工具 系统 分析 设计