Type-Based Decompilation

We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: Mycroft, Alan
Format: Buchkapitel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 223
container_issue
container_start_page 208
container_title
container_volume
creator Mycroft, Alan
description We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent of the particular architecture by virtue of treating target instructions as register-transfer specifications. Target code expressed in such RTL form is then transformed into SSA form (undoing register colouring etc.); this then generates a set of type constraints. Iteration and recursion over data-structures causes synthesis of appropriate recursive C structs; this is triggered by and resolves occurs-check constraint violation. Other constraint violations are resolved by C’s casts and unions. In the limit we use heuristics to select between equally suitable C code — a good GUI would clearly facilitate its professional use.
doi_str_mv 10.1007/3-540-49099-X_14
format Book Chapter
fullrecord <record><control><sourceid>proquest_pasca</sourceid><recordid>TN_cdi_pascalfrancis_primary_1576940</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>EBC3072384_20_218</sourcerecordid><originalsourceid>FETCH-LOGICAL-c356t-dc395ced1a3a8e2fc89ee97df7f226ab8f39dd4c6d613f5ade335227150423b13</originalsourceid><addsrcrecordid>eNotUDlPwzAYNacIpXtHBlYX25_PEcopVWIpUjfL9QGBNAlxOvTfkx7f8knvkt5DaELJlBKi7gELTjA3xBi8tJSfoGsYkD2wPEUFlZRiAG7ODoQU0hhxjgoChGGjOFyiwggtGOVSX6Fxzj9kOGDCMFGgyWLbRvzocgy3T9E367asXF829Q26SK7KcXz8I_T58ryYveH5x-v77GGOPQjZ4-DBCB8DdeB0ZMlrE6NRIanEmHQrncCEwL0MkkISLkQAwZiignAGKwojdHfIbV32rkqdq32ZbduVa9dtLRVKGk4G2fQgywNTf8XOrprmN1tK7G4nC3Yob_ez2N1OgwGOuV3zt4m5t3Hn8LHuO1f5b9f2scsWiGKguWXEMqrhH49BZH4</addsrcrecordid><sourcetype>Index Database</sourcetype><iscdi>true</iscdi><recordtype>book_chapter</recordtype><pqid>EBC3072384_20_218</pqid></control><display><type>book_chapter</type><title>Type-Based Decompilation</title><source>Springer Books</source><creator>Mycroft, Alan</creator><contributor>Carbonell, Jaime G ; Siekmann, Jörg ; Goos, Gerhard</contributor><creatorcontrib>Mycroft, Alan ; Carbonell, Jaime G ; Siekmann, Jörg ; Goos, Gerhard</creatorcontrib><description>We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent of the particular architecture by virtue of treating target instructions as register-transfer specifications. Target code expressed in such RTL form is then transformed into SSA form (undoing register colouring etc.); this then generates a set of type constraints. Iteration and recursion over data-structures causes synthesis of appropriate recursive C structs; this is triggered by and resolves occurs-check constraint violation. Other constraint violations are resolved by C’s casts and unions. In the limit we use heuristics to select between equally suitable C code — a good GUI would clearly facilitate its professional use.</description><identifier>ISSN: 0302-9743</identifier><identifier>ISBN: 3540656995</identifier><identifier>ISBN: 9783540656999</identifier><identifier>EISSN: 1611-3349</identifier><identifier>EISBN: 354049099X</identifier><identifier>EISBN: 9783540490999</identifier><identifier>DOI: 10.1007/3-540-49099-X_14</identifier><identifier>OCLC: 958521468</identifier><identifier>LCCallNum: QA76.7-76.73QA76.76</identifier><language>eng</language><publisher>Germany: Springer Berlin / Heidelberg</publisher><subject>Applied sciences ; Assembler Code ; Computer science; control theory; systems ; Constraint Violation ; Exact sciences and technology ; Legacy Code ; Machine Code ; Programming languages ; Software ; Target Code</subject><ispartof>Lecture notes in computer science, 1999, p.208-223</ispartof><rights>Springer-Verlag Berlin Heidelberg 1999</rights><rights>1999 INIST-CNRS</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c356t-dc395ced1a3a8e2fc89ee97df7f226ab8f39dd4c6d613f5ade335227150423b13</citedby><relation>Lecture Notes in Computer Science</relation></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Uhttps://ebookcentral.proquest.com/covers/3072384-l.jpg</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/3-540-49099-X_14$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/3-540-49099-X_14$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>309,310,775,776,780,785,786,789,4036,4037,27902,38232,41418,42487</link.rule.ids><backlink>$$Uhttp://pascal-francis.inist.fr/vibad/index.php?action=getRecordDetail&amp;idt=1576940$$DView record in Pascal Francis$$Hfree_for_read</backlink></links><search><contributor>Carbonell, Jaime G</contributor><contributor>Siekmann, Jörg</contributor><contributor>Goos, Gerhard</contributor><creatorcontrib>Mycroft, Alan</creatorcontrib><title>Type-Based Decompilation</title><title>Lecture notes in computer science</title><description>We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent of the particular architecture by virtue of treating target instructions as register-transfer specifications. Target code expressed in such RTL form is then transformed into SSA form (undoing register colouring etc.); this then generates a set of type constraints. Iteration and recursion over data-structures causes synthesis of appropriate recursive C structs; this is triggered by and resolves occurs-check constraint violation. Other constraint violations are resolved by C’s casts and unions. In the limit we use heuristics to select between equally suitable C code — a good GUI would clearly facilitate its professional use.</description><subject>Applied sciences</subject><subject>Assembler Code</subject><subject>Computer science; control theory; systems</subject><subject>Constraint Violation</subject><subject>Exact sciences and technology</subject><subject>Legacy Code</subject><subject>Machine Code</subject><subject>Programming languages</subject><subject>Software</subject><subject>Target Code</subject><issn>0302-9743</issn><issn>1611-3349</issn><isbn>3540656995</isbn><isbn>9783540656999</isbn><isbn>354049099X</isbn><isbn>9783540490999</isbn><fulltext>true</fulltext><rsrctype>book_chapter</rsrctype><creationdate>1999</creationdate><recordtype>book_chapter</recordtype><recordid>eNotUDlPwzAYNacIpXtHBlYX25_PEcopVWIpUjfL9QGBNAlxOvTfkx7f8knvkt5DaELJlBKi7gELTjA3xBi8tJSfoGsYkD2wPEUFlZRiAG7ODoQU0hhxjgoChGGjOFyiwggtGOVSX6Fxzj9kOGDCMFGgyWLbRvzocgy3T9E367asXF829Q26SK7KcXz8I_T58ryYveH5x-v77GGOPQjZ4-DBCB8DdeB0ZMlrE6NRIanEmHQrncCEwL0MkkISLkQAwZiignAGKwojdHfIbV32rkqdq32ZbduVa9dtLRVKGk4G2fQgywNTf8XOrprmN1tK7G4nC3Yob_ez2N1OgwGOuV3zt4m5t3Hn8LHuO1f5b9f2scsWiGKguWXEMqrhH49BZH4</recordid><startdate>1999</startdate><enddate>1999</enddate><creator>Mycroft, Alan</creator><general>Springer Berlin / Heidelberg</general><general>Springer Berlin Heidelberg</general><general>Springer</general><scope>FFUUA</scope><scope>IQODW</scope></search><sort><creationdate>1999</creationdate><title>Type-Based Decompilation</title><author>Mycroft, Alan</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c356t-dc395ced1a3a8e2fc89ee97df7f226ab8f39dd4c6d613f5ade335227150423b13</frbrgroupid><rsrctype>book_chapters</rsrctype><prefilter>book_chapters</prefilter><language>eng</language><creationdate>1999</creationdate><topic>Applied sciences</topic><topic>Assembler Code</topic><topic>Computer science; control theory; systems</topic><topic>Constraint Violation</topic><topic>Exact sciences and technology</topic><topic>Legacy Code</topic><topic>Machine Code</topic><topic>Programming languages</topic><topic>Software</topic><topic>Target Code</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Mycroft, Alan</creatorcontrib><collection>ProQuest Ebook Central - Book Chapters - Demo use only</collection><collection>Pascal-Francis</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Mycroft, Alan</au><au>Carbonell, Jaime G</au><au>Siekmann, Jörg</au><au>Goos, Gerhard</au><format>book</format><genre>bookitem</genre><ristype>CHAP</ristype><atitle>Type-Based Decompilation</atitle><btitle>Lecture notes in computer science</btitle><seriestitle>Lecture Notes in Computer Science</seriestitle><date>1999</date><risdate>1999</risdate><spage>208</spage><epage>223</epage><pages>208-223</pages><issn>0302-9743</issn><eissn>1611-3349</eissn><isbn>3540656995</isbn><isbn>9783540656999</isbn><eisbn>354049099X</eisbn><eisbn>9783540490999</eisbn><abstract>We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent of the particular architecture by virtue of treating target instructions as register-transfer specifications. Target code expressed in such RTL form is then transformed into SSA form (undoing register colouring etc.); this then generates a set of type constraints. Iteration and recursion over data-structures causes synthesis of appropriate recursive C structs; this is triggered by and resolves occurs-check constraint violation. Other constraint violations are resolved by C’s casts and unions. In the limit we use heuristics to select between equally suitable C code — a good GUI would clearly facilitate its professional use.</abstract><cop>Germany</cop><pub>Springer Berlin / Heidelberg</pub><doi>10.1007/3-540-49099-X_14</doi><oclcid>958521468</oclcid><tpages>16</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 0302-9743
ispartof Lecture notes in computer science, 1999, p.208-223
issn 0302-9743
1611-3349
language eng
recordid cdi_pascalfrancis_primary_1576940
source Springer Books
subjects Applied sciences
Assembler Code
Computer science
control theory
systems
Constraint Violation
Exact sciences and technology
Legacy Code
Machine Code
Programming languages
Software
Target Code
title Type-Based Decompilation
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-10T09%3A04%3A45IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_pasca&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=bookitem&rft.atitle=Type-Based%20Decompilation&rft.btitle=Lecture%20notes%20in%20computer%20science&rft.au=Mycroft,%20Alan&rft.date=1999&rft.spage=208&rft.epage=223&rft.pages=208-223&rft.issn=0302-9743&rft.eissn=1611-3349&rft.isbn=3540656995&rft.isbn_list=9783540656999&rft_id=info:doi/10.1007/3-540-49099-X_14&rft_dat=%3Cproquest_pasca%3EEBC3072384_20_218%3C/proquest_pasca%3E%3Curl%3E%3C/url%3E&rft.eisbn=354049099X&rft.eisbn_list=9783540490999&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=EBC3072384_20_218&rft_id=info:pmid/&rfr_iscdi=true