Метод розмітки фрагментів проміжного коду .NET оракулом-обфускатором для адаптивного захисту вихідного коду
Анотація
Проаналізовано наявний спосіб формування навчальних даних для адаптивної обфускації платформи .NET, за якого множину придатних стратегій обфускації коду зіставляють фрагментові проміжного коду експертним судженням або евристичними правилами на зразок "фрагмент містить рядкові константи, отже шифруй його рядки". З'ясовано, що такий спосіб формування навчальних даних не масштабується і не гарантує узгодженості мітки з критерієм, за яким оцінюють остаточний результат, через що моделі навчають прогнозувати одне, а оцінюють результат за іншим критерієм. Розроблено метод розмітки фрагментів проміжного коду, у якому еталонну множину придатних стратегій обфускації фрагмента проміжного коду становлять δ-оптимальні за інтегральною метрикою якості обфускації перетворення, тобто той самий критерій, за яким оцінюють остаточний результат, а мітку подано бінарним вектором належності без згортання до однієї стратегії обфускації коду. Інстанційовано компоненту структурної складності на рівні окремого фрагмента проміжного коду через згладжену насиченість, що зберігає розрізнювальну здатність метрики на коротких фрагментах коду, де пряме відносне нормування приросту складності вироджується. Реалізовано двоступеневий контур верифікації семантичної еквівалентності, який допускає до розмітки тільки коректні перетворення. Проведено перевірку методу оракул-розмітки на корпусі з дев'яти бібліотек .NET з дозвільними ліцензіями: виконано 29 544 вимірювання пар "фрагмент – стратегія" на 9848 фрагментах коду, причому контур відхилив 0,58 % пар. Встановлено, що присутність стратегій обфускації коду в еталонних множинах різко асиметрична: вставляння непрозорих предикатів входить до 96,12 % множин (довірчий інтервал 95,70-96,50 %) проти 3,80 % – для шифрування рядків і 3,41 % – для рефлексивної обфускації коду. Досліджено природу асиметрії присутності стратегій обфускації коду декомпозицією їх застосовності та заслуги і показано, що вона є структурною властивістю простору стратегій обфускації коду, а не перевагою методу: непрозорий предикат спрацьовує на 99,31 % фрагментів коду, тоді як шифрування рядків застосовне тільки до 7,47 %. Підтверджено стійкість домінування непрозорих предикатів за всіх нормалізацій і допусків, а медіана запасу якості 0,1640 у кілька разів перевищує допуск. Виявлено, що шифрування рядків потрапляє до еталонної множини у 50,67 % фрагментів коду з рядковими літералами, тож правило на основі наявності конструкції було б там не точнішим за випадкове вгадування. Виявлено також null-клас обсягом 8,2 % фрагментів коду, для якого жодна стратегія обфускації коду не дає виграшу і який має структурний механізм: серед фрагментів переміщення даних він сягає 22,3 %. Показано, що метод оракул-розмітки дає змогу одноразово заплатити обчислювально витратною процедурою вимірювання якості обфускації коду, щоб надалі отримувати її результат прогнозом навченої моделі за мілісекунди.
Завантаження
Посилання
Allamanis, M., Barr, E. T., Devanbu, P., & Sutton, C. (2018). A survey of machine learning for big code and naturalness. ACM Computing Surveys, 51(4), 81:1–37. https://doi.org/10.1145/3212695
Aragón-Jurado, J. M., Jareño, J., de la Torre, J. C., Dorronsoro, B., & Ruiz, P. (2024). Two-level software obfuscation with cooperative co-evolutionary algorithms. In 2024 IEEE Congress on Evolutionary Computation (CEC). IEEE. (pp. 1–8). https://doi.org/10.1109/CEC60901.2024.10612116
Balachandran, V., Sufatrio, Tan, D. J. J., & Thing, V. L. L. (2016). Control flow obfuscation for Android applications. Computers & Security, 61, 72–93. https://doi.org/10.1016/j.cose.2016.05.003
Banescu, S., & Pretschner, A. (2018). A tutorial on software obfuscation. Advances in Computers, 108, 283–353. https://doi.org/10.1016/bs.adcom.2017.09.004
Cao, Y., Zhou, Z., & Zhuang, Y. (2025). Advancing code obfuscation: Novel opaque predicate techniques to counter dynamic symbolic execution. Computers, Materials & Continua, 84(1), 1545–1565. https://doi.org/10.32604/cmc.2025.062743
Cohen, R., David, R., Mori, R., Yger, F., & Rossi, F. (2025). Experimental study of binary diffing resilience on obfuscated programs. In Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA 2025), Lecture Notes in Computer Science (pp. 223–243). Springer. https://doi.org/10.1007/978-3-031-97620-9_13
Collberg, C., Thomborson, C., & Low, D. (1997). A taxonomy of obfuscating transformations (Technical Report No. 148). Department of Computer Science, University of Auckland. URL: https://hdl.handle.NET/2292/3491
Conti, M., Vinod, P., & Vitella, A. (2022). Obfuscation detection in Android applications using deep learning. Journal of Information Security and Applications, 70, article ID 103311. https://doi.org/10.1016/j.jisa.2022.103311
Golovko, I., Savenko, O., Vizhevskyi, P., & Sachenko, A. (2024). Obfuscation process with machine learning module. In Proceedings of the 2024 IEEE 14th International Conference on Dependable Systems, Services and Technologies (DESSERT). (pp. 1–7). IEEE. https://doi.org/10.1109/dessert65323.2024.11122185
Jin, H., Lee, J., Yang, S., Kim, K., & Lee, D. H. (2024). A framework to quantify the quality of source code obfuscation. Applied Sciences, 14(12), article ID 5056. https://doi.org/10.3390/app14125056
Marinaro, T., Martinelli, F., Mercaldo, F., & Santone, A. (2021). Detecting call indirection obfuscation through equivalence checking in Android environment. Procedia Computer Science, 192, 1659–1669. https://doi.org/10.1016/j.procs.2021.08.170
McCabe, T. J. (1976). A complexity measure. IEEE Transactions on Software Engineering, SE-2(4), 308–320. https://doi.org/10.1109/TSE.1976.233837
Raubitzek, S., Felbauer, P., Mallinger, K., & Schrittwieser, S. (2025). Classification of obfuscation techniques in LLVM IR: Machine learning on vector representations. Machine Learning and Knowledge Extraction, 7(4), article number 125. https://doi.org/10.3390/make7040125
Uhm, J., Kwon, Y., & Koo, H. (2025). On the learnability, robustness, and adaptability of deep learning models for obfuscation-applied code. In Proceedings of the 2025 Workshop on Software Understanding and Reverse Engineering ACM. (pp. 68–75). https://doi.org/10.1145/3733822.3764676

Ця робота ліцензується відповідно до Creative Commons Attribution 4.0 International License.



