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...
Gespeichert in:
1. Verfasser: | |
---|---|
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&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 |