{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,6]],"date-time":"2026-06-06T20:00:45Z","timestamp":1780776045112,"version":"3.54.1"},"reference-count":32,"publisher":"Oxford University Press (OUP)","issue":"5","license":[{"start":{"date-parts":[[2024,5,17]],"date-time":"2024-05-17T00:00:00Z","timestamp":1715904000000},"content-version":"vor","delay-in-days":3,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2025,8,15]]},"abstract":"<jats:title>Abstract<\/jats:title>\n               <jats:p>With the advent of the cloud computing model allowing a shared access to massive computing facilities, a surging demand emerges for the protection of the intellectual property tied to the programs executed on these uncontrolled systems. If novel paradigm as confidential computing aims at protecting the data manipulated during the execution, obfuscating techniques (in particular at the source code level) remain a popular solution to conceal the purpose of a program or its logic without altering its functionality, thus preventing reverse-engineering on the program even with the help of computing resources. The many advantages of code obfuscation, together with its low cost, makes it a popular technique. This paper proposes a novel methodology for source code obfuscation that can be used together with other traditional obfuscation techniques, making the code more robust against reverse engineering attacks. Three program complexity metrics are used to define three different single-objective combinatorial optimization versions of the problem, which are solved and analysed. Additionally, three multi-objective problems are defined, those considering each of the selected metrics together with the program execution time, in order to avoid strong obfuscations penalizing the performance. The goal of the defined problems is to find sequences of LLVM optimizations that lead to highly obfuscated versions of the original code. These transformations are applied to the back-end pseudo-assembly code (i.e., LLVM Intermediate Representation), thus avoiding any further optimizations by the compiler. Classical genetic algorithms (GAs) are used to solve the studied problems, namely a basic cellular GA for the single-objective problems and the popular NSGA-II for the multi-objective ones. The promising results show the potential of the proposed technique.<\/jats:p>","DOI":"10.1093\/jigpal\/jzae069","type":"journal-article","created":{"date-parts":[[2024,5,17]],"date-time":"2024-05-17T07:22:13Z","timestamp":1715930533000},"source":"Crossref","is-referenced-by-count":5,"title":["Source code obfuscation with genetic algorithms using LLVM code optimizations"],"prefix":"10.1093","volume":"33","author":[{"given":"Juan Carlos","family":"de la Torre","sequence":"first","affiliation":[{"name":"Superior School of Engineering , University of C\u00e1diz , , juan.detorre@uca.es","place":["Spain"]}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Javier","family":"Jare\u00f1o","sequence":"additional","affiliation":[{"name":"Superior School of Engineering , University of C\u00e1diz , , javier.jareno@uca.es","place":["Spain"]}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Jos\u00e9 Miguel","family":"Arag\u00f3n-Jurado","sequence":"additional","affiliation":[{"name":"Superior School of Engineering , University of C\u00e1diz , , josemiguel.aragon@uca.es","place":["Spain"]}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"S\u00e9bastien","family":"Varrette","sequence":"additional","affiliation":[{"name":"University of Luxembourg , Esch-sur-Alzette, Luxembourg French National Cybersecurity Agency (ANSSI), Paris , , sebastien.varrette@protonmail.com","place":["France"]}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Bernab\u00e9","family":"Dorronsoro","sequence":"additional","affiliation":[{"name":"Superior School of Engineering , University of C\u00e1diz, Spain; Faculty of Engineering, The University of Sydney , , bernabe.dorronsoro@uca.es","place":["Australia"]}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"286","published-online":{"date-parts":[[2024,5,14]]},"reference":[{"key":"2025092519464627800_ref1","first-page":"1259","article-title":"An algorithm for the organization of information","volume":"3","author":"Adelson-Velskii","year":"1962","journal-title":"Soviet Mathematics Doklady"},{"key":"2025092519464627800_ref2","doi-asserted-by":"crossref","first-page":"26673","DOI":"10.1016\/j.ijhydene.2021.12.215","article-title":"Exergy optimization of a novel hydrogen production plant with fuel cell, heat recovery, and MED using NSGAII genetic algorithm","volume":"47","author":"Al-Rashed","year":"2022","journal-title":"International Journal of Hydrogen Energy"},{"key":"2025092519464627800_ref3","doi-asserted-by":"crossref","DOI":"10.1007\/978-0-387-77610-1_1","volume-title":"Cellular Genetic Algorithms","author":"Alba","year":"2008"},{"key":"2025092519464627800_ref4","doi-asserted-by":"crossref","first-page":"126","DOI":"10.1109\/TEVC.2005.843751","article-title":"The exploration\/exploitation tradeoff in dynamic cellular genetic algorithms","volume":"9","author":"Alba","year":"2005","journal-title":"IEEE Transactions on Evolutionary Computation"},{"key":"2025092519464627800_ref5","doi-asserted-by":"crossref","first-page":"757","DOI":"10.1016\/j.procs.2015.10.114","article-title":"Different obfuscation techniques for code protection","volume":"70","author":"Behera","year":"2015","journal-title":"Procedia Computer Science"},{"key":"2025092519464627800_ref6","doi-asserted-by":"crossref","DOI":"10.1016\/j.swevo.2019.100598","article-title":"jMetalPy: A python framework for multi-objective optimization with metaheuristics","volume":"51","author":"Ben\u00edtez-Hidalgo","year":"2019","journal-title":"Swarm and Evolutionary Computation"},{"key":"2025092519464627800_ref7","first-page":"336","article-title":"JShadObf: A JavaScript obfuscator based on multi-objective optimization algorithms","volume-title":"Proceedings of the IEEE International Conference on Network and System Security (NSS 2013), Volume 7873 of LNCS","author":"Bertholon","year":"2013"},{"key":"2025092519464627800_ref8","first-page":"435","article-title":"ShadObf: a C-source obfuscator based on multi-objective optimization algorithms","volume-title":"the 27th IEEE\/ACM International Parallel and Distributed Processing Symposium (IPDPS 2013)","author":"Bertholon","year":"2013"},{"key":"2025092519464627800_ref9","volume-title":"Evolutionary Algorithms for Solving Multi-Objective Problems","author":"Coello","year":"2007"},{"key":"2025092519464627800_ref10","volume-title":"Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection","author":"Collberg","year":"2009"},{"key":"2025092519464627800_ref11","volume-title":"Practical Reverse Engineering: x86, x64","author":"Dang","year":"2014"},{"key":"2025092519464627800_ref12","first-page":"181","article-title":"Obfuscating LLVM intermediate representation source code with NSGA-II","volume-title":"the 15th International Conference on Computational Intelligence in Security for Information Systems (CISIS 2022)","author":"de la Torre","year":"2022"},{"key":"2025092519464627800_ref13","doi-asserted-by":"crossref","first-page":"272","DOI":"10.1007\/978-3-319-91479-4_23","article-title":"Analyzing the influence of LLVM code optimization passes on software performance","volume-title":"Information Processing and Management of Uncertainty in Knowledge-Based Systems. Applications","author":"de la Torre","year":"2018"},{"key":"2025092519464627800_ref14","volume-title":"Multi-Objective Optimization Using Evolutionary Algorithms","author":"Deb","year":"2009"},{"key":"2025092519464627800_ref15","doi-asserted-by":"crossref","first-page":"182","DOI":"10.1109\/4235.996017","article-title":"A fast and elitist multiobjective genetic algorithm: NSGA-II","volume":"6","author":"Deb","year":"2002","journal-title":"IEEE Transactions on Evolutionary Computation"},{"key":"2025092519464627800_ref16","doi-asserted-by":"crossref","DOI":"10.1002\/9781118833209","volume-title":"Evolutionary Algorithms for Mobile Ad Hoc Networks","author":"Dorronsoro","year":"2014"},{"key":"2025092519464627800_ref17","volume-title":"Cellular Genetic Algorithms","author":"Dorronsoro","year":"2008"},{"key":"2025092519464627800_ref18","volume-title":"Genetic Algorithms in Search, Optimization, and Machine Learning","author":"Goldberg","year":"1989"},{"key":"2025092519464627800_ref19","doi-asserted-by":"crossref","first-page":"63","DOI":"10.1145\/947825.947829","article-title":"A complexity measure based on nesting level","volume":"16","author":"Harrison","year":"1981","journal-title":"SIGPLAN Notices"},{"key":"2025092519464627800_ref20","doi-asserted-by":"crossref","DOI":"10.1016\/j.anucene.2021.108326","article-title":"A data-driven adaptive fault diagnosis methodology for nuclear power systems based on NSGAII-CNN","volume":"159","author":"He","year":"2021","journal-title":"Annals of Nuclear Energy"},{"key":"2025092519464627800_ref21","doi-asserted-by":"crossref","first-page":"72","DOI":"10.1016\/j.infsof.2018.07.007","article-title":"Diversification and obfuscation techniques for software security: a systematic literature review","volume":"104","author":"Hosseinzadeh","year":"2018","journal-title":"Information and Software Technology"},{"key":"2025092519464627800_ref22","doi-asserted-by":"crossref","first-page":"1098","DOI":"10.1109\/JRPROC.1952.273898","article-title":"A method for the construction of minimum-redundancy codes","volume":"40","author":"Huffman","year":"1952","journal-title":"Proceedings of the IRE"},{"key":"2025092519464627800_ref23","first-page":"3","article-title":"Obfuscator-LLVM \u2013 Software protection for the masses","volume-title":"International Workshop on Software Protection","author":"Junod","year":"2015"},{"key":"2025092519464627800_ref24","doi-asserted-by":"crossref","first-page":"4367","DOI":"10.1007\/s00500-018-3094-0","article-title":"A new bi-objective fuzzy portfolio selection model and its solution through evolutionary algorithms","volume":"23","author":"Kar","year":"2019","journal-title":"Soft Computing"},{"key":"2025092519464627800_ref25","first-page":"167","article-title":"A technique to apply inlining for code obfuscation based on genetic algorithm","volume":"10","author":"Kim","year":"2011","journal-title":"Journal of Information Technology Services"},{"key":"2025092519464627800_ref26","first-page":"290","article-title":"Obfuscation of executable code to improve resistance to static disassembly","volume-title":"the 10th ACM Conference on Computer and Communications Security","author":"Linn","year":"2003"},{"key":"2025092519464627800_ref27","author":"LLVM"},{"key":"2025092519464627800_ref28","doi-asserted-by":"crossref","first-page":"308","DOI":"10.1109\/TSE.1976.233837","article-title":"A complexity measure","volume":"SE-2","author":"McCabe","year":"1976","journal-title":"IEEE Transactions on Software Engineering"},{"key":"2025092519464627800_ref29","article-title":"Quantitative Measures for Code Obfuscation Security","author":"Mohsen","year":"2016"},{"key":"2025092519464627800_ref30","first-page":"1135","article-title":"Genetic improvement for code obfuscation","volume-title":"Genetic and Evolutionary Computation Conference Companion","author":"Petke","year":"2016"},{"key":"2025092519464627800_ref31","volume-title":"Polybench\/c \u2013 Homepage of Louis-no\u00ebl Pouchet","author":"Pouchet","year":"2010"},{"key":"2025092519464627800_ref32","doi-asserted-by":"crossref","DOI":"10.1016\/j.swevo.2020.100818","article-title":"Micro-genetic algorithm with fuzzy selection of operators for multi-objective optimization: $\\mu $FAME","volume":"61","author":"Santiago","year":"2021","journal-title":"Swarm and Evolutionary Computation"}],"container-title":["Logic Journal of the IGPL"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/academic.oup.com\/jigpal\/article-pdf\/33\/5\/jzae069\/57687416\/jzae069.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/academic.oup.com\/jigpal\/article-pdf\/33\/5\/jzae069\/57687416\/jzae069.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,9,25]],"date-time":"2025-09-25T23:46:57Z","timestamp":1758844017000},"score":1,"resource":{"primary":{"URL":"https:\/\/academic.oup.com\/jigpal\/article\/doi\/10.1093\/jigpal\/jzae069\/7670720"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,5,14]]},"references-count":32,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2025,8,15]]}},"URL":"https:\/\/doi.org\/10.1093\/jigpal\/jzae069","relation":{},"ISSN":["1367-0751","1368-9894"],"issn-type":[{"value":"1367-0751","type":"print"},{"value":"1368-9894","type":"electronic"}],"subject":[],"published-other":{"date-parts":[[2025,10]]},"published":{"date-parts":[[2024,5,14]]},"article-number":"jzae069"}}