Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1109/SEFM.2005.13guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Control Code Obfuscation by Abstract Interpretation

Published: 07 September 2005 Publication History

Abstract

Control code obfuscation is intended to prevent malicious reverse engineering of software by masking the program control flow. These obfuscating transformations often rely on the existence of opaque predicates, that support the design of transformations that break up the program control flow. We prove that an algorithm for control obfuscation by opaque predicate insertion can be systematically derived as an abstraction of a suitable semantic transformation. In this framework, deobfuscation is interpreted as an attacker which can observe the computational behaviour of programs up to a given precision degree. Both obfuscation and deobfuscation can therefore be interpreted as approximations of program semantics, where approximation is formalized using abstract interpretation theory. In particular we prove that abstract interpretation provides here the adequate setting to measure the potency of an obfuscation algorithm by comparing the degree of abstraction of the most abstract domains which are able to disclose opaque predicates. Keywords: Code Obfuscation, Abstract Interpretation, Program Transformation, Program analysis, Semantics.

References

[1]
C. Thomborson C. Collberg. Breaking abstrcations and unstructural data structures. In Proc. of the 1994 IEEE Internal. Conf. on Computer Languages (ICCL '98), 1998.
[2]
C. Thomborson C. Collberg. Watermarking, tamper-proofing, and obduscation-tools for software protection. IEEE Trans. Software Eng., pages 735-746, 2002.
[3]
D. Low C. Collberg, C. Thomborson. A taxionomy of obduscating transformations. Technical Report 148, Dept. of Computer Science, The Univ. of Auckland, 1997.
[4]
D. Low C. Collberg, C. Thomborson. Manifactiring cheap, resilient, and stealthy opaque constructs. In Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '98). ACM Press, 1998.
[5]
J. Knight C. Wang, J. Hill and J. Davidson. Software tamper resistance: Obstructing static analysis of programs. Technical report CS-2000-12, Department of Computer Science, University of Virginia, 2000.
[6]
Y. Caseau. Abstract interpretation of constraints on order-sorted domains. In V. Saraswat and K. Ueda, editors, Proc. of the 1991 Internat. Logic Programming Symp. (ILPS '91). pages 435-452. The MIT Press, Cambridge, Mass., 1991.
[7]
S. Chandrasekharan and S. Debray. Deobfuscation: Improving reverse engineering of obfuscated code. Draft, 2005.
[8]
E. M. Clarke, O. Grumberg. and D. E. Long. Model checking and abstraction. ACM Trans. Program. Lang. Syst., 16(5):1512-1542, 1994.
[9]
R. Cleaveland and J. Riely. Testing-based abstractions for value-passing systems. In B. Jonsson and J. Parrow, editors. Proc. of the 5th Internat. Conf on Concurrency Theory (CONCUR '94). volume 836 of Lecture Notes in Computer Science, pages 417-432. Springer-Verlag, 1994.
[10]
M. Comini and G. Levi. An algebraic theory of observables. In M. Bruynooghe, editor. Proc. of the 1994 Intetnat. Logic Programming Symp. (ILPS '94), pages 172-186. The MIT Press, Cambridgr. Mass., 1994.
[11]
P. Cousot. Semantic foundations of program analysis. In S. S. Muchnick and N. D. Jones. editors, Program Flow Analysis: Theory and Applications, pages 303-342. Prentice-Hall, Englewood Cliffs, NJ, 1981.
[12]
P. Cousot. Abstract interpretation. ACM Comput. Surv., 28(2):324-328. 1996.
[13]
P. Cousot. Types as abstract interpretations (Invited Paper). In Conference Record of the 24th ACM Symp. on Principles of Programming Languages (POPL '97). pages 316-331. ACM Press. New York, 1997.
[14]
P. Cousot. Constructive design of a hierarchy of semantics of a transition system by abstract interpretation. Theor. Comput. Sci., 2000.
[15]
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the 4th ACM Symp. on Principles of Programming Longuages (POPL '77), pages 238-252. ACM Press, New York, 1977.
[16]
P. Cousot and R. Cousol. Systematic design of program analysis frameworks. In Conference Record of the 6th ACM Symp. on Principles of Programming Languages (POPL '79), pages 269-282. ACM Press. New York, 1979.
[17]
P. Cousot and R. Cousot. Inductive definitions. semantics and abstract interpretation. In Conference Record of the 19th ACM Symp. on Principles of Programming Languages (POPL '92), pages 83-94. ACM Press. New York, 1992.
[18]
P. Cousot and R. Cousot Systematic design of program transformation frameworks by abstract interpretation. In Conference Record of the Twenryninth Annual ACM SlGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 178-190. New York. NY, 2002. ACM Press.
[19]
D. Dams. R. Gerth. and O. Grumberg. Abstract interpretation of reactive systems. ACM Trans. Program. Lang. Syst., 19(2):253-291, 1997.
[20]
R. Giacobazzi. "Optimal" collecting semantics for analysis in a hierarchy of logic program semantics. In C. Puech and R. Reischuk. editors, Proc. of the 13th Internat. Symp. on Theoretical Aspects of Computer Science (STACS '96), volume 1046 of Lecture Notes in Computer Science, pages 503-514. Springer-Verlag, Berlin. 1996.
[21]
R. Giacobazzi and E. Quintarelli. Incompleteness. counterexamples and refinements in abstract model-checking. In P. Cousot. editor, Proc. of The 8th International Static Analysis Symposium. SAS'O1, volume 2126 of Lecture Notes in Computer Science. pages 356-373. Sprillger-Verlag, 2001.
[22]
R. Giacobazzi. F. Ranzato. and F. Scozzari. Making abstract interpretations complete J. of the ACM., 47(2):361-416, 2000.
[23]
S. Graf. Characterization of a sequentially consistent memory and verification of a cache memory by abstraction. Distributed Computing. 12(2-3):75-90, 1999.
[24]
P. Granger. Static analysis of arithmetical congruences. Intern. J. Computer Math., 30:165-190, 1989.
[25]
C. Loiseaux, S. Graf, J. Sifakis. A. Bouajjani, and S. Bensalem. Property preserving abstractions for the verification of concurrent systems. Formal Methods Syst. Des., 6:11-44, 1995.
[26]
D. Low. Java control flow obfuscation. Master of science thesis, Department of Computer Science. The University of Auckland. 1998.
[27]
B. Monsuez. System F and abstract interpretation. In A. Mycroft, editor. Proc. of the 2nd Internat. Static Analysis Symp. (SAS '95). volume 983 of Lecture Notes in Computer Science, pages 279-295. Springer-Verlag, Berlin. 1995.
[28]
P. Ørbæk. Can you trust your data? In P.D. Mosses, M. Nielsen, and M.I. Schwartzbach. editors, Proc. of the 6th Internat. Joint Conf. CAAP/FASE. Theory and Practice of Software Devolpment (TAPSOFT 95). volume 915 of Lecture Notes in Computer Science. pages 575-589. Springer-Verlag, 1995.
[29]
P. Ørbæk and J. Palsberg. Trust in the lambda-calculus J. Funct. Program., 7(6):557-591, 1997.
[30]
R. Paige. Future directions in program transformations. In ACM SIGPLAN Not., volume 32. pages 94-97. 1997.
[31]
D. Plaisted. Theorem proving with abstraction. Artif. Intell., 16:47-108. 1981.
[32]
M. Dalla Preda and R. Giacobazzi. Semantic-based code obfuscation by abstract interpretation. In Proceedings of the 32th International Colloquium on Automata, Languages and Programming (ICALP'O5 - Track B). volume 3580, pages 1325-1336. Springer-Verlag. 2005. July 11-15, Lisboa, Portugal.
[33]
M. Madou S. K. Udupa. S. Debray. Deobfuscation: Reverse engineering obfuscated code. Draft, 2005.
[34]
A. Venet. Abstract interpretation of the ¿-calculus. In M. Darn, editor. Proc. of the 5th LOMAPS Meeting on Analysis and Verification of High-Level Concurrent Languages. volume 1192 of Lecture Notes in Computer Science, pages 51-75. Springer-Verlag, Berlin, 1996.

Cited By

View all
  • (2024)Monotonicity and the Precision of Program AnalysisProceedings of the ACM on Programming Languages10.1145/36328978:POPL(1629-1662)Online publication date: 5-Jan-2024
  • (2018)Characterizing a property-driven obfuscation strategyJournal of Computer Security10.3233/JCS-1467226:1(31-69)Online publication date: 1-Jan-2018
  • (2016)Code obfuscation against symbolic execution attacksProceedings of the 32nd Annual Conference on Computer Security Applications10.1145/2991079.2991114(189-200)Online publication date: 5-Dec-2016
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
SEFM '05: Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
September 2005
433 pages
ISBN:0769524354

Publisher

IEEE Computer Society

United States

Publication History

Published: 07 September 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 16 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Monotonicity and the Precision of Program AnalysisProceedings of the ACM on Programming Languages10.1145/36328978:POPL(1629-1662)Online publication date: 5-Jan-2024
  • (2018)Characterizing a property-driven obfuscation strategyJournal of Computer Security10.3233/JCS-1467226:1(31-69)Online publication date: 1-Jan-2018
  • (2016)Code obfuscation against symbolic execution attacksProceedings of the 32nd Annual Conference on Computer Security Applications10.1145/2991079.2991114(189-200)Online publication date: 5-Dec-2016
  • (2015)A framework for measuring software obfuscation resilience against automated attacksProceedings of the 1st International Workshop on Software Protection10.5555/2821429.2821442(45-51)Online publication date: 16-May-2015
  • (2014)Analyzing program dependencies for malware detectionProceedings of ACM SIGPLAN on Program Protection and Reverse Engineering Workshop 201410.1145/2556464.2556470(1-7)Online publication date: 22-Jan-2014
  • (2013)AppInkProceedings of the 8th ACM SIGSAC symposium on Information, computer and communications security10.1145/2484313.2484315(1-12)Online publication date: 8-May-2013
  • (2013)A formal framework for property-driven obfuscation strategiesProceedings of the 19th international conference on Fundamentals of Computation Theory10.1007/978-3-642-40164-0_15(133-144)Online publication date: 19-Aug-2013
  • (2009)Semantics-based code obfuscation by abstract interpretationJournal of Computer Security10.5555/1662641.166264417:6(855-908)Online publication date: 1-Dec-2009
  • (2009)Program transformation for numerical precisionProceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation10.1145/1480945.1480960(101-110)Online publication date: 19-Jan-2009
  • (2009)A graph approach to quantitative analysis of control-flow obfuscating transformationsIEEE Transactions on Information Forensics and Security10.1109/TIFS.2008.20110774:2(257-267)Online publication date: 1-Jun-2009
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media