Context-sensitive analysis without calling-context

Detalhes bibliográficos
Autor(a) principal: Lakhotia, Arun
Data de Publicação: 2010
Outros Autores: Boccardo, Davidson R., Singh, Anshuman, Manacero Jr., Aleardo [UNESP]
Tipo de documento: Artigo de conferência
Idioma: eng
Título da fonte: Repositório Institucional da UNESP
Texto Completo: http://dx.doi.org/10.1007/s10990-011-9080-1
http://hdl.handle.net/11449/71846
Resumo: Since Sharir and Pnueli, algorithms for context-sensitivity have been defined in terms of 'valid' paths in an interprocedural flow graph. The definition of valid paths requires atomic call and ret statements, and encapsulated procedures. Thus, the resulting algorithms are not directly applicable when behavior similar to call and ret instructions may be realized using non-atomic statements, or when procedures do not have rigid boundaries, such as with programs in low level languages like assembly or RTL. We present a framework for context-sensitive analysis that requires neither atomic call and ret instructions, nor encapsulated procedures. The framework presented decouples the transfer of control semantics and the context manipulation semantics of statements. A new definition of context-sensitivity, called stack contexts, is developed. A stack context, which is defined using trace semantics, is more general than Sharir and Pnueli's interprocedural path based calling-context. An abstract interpretation based framework is developed to reason about stack-contexts and to derive analogues of calling-context based algorithms using stack-context. The framework presented is suitable for deriving algorithms for analyzing binary programs, such as malware, that employ obfuscations with the deliberate intent of defeating automated analysis. The framework is used to create a context-sensitive version of Venable et al.'s algorithm for analyzing x86 binaries without requiring that a binary conforms to a standard compilation model for maintaining procedures, calls, and returns. Experimental results show that a context-sensitive analysis using stack-context performs just as well for programs where the use of Sharir and Pnueli's calling-context produces correct approximations. However, if those programs are transformed to use call obfuscations, a contextsensitive analysis using stack-context still provides the same, correct results and without any additional overhead. © Springer Science+Business Media, LLC 2011.
id UNSP_b048ecdf7be798f53c864e7e6707593e
oai_identifier_str oai:repositorio.unesp.br:11449/71846
network_acronym_str UNSP
network_name_str Repositório Institucional da UNESP
repository_id_str 2946
spelling Context-sensitive analysis without calling-contextAnalysis of binariesContext-sensitive analysisDeobfuscationObfuscationAbstract interpretationsAutomated analysisBinary programsContext sensitivityContext-sensitiveFlow graphInter-proceduralMalwaresPath-basedRigid boundariesTrace semanticsAbstractingAlgorithmsAtomsSemanticsJava programming languageSince Sharir and Pnueli, algorithms for context-sensitivity have been defined in terms of 'valid' paths in an interprocedural flow graph. The definition of valid paths requires atomic call and ret statements, and encapsulated procedures. Thus, the resulting algorithms are not directly applicable when behavior similar to call and ret instructions may be realized using non-atomic statements, or when procedures do not have rigid boundaries, such as with programs in low level languages like assembly or RTL. We present a framework for context-sensitive analysis that requires neither atomic call and ret instructions, nor encapsulated procedures. The framework presented decouples the transfer of control semantics and the context manipulation semantics of statements. A new definition of context-sensitivity, called stack contexts, is developed. A stack context, which is defined using trace semantics, is more general than Sharir and Pnueli's interprocedural path based calling-context. An abstract interpretation based framework is developed to reason about stack-contexts and to derive analogues of calling-context based algorithms using stack-context. The framework presented is suitable for deriving algorithms for analyzing binary programs, such as malware, that employ obfuscations with the deliberate intent of defeating automated analysis. The framework is used to create a context-sensitive version of Venable et al.'s algorithm for analyzing x86 binaries without requiring that a binary conforms to a standard compilation model for maintaining procedures, calls, and returns. Experimental results show that a context-sensitive analysis using stack-context performs just as well for programs where the use of Sharir and Pnueli's calling-context produces correct approximations. However, if those programs are transformed to use call obfuscations, a contextsensitive analysis using stack-context still provides the same, correct results and without any additional overhead. © Springer Science+Business Media, LLC 2011.University of Louisiana at Lafayette, P.O. Box 44330, Lafayette, LA 70504Inmetro - National Institute of Metrology, Quality and Technology, Rio de JaneiroPaulista State University (UNESP), São PauloPaulista State University (UNESP), São PauloUniversity of Louisiana at LafayetteInmetro - National Institute of Metrology, Quality and TechnologyUniversidade Estadual Paulista (Unesp)Lakhotia, ArunBoccardo, Davidson R.Singh, AnshumanManacero Jr., Aleardo [UNESP]2014-05-27T11:24:47Z2014-05-27T11:24:47Z2010-09-01info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/conferenceObject275-313http://dx.doi.org/10.1007/s10990-011-9080-1Higher-Order and Symbolic Computation, v. 23, n. 3, p. 275-313, 2010.1388-3690http://hdl.handle.net/11449/7184610.1007/s10990-011-9080-12-s2.0-84855665553Scopusreponame:Repositório Institucional da UNESPinstname:Universidade Estadual Paulista (UNESP)instacron:UNESPengHigher-Order and Symbolic Computationinfo:eu-repo/semantics/openAccess2021-10-23T21:37:50Zoai:repositorio.unesp.br:11449/71846Repositório InstitucionalPUBhttp://repositorio.unesp.br/oai/requestopendoar:29462024-08-05T18:21:13.434272Repositório Institucional da UNESP - Universidade Estadual Paulista (UNESP)false
dc.title.none.fl_str_mv Context-sensitive analysis without calling-context
title Context-sensitive analysis without calling-context
spellingShingle Context-sensitive analysis without calling-context
Lakhotia, Arun
Analysis of binaries
Context-sensitive analysis
Deobfuscation
Obfuscation
Abstract interpretations
Automated analysis
Binary programs
Context sensitivity
Context-sensitive
Flow graph
Inter-procedural
Malwares
Path-based
Rigid boundaries
Trace semantics
Abstracting
Algorithms
Atoms
Semantics
Java programming language
title_short Context-sensitive analysis without calling-context
title_full Context-sensitive analysis without calling-context
title_fullStr Context-sensitive analysis without calling-context
title_full_unstemmed Context-sensitive analysis without calling-context
title_sort Context-sensitive analysis without calling-context
author Lakhotia, Arun
author_facet Lakhotia, Arun
Boccardo, Davidson R.
Singh, Anshuman
Manacero Jr., Aleardo [UNESP]
author_role author
author2 Boccardo, Davidson R.
Singh, Anshuman
Manacero Jr., Aleardo [UNESP]
author2_role author
author
author
dc.contributor.none.fl_str_mv University of Louisiana at Lafayette
Inmetro - National Institute of Metrology, Quality and Technology
Universidade Estadual Paulista (Unesp)
dc.contributor.author.fl_str_mv Lakhotia, Arun
Boccardo, Davidson R.
Singh, Anshuman
Manacero Jr., Aleardo [UNESP]
dc.subject.por.fl_str_mv Analysis of binaries
Context-sensitive analysis
Deobfuscation
Obfuscation
Abstract interpretations
Automated analysis
Binary programs
Context sensitivity
Context-sensitive
Flow graph
Inter-procedural
Malwares
Path-based
Rigid boundaries
Trace semantics
Abstracting
Algorithms
Atoms
Semantics
Java programming language
topic Analysis of binaries
Context-sensitive analysis
Deobfuscation
Obfuscation
Abstract interpretations
Automated analysis
Binary programs
Context sensitivity
Context-sensitive
Flow graph
Inter-procedural
Malwares
Path-based
Rigid boundaries
Trace semantics
Abstracting
Algorithms
Atoms
Semantics
Java programming language
description Since Sharir and Pnueli, algorithms for context-sensitivity have been defined in terms of 'valid' paths in an interprocedural flow graph. The definition of valid paths requires atomic call and ret statements, and encapsulated procedures. Thus, the resulting algorithms are not directly applicable when behavior similar to call and ret instructions may be realized using non-atomic statements, or when procedures do not have rigid boundaries, such as with programs in low level languages like assembly or RTL. We present a framework for context-sensitive analysis that requires neither atomic call and ret instructions, nor encapsulated procedures. The framework presented decouples the transfer of control semantics and the context manipulation semantics of statements. A new definition of context-sensitivity, called stack contexts, is developed. A stack context, which is defined using trace semantics, is more general than Sharir and Pnueli's interprocedural path based calling-context. An abstract interpretation based framework is developed to reason about stack-contexts and to derive analogues of calling-context based algorithms using stack-context. The framework presented is suitable for deriving algorithms for analyzing binary programs, such as malware, that employ obfuscations with the deliberate intent of defeating automated analysis. The framework is used to create a context-sensitive version of Venable et al.'s algorithm for analyzing x86 binaries without requiring that a binary conforms to a standard compilation model for maintaining procedures, calls, and returns. Experimental results show that a context-sensitive analysis using stack-context performs just as well for programs where the use of Sharir and Pnueli's calling-context produces correct approximations. However, if those programs are transformed to use call obfuscations, a contextsensitive analysis using stack-context still provides the same, correct results and without any additional overhead. © Springer Science+Business Media, LLC 2011.
publishDate 2010
dc.date.none.fl_str_mv 2010-09-01
2014-05-27T11:24:47Z
2014-05-27T11:24:47Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/conferenceObject
format conferenceObject
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://dx.doi.org/10.1007/s10990-011-9080-1
Higher-Order and Symbolic Computation, v. 23, n. 3, p. 275-313, 2010.
1388-3690
http://hdl.handle.net/11449/71846
10.1007/s10990-011-9080-1
2-s2.0-84855665553
url http://dx.doi.org/10.1007/s10990-011-9080-1
http://hdl.handle.net/11449/71846
identifier_str_mv Higher-Order and Symbolic Computation, v. 23, n. 3, p. 275-313, 2010.
1388-3690
10.1007/s10990-011-9080-1
2-s2.0-84855665553
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv Higher-Order and Symbolic Computation
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv 275-313
dc.source.none.fl_str_mv Scopus
reponame:Repositório Institucional da UNESP
instname:Universidade Estadual Paulista (UNESP)
instacron:UNESP
instname_str Universidade Estadual Paulista (UNESP)
instacron_str UNESP
institution UNESP
reponame_str Repositório Institucional da UNESP
collection Repositório Institucional da UNESP
repository.name.fl_str_mv Repositório Institucional da UNESP - Universidade Estadual Paulista (UNESP)
repository.mail.fl_str_mv
_version_ 1808128923607760896