Extended Report on the Obfuscated Integration of Software Protections
Pith reviewed 2026-05-25 11:02 UTC · model grok-4.3
The pith
Combining code layout randomization, interprocedurally coupled opaque predicates, and code factoring with control flow idioms blurs module boundaries to slow reverse engineering of protected software.
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
Core claim
To counter exploitation of the modular nature of applications and their protections at different levels of granularity, the boundaries between the modules in the program need to be obfuscated by combining three cross-boundary protection techniques: code layout randomization, interprocedurally coupled opaque predicates, and code factoring with intraprocedural control flow idioms. Elaborate experimental evaluation and extensive sensitivity analysis on realistic use cases and state-of-the-art tools demonstrate the technique's potency and resilience to advanced attacks.
What carries the argument
The combination of code layout randomization, interprocedurally coupled opaque predicates, and code factoring with intraprocedural control flow idioms to obfuscate module boundaries and thwart disassembly.
If this is right
- Attackers can no longer exploit modular boundaries to speed up the identification and comprehension process of relevant code, assets, and applied protections.
- The modular nature of applications and protections becomes less exploitable at different levels of granularity.
- The disassembly process and in particular the reconstruction of functions is thwarted.
- The protections demonstrate potency and resilience through sensitivity analysis on realistic use cases.
Where Pith is reading between the lines
- The same boundary obfuscation approach could be tested on protection techniques not covered in the original experiments.
- Protection tool designers might adopt these three techniques as a standard cross-boundary layer in future releases.
- The method could reduce the effectiveness of automated binary analysis pipelines that rely on clear module separation.
Load-bearing premise
The chosen state-of-the-art tools and realistic use cases adequately represent the capabilities and scenarios of real-world attackers attempting to exploit modular boundaries in protected software.
What would settle it
An experiment in which a new attacker tool or different use case successfully reconstructs functions and identifies assets faster despite the combined protections would disprove the claimed resilience.
Figures
read the original abstract
To counter man-at-the-end attacks such as reverse engineering and tampering, software is often protected with techniques that require support modules to be linked into the application. It is well-known, however, that attackers can exploit the modular nature of applications and their protections to speed up the identification and comprehension process of the relevant code, the assets, and the applied protections. To counter that exploitation of modularity at different levels of granularity, the boundaries between the modules in the program need to be obfuscated. We propose to do so by combining three cross-boundary protection techniques that thwart the disassembly process and in particular the reconstruction of functions: code layout randomization, interprocedurally coupled opaque predicates, and code factoring with intraprocedural control flow idioms. By means of an elaborate experimental evaluation and an extensive sensitivity analysis on realistic use cases and state-of-the-art tools, we demonstrate our technique's potency and resilience to advanced attacks. All relevant code is publicly available online.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper proposes obfuscating module boundaries in software protections against man-at-the-end attacks by combining code layout randomization, interprocedurally coupled opaque predicates, and code factoring with intraprocedural control flow idioms. It supports the claims of potency and resilience via an elaborate experimental evaluation and sensitivity analysis on realistic use cases with state-of-the-art tools, and makes all relevant code publicly available.
Significance. If the empirical results hold, the work offers a practical cross-boundary obfuscation method that directly addresses exploitation of modularity in protected applications. The public code release is a clear strength, enabling reproducibility and independent validation of the experiments on the described use cases.
minor comments (2)
- Abstract: The phrase 'elaborate experimental evaluation' is imprecise; specifying the number of use cases, tools, and key metrics (e.g., success rates or attack times) would improve clarity without altering the central claim.
- The manuscript would benefit from an explicit limitations subsection discussing the scope of the chosen attack tools, even if the primary claims are scoped to the tested scenarios.
Simulated Author's Rebuttal
We thank the referee for the positive assessment of our work, the recognition of its practical contributions to cross-boundary obfuscation, and the recommendation for minor revision. The public code release and experimental evaluation on realistic use cases are indeed central strengths.
Circularity Check
No significant circularity
full rationale
The paper is an empirical report on combining three obfuscation techniques (code layout randomization, coupled opaque predicates, code factoring) and evaluating them experimentally on use cases with state-of-the-art tools. No derivation chain, equations, predictions, or first-principles results are claimed or present in the abstract or described approach. The central claim rests on experimental demonstration rather than any reduction of outputs to fitted inputs or self-citations by construction. The evaluation is self-contained against external benchmarks (public code, realistic use cases, independent tools), with no load-bearing self-referential steps.
Axiom & Free-Parameter Ledger
Reference graph
Works this paper leans on
-
[1]
M. Ceccato, P . Tonella, C. Basile, P . Falcarin, M. Torchiano, B. Cop- pens, and B. De Sutter, “Understanding the behaviour of hackers while performing attack tasks in a professional setting and in a public challenge,” Empirical Software Engineering, vol. 24, no. 1, pp. 240–286, 2019
work page 2019
-
[2]
Software protection with code mobility,
A. Cabutto, P . Falcarin, B. Abrath, B. Coppens, and B. De Sutter, “Software protection with code mobility,” in Proc. of the Second ACM Workshop on Moving Target Defense, 2015, pp. 95–103
work page 2015
-
[3]
Barrier slicing for remote software trusting,
M. Ceccato, M. Dalla Preda, J. Nagra, C. Collberg, and P . Tonella, “Barrier slicing for remote software trusting,” in Seventh IEEE Int’l Working Conf. on Source Code Analysis and Manipulation , 2007, pp. 27–36
work page 2007
-
[4]
Reactive attestation: Automatic detection and re- action to software tampering attacks,
A. Viticchi ´e, C. Basile, A. Avancini, M. Ceccato, B. Abrath, and B. Coppens, “Reactive attestation: Automatic detection and re- action to software tampering attacks,” in Proc. of the 2016 ACM Workshop on Software PROtection, 2016, pp. 73–84
work page 2016
-
[5]
Tightly-coupled self-debugging software protection,
B. Abrath, B. Coppens, S. Volckaert, J. Wijnant, and B. De Sutter, “Tightly-coupled self-debugging software protection,” in Proc. of the 6th Workshop on Software Security, Protection, and Reverse Engi- neering, 2016, p. 7
work page 2016
-
[6]
A secure and robust ap- proach to software tamper resistance,
S. Ghosh, J. D. Hiser, and J. W. Davidson, “A secure and robust ap- proach to software tamper resistance,” in Proc. of the Int’l Workshop on Information Hiding, 2010, pp. 33–47
work page 2010
-
[7]
J. Nagra and C. Collberg, Surreptitious Software: Obfuscation, Wa- termarking, and Tamperproofing for Software Protection . Pearson Education, 2009
work page 2009
-
[8]
Cognitive complexity of software and its measure- ment,
Y. Wang, “Cognitive complexity of software and its measure- ment,” in 2006 5th IEEE Int’l Conf. on Cognitive Informatics , vol. 1, July 2006, pp. 226–235
work page 2006
-
[9]
A measure of control flow complexity in program text,
M. R. Woodward, M. A. Hennell, and D. Hedley, “A measure of control flow complexity in program text,” IEEE Trans. Softw. Eng., vol. 5, no. 1, pp. 45–50, Jan. 1979
work page 1979
-
[10]
Obfuscation of executable code to improve resistance to static disassembly,
C. Linn and S. Debray, “Obfuscation of executable code to improve resistance to static disassembly,” in Proc. of the 10th ACM Conf. on Computer and Communications Security, 2003, pp. 290–299
work page 2003
-
[11]
Diablo: a reliable, retargetable and extensible link-time rewriting framework,
L. Van Put, D. Chanet, B. De Bus, B. De Sutter, and K. De Bosschere, “Diablo: a reliable, retargetable and extensible link-time rewriting framework,” in Proc. of the Fifth IEEE Int’l Symposium on Signal Processing and Information Technology, 2005., 2005, pp. 7–12
work page 2005
-
[12]
Compiler techniques for code compaction,
S. K. Debray, W. Evans, R. Muth, and B. De Sutter, “Compiler techniques for code compaction,” ACM Transactions on Program- ming languages and Systems (TOPLAS) , vol. 22, no. 2, pp. 378–415, 2000
work page 2000
-
[13]
Muchnick et al., Advanced compiler design implementation
S. Muchnick et al., Advanced compiler design implementation . Mor- gan kaufmann, 1997
work page 1997
-
[14]
Feedback-driven binary code diversification,
B. Coppens, B. De Sutter, and J. Maebe, “Feedback-driven binary code diversification,” ACM Transactions on Architecture and Code Optimization (TACO), vol. 9, no. 4, p. 24, 2013
work page 2013
-
[15]
Address space layout permutation (ASLP): Towards fine-grained randomization of commodity software,
C. Kil, J. Jun, C. Bookholt, J. Xu, and P . Ning, “Address space layout permutation (ASLP): Towards fine-grained randomization of commodity software,” in Proc. 22nd Annual Computer Security Applications Conf., 2006, pp. 339–348
work page 2006
-
[16]
X. Meng and B. P . Miller, “Binary code is not easy,” in Proc. of the 25th Int’l Symposium on Software Testing and Analysis , 2016, pp. 24–35
work page 2016
-
[17]
Detecting large number of infeasible paths through recognizing their patterns,
M. N. Ngo and H. B. K. Tan, “Detecting large number of infeasible paths through recognizing their patterns,” in Proc. of the the 6th 33 0 10 20 30 40 50 60 70 80 90 100 1 10 25 50 75 100 fraction of broken pairs % (a) 436.cactusADM 0 10 20 30 40 50 60 70 80 90 100 1 10 25 50 75 100 fraction of broken pairs % (b) 445.gobmk 0 10 20 30 40 50 60 70 80 90 100 ...
work page 2007
-
[18]
Opaque predicates detection by abstract interpretation,
M. Dalla Preda, M. Madou, K. De Bosschere, and R. Giacobazzi, “Opaque predicates detection by abstract interpretation,” in Int’l Conf. on Algebraic Methodology and Software Technology , 2006, pp. 81–95
work page 2006
-
[19]
Symbolic execution of obfuscated code,
B. Yadegari and S. Debray, “Symbolic execution of obfuscated code,” in Proc. of the 22nd ACM SIGSAC Conf. on Computer and Communications Security, 2015, pp. 732–744
work page 2015
-
[20]
A generic approach to automatic deobfuscation of executable code,
B. Yadegari, B. Johannesmeyer, B. Whitely, and S. Debray, “A generic approach to automatic deobfuscation of executable code,” in IEEE Symposium on Security and Privacy, May 2015, pp. 674–691
work page 2015
-
[21]
Application security through program obfuscation,
M. Madou, “Application security through program obfuscation,” 2006
work page 2006
-
[22]
Manufacturing cheap, resilient, and stealthy opaque constructs,
C. S. Collberg, C. D. Thomborson, and D. Low, “Manufacturing cheap, resilient, and stealthy opaque constructs,” in POPL, 1998
work page 1998
-
[23]
Constant propagation with con- ditional branches,
M. N. Wegman and F. K. Zadeck, “Constant propagation with con- ditional branches,” ACM Transactions on Programming Languages and Systems (TOPLAS), vol. 13, no. 2, pp. 181–210, 1991
work page 1991
-
[24]
Software tamper resistance: Obstructing static analysis of programs,
C. Wang, J. Hill, J. Knight, and J. Davidson, “Software tamper resistance: Obstructing static analysis of programs,” Technical Report CS-2000-12, University of Virginia, 12 2000, Tech. Rep., 2000
work page 2000
-
[25]
Compiler techniques for code compression,
S. Debray, W. Evans, and R. Muth, “Compiler techniques for code compression,” in Workshop on Compiler Support for System Software, 1999, pp. 117–123
work page 1999
-
[26]
Sifting out the mud: low level C++ code reuse,
B. De Sutter, B. De Bus, and K. De Bosschere, “Sifting out the mud: low level C++ code reuse,” in ACM SIGPLAN Notices , vol. 37, no. 11, 2002, pp. 275–291
work page 2002
- [27]
-
[28]
Sifting out the mud: low level c++ code reuse,
B. De Sutter, B. De Bus, and K. De Bosschere, “Sifting out the mud: low level c++ code reuse,” in Proc. of the 17th ACM SIGPLAN Conf. on Object-oriented programming, systems, languages, and applications (OOPSLA), vol. 37, no. 11, 2002, pp. 275–291
work page 2002
-
[29]
Exploiting function similarity for code size reduction,
T. J. Edler von Koch, B. Franke, P . Bhandarkar, and A. Dasgupta, “Exploiting function similarity for code size reduction,” ACM SIGPLAN Notices, vol. 49, no. 5, pp. 85–94, 2014
work page 2014
-
[30]
Function merging by sequence alignment,
R. C. Rocha, P . Petoumenos, Z. Wang, M. Cole, and H. Leather, “Function merging by sequence alignment,” in Proc. of the 2019 IEEE/ACM Int’l Symposium on Code Generation and Optimization , 2019, pp. 149–163
work page 2019
-
[31]
A survey of program slicing techniques,
F. Tip, “A survey of program slicing techniques,” Journal of pro- gramming languages, vol. 3, no. 3, pp. 121–189, 1995
work page 1995
-
[32]
Bidirectional liveness analysis, or how less than half of the alphas registers are used,
B. De Sutter, B. De Bus, and K. De Bosschere, “Bidirectional liveness analysis, or how less than half of the alphas registers are used,” Journal of Systems Architecture , vol. 52, no. 10, pp. 535–548, 2006
work page 2006
-
[33]
Compiler tech- niques for code compaction,
S. K. Debray, W. Evans, R. Muth, and B. De Sutter, “Compiler tech- niques for code compaction,” ACM Transactions on Programming Languages and Systems, vol. 22, no. 2, pp. 378–415, 3 2000
work page 2000
-
[34]
Alias analysis of executable code,
S. Debray, R. Muth, and M. Weippert, “Alias analysis of executable code,” in Proc. ACM POPL, 1998, pp. 12–24
work page 1998
-
[35]
D5.11 ASPIRE Framework Report,
C. Basile, “D5.11 ASPIRE Framework Report,” POLITO,” techreport, Nov. 2016. [Online]. Available: https://aspire-fp7.eu/ sites/default/files/D5.11-ASPIRE-Framework-Report.pdf
work page 2016
-
[36]
Code obfuscation against symbolic execution at- tacks,
S. Banescu, C. Collberg, V . Ganesh, Z. Newsham, and A. Pretschner, “Code obfuscation against symbolic execution at- tacks,” in Proc. of the 32nd Annual Conf. on Computer Security Applications, 2016, pp. 189–200
work page 2016
-
[37]
Standard Performance Evaluation Corporation, “SPEC CPU 2006,” Jan. 2018. [Online]. Available: https://www.spec.org/cpu2006/
work page 2006
-
[38]
“Home — Aspire-FP7,” Sept. 2018. [Online]. Available: https: //aspire-fp7.eu/
work page 2018
-
[39]
B. De Sutter, “D1.06 ASPIRE Validation,” Ghent University,” techreport, Jan. 2016. [Online]. Available: https://aspire-fp7.eu/ sites/default/files/D1.06-ASPIRE-Validation-v1.01.pdf
work page 2016
-
[40]
G. Dhont, Feb. 2019. [Online]. Available: http://www.dhondt.de/ ccx 2.15.test.tar.bz2
work page 2019
-
[41]
M. Li ˇska, “Optimizing large applications,” arXiv preprint arXiv:1403.6997, 2014
work page internal anchor Pith review Pith/arXiv arXiv 2014
-
[42]
(2014, June) [PATCH 3/5] IPA ICF pass
mliska. (2014, June) [PATCH 3/5] IPA ICF pass. [On- line]. Available: https://gcc.gnu.org/ml/gcc-patches/2014-06/ msg01246.html
work page 2014
-
[43]
Safe ICF: Pointer safe and unwinding aware identical code folding in gold,
S. Tallam, C. Coutant, I. L. Taylor, X. D. Li, and C. Demetriou, “Safe ICF: Pointer safe and unwinding aware identical code folding in gold,” 2010
work page 2010
-
[44]
R. Ueyama. (2016, Feb.) Elf: Implement icf. [Online]. Available: https://reviews.llvm.org/rL261912 34
work page 2016
-
[45]
Protecting software through obfuscation: Can it keep pace with progress in code analysis?
S. Schrittwieser, S. Katzenbeisser, J. Kinder, G. Merzdovnik, and E. Weippl, “Protecting software through obfuscation: Can it keep pace with progress in code analysis?” ACM Computing Surveys (CSUR), vol. 49, no. 1, p. 4, 2016
work page 2016
-
[46]
A taxonomy of obfus- cating transformations,
C. Collberg, C. Thomborson, and D. Low, “A taxonomy of obfus- cating transformations,” Department of Computer Science, The University of Auckland, New Zealand, Tech. Rep., 1997
work page 1997
-
[47]
Software watermarking via opaque predicates: Implementation, analysis, and attacks,
G. Myles and C. Collberg, “Software watermarking via opaque predicates: Implementation, analysis, and attacks,” Electronic Com- merce Research, vol. 6, no. 2, pp. 155–171, 2006
work page 2006
-
[48]
Manufacturing opaque pred- icates in distributed systems for code obfuscation,
A. Majumdar and C. Thomborson, “Manufacturing opaque pred- icates in distributed systems for code obfuscation,” in Proc. of the 29th Australasian Computer Science Conf.-Volume 48 , 2006, pp. 187– 196
work page 2006
-
[49]
Manufacturing resilient bi-opaque predicates against symbolic execution,
H. Xu, Y. Zhou, Y. Kang, F. Tu, and M. Lyu, “Manufacturing resilient bi-opaque predicates against symbolic execution,” in 2018 48th Annual IEEE/IFIP Int’l Conf. on Dependable Systems and Networks (DSN), June 2018, pp. 666–677
work page 2018
-
[50]
Indistinguishable predicates: A new tool for obfuscation
L. Zobernig, S. D. Galbraith, and G. Russello, “Indistinguishable predicates: A new tool for obfuscation.” IACR Cryptology ePrint Archive, vol. 2017, p. 787, 2017
work page 2017
-
[51]
When Are Opaque Predicates Useful?
——, “When Are Opaque Predicates Useful?” 2019, to appear
work page 2019
-
[52]
Obfuscation through simplicity,
M. R. Asghar, S. D. Galbraith, and G. Russello, “Obfuscation through simplicity,” 2016
work page 2016
-
[53]
The tigress diversifying c virtualizer,
C. Collberg, S. Martin, J. Myers, and B. Zimmerman, “The tigress diversifying c virtualizer,” 2015
work page 2015
-
[54]
Obfuscator- LLVM – software protection for the masses,
P . Junod, J. Rinaldini, J. Wehrli, and J. Michielin, “Obfuscator- LLVM – software protection for the masses,” in Proc. of the IEEE/ACM 1st Int’l Workshop on Software Protection, SPRO’15, Firenze, Italy, May 19th, 2015 , B. Wyseur, Ed. IEEE, 2015, pp. 3–9. Jens Van den Broeck is a PhD student at Ghent University in the Computer Systems Lab. He ob- tained ...
work page 2015
discussion (0)
Sign in with ORCID, Apple, or X to comment. Anyone can read and Pith papers without signing in.