{"title":"生成逆向工程工具的系统","authors":"G. Canfora, A. De Lucia, G. Di Lucca","doi":"10.1109/STEP.1997.615462","DOIUrl":null,"url":null,"abstract":"Most current reverse engineering techniques start with an analysis of the system's source code to derive structural information, based on compiler technology. As a consequence of the maturity of the field, several formal program models exist that have allowed the automatic generation of language processing front-ends. However, the software engineer has to code the data structures that implement the program model and the algorithms that implement the desired analysis. Thus, while the domain of code analysis is well understood, economic convenience very often leads to rigid code analysers that perform a fixed set of analyses and produce standard reports that users can only customise marginally. We have implemented a system for developing code analysers that uses a unique database to store both a no-loss fine-grained intermediate representation and the analysis results. The analysers are automatically generated from a very high-level specification of the desired analyses expressed in a domain-oriented language. We use an algebraic representation, called F(p), as the user-visible intermediate representation. Analysers are specified in a logic-based language, called F(p)-l, which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information that the algebraic expression indexes. A foreign-language interface allows the analysers to be embedded into C programs to facilitate interoperation with other tools.","PeriodicalId":68622,"journal":{"name":"软件","volume":"35 1","pages":"34-44"},"PeriodicalIF":0.0000,"publicationDate":"1997-07-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":"{\"title\":\"A system for generating reverse engineering tools\",\"authors\":\"G. Canfora, A. De Lucia, G. Di Lucca\",\"doi\":\"10.1109/STEP.1997.615462\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Most current reverse engineering techniques start with an analysis of the system's source code to derive structural information, based on compiler technology. As a consequence of the maturity of the field, several formal program models exist that have allowed the automatic generation of language processing front-ends. However, the software engineer has to code the data structures that implement the program model and the algorithms that implement the desired analysis. Thus, while the domain of code analysis is well understood, economic convenience very often leads to rigid code analysers that perform a fixed set of analyses and produce standard reports that users can only customise marginally. We have implemented a system for developing code analysers that uses a unique database to store both a no-loss fine-grained intermediate representation and the analysis results. The analysers are automatically generated from a very high-level specification of the desired analyses expressed in a domain-oriented language. We use an algebraic representation, called F(p), as the user-visible intermediate representation. Analysers are specified in a logic-based language, called F(p)-l, which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information that the algebraic expression indexes. A foreign-language interface allows the analysers to be embedded into C programs to facilitate interoperation with other tools.\",\"PeriodicalId\":68622,\"journal\":{\"name\":\"软件\",\"volume\":\"35 1\",\"pages\":\"34-44\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1997-07-14\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"2\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"软件\",\"FirstCategoryId\":\"1093\",\"ListUrlMain\":\"https://doi.org/10.1109/STEP.1997.615462\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"软件","FirstCategoryId":"1093","ListUrlMain":"https://doi.org/10.1109/STEP.1997.615462","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Most current reverse engineering techniques start with an analysis of the system's source code to derive structural information, based on compiler technology. As a consequence of the maturity of the field, several formal program models exist that have allowed the automatic generation of language processing front-ends. However, the software engineer has to code the data structures that implement the program model and the algorithms that implement the desired analysis. Thus, while the domain of code analysis is well understood, economic convenience very often leads to rigid code analysers that perform a fixed set of analyses and produce standard reports that users can only customise marginally. We have implemented a system for developing code analysers that uses a unique database to store both a no-loss fine-grained intermediate representation and the analysis results. The analysers are automatically generated from a very high-level specification of the desired analyses expressed in a domain-oriented language. We use an algebraic representation, called F(p), as the user-visible intermediate representation. Analysers are specified in a logic-based language, called F(p)-l, which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information that the algebraic expression indexes. A foreign-language interface allows the analysers to be embedded into C programs to facilitate interoperation with other tools.
期刊介绍:
Computer engineering & Software, founded in 1979, is an academic journal of information technology sponsored by China Association for Science and Technology and China Institute of Electronics and Tianjin Institute of Electronics.
Computer engineering & Software has columns such as expert Forum, Fund project papers, software and database technology research, application technology and research, network and communication, image processing and application, multimedia technology application Artificial intelligence and recognition.
Computer engineering & Software is the source Journal of China Academic Periodical Comprehensive Evaluation Database, the Journal of China Core Periodical (Selection) Database, the source journal of Peking University's Chinese Core Periodical Overview (the first edition in 1992), the Journal of Wanfang data-Digital Periodical Group full-text Collection, the Journal of Chinese Science and Technology Periodical Database (full-text edition), and Wave Journals included in the "Copernicus Index" have been included in the United States "Cambridge Scientific Abstracts", the United States "Uhlig International Journal Guide", the JST Japan Science and Technology Promotion Agency database (2018) and other Chinese and foreign databases.