期刊文献+

C反编译控制流恢复的形式描述及算法 被引量:8

FORMAL DESCRIPTION AND ALGORITHM OF THE RECOVERY OF CONTROL FLOW IN C DECOMPILER
下载PDF
导出
摘要 反编译是软件逆向工程的重要组成部分.控制流恢复是C反编译的重要组成部分.本文首先描述了验证反编译结果与原程序功能等价的模型;其次从数学角度提出了C编译和反编译控制结构的数学模型并给出其性质(从函数的观点出发);再次根据对C控制语句编译结果的分析,以扩展的BNF形式描述了C控制语句反编译的约束属性文法;最后给出并说明了C反编译控制流恢复的算法及其运行示例. Decompilation is an important component of software reverse engineer-ing. Control flow recovery is a significant part of C decompilation. In this paper,first,a model to verify the functional equivalence of a decompiler's result to its orig-inal low-level input is described; second,mathematical models and their characteris-tics of control structures in C compilation and decompilation are constructed respec-tively and explained from the point of view of mathematics(compilation is basicallya many-to-one mapping but can be transferred into a surjection, decompilation is arelation in nature but can be converted into an one-to-one mapping by constraints,so there exists a deterministic algorithm on control flow decompilation); third, theconstrained attribute grammar of C executive instructions is introduced in the formof expanded BNF (traditional BNF with attributes attaching to some terminatorsand constraints attaching to each production) according to the analysis of the com-pilation results of C control statements (directed by this grammar, one can definite-ly induce the control structures of binary files with the model of push-down ma-chine, this is a process somewhat like pattern matching); finally, a recovery algo-rithm on C control flow decompilation and an example of its result are presented. Itis proved by practice that the algorithm presented here is right and robust. It alsohas hlgh speed. There is still many things worthwhile dealing with, such as conv-erting some While statements to For statements to be more fit for the C languageprogramming style, and so on. So, a post processing system can be attached to thesystem.
作者 赵蕾 王开铸
出处 《计算机学报》 EI CSCD 北大核心 1998年第1期87-91,共5页 Chinese Journal of Computers
基金 国防科工委项目基金
关键词 反编译 C语言 软件逆向工程 控制流恢复 Decompilation, C language, software tools, software reverse engineering
  • 相关文献

参考文献2

  • 1刘宗田,J Comput Sci Technol,1994年,9卷,4期,311页
  • 2刘宗田,计算机研究与发展,1986年,29卷,1期,32页

同被引文献28

  • 1胡政,陈凯明.C++逆编译中库函数识别研究[J].计算机工程与应用,2006,42(3):66-68. 被引量:8
  • 2侯文永,徐志宏.反编译过程中的结构变换[J].上海交通大学学报,1996,30(6):81-84. 被引量:3
  • 3刘宗田 朱逸芬.符于执行技术在68000C反编译程序中的应用[J].计算机学报,1988,6:631-637.
  • 4陈凯明 刘宗田.逆编译中按特征恢复数据类型[J].计算机研究与发展,2001,(38):209-213.
  • 5Cifuentes,C.Interprocedural data flow decompilation[J].Journal of Programming Languages,1996,4(2):77~99
  • 6Breuer,P.T*,Bowen,J.P*.Decompilation:the enumerationof types and grammars[J].ACM Transaction on Programming Languages and Systems,1994,16(5):1613~1647
  • 7Cifuentes C. Inter-procedural Data Flow Decompilation.Journal of Programming Languages, 1996, 4(2): 77-99
  • 8Breuer P T, Bowen J P. Decompilation: The Enumeration of Types and Grammars. ACM Transaction on Programming Languages and Systems, 1994, 16(5): 1613-1647
  • 9Jerome Miecznikowski, Etienne Gagnon. Decompile java class files with soot ! [ C ]. Addendum to the 2000 proceedings of the conference objected- oriented programming, systems, languages, and applications, New York : ACM ,2000. 111 - 112.
  • 10F Top. A survey of program slicing techniques[ J]. Journal of programming language, 1995,3 : 121 - 189.

引证文献8

二级引证文献19

相关作者

内容加载中请稍等...

相关机构

内容加载中请稍等...

相关主题

内容加载中请稍等...

浏览历史

内容加载中请稍等...
;
使用帮助 返回顶部