Method of protecting software code from analysis by obfuscation means
DOI: 10.31673/2412-4338.2020.045051
Abstract
The considered method of program code protection with the use of obfuscation mechanisms allows to confuse the code during development and refactoring. This method protects against decompilation methods that can be applied both manually and automatically. The aim of the study is to develop a method of obfuscating software code to provide protection against decompilation. To achieve this goal, the following tasks are solved: analyzed algorithms of deobfuscation in various practical methods; a new method of obfuscating program code is proposed; submit obfuscated code. The main stages of the proposed approach to obfuscation of programs are formulated: lexical analysis; code destructuring; code obfuscation; obfuscation of variables; obfuscation of constants. Different strategies for the synthesis of obfuscated identifiers are defined: generation of names, consisting of admissible random (pseudo-random) symbols, length from the set interval (fixed length); generating names consisting of a certain number of repeated valid characters, in conditions where the plurality of characters is specified and the specified length of the lengths of the identifiers; mixed strategy with equal choice of strategies 1 and 2.
Two optimization problems are formulated: the task of minimizing the number of operations when generating a given set of constants with a fixed set of directly defined constants; the task of minimizing the number of directly defined constants among the options with minimal complexity of formulas. The proposed approach can be used in programs that have a number of routines with the same interface. In this case, regardless of the complexity of implementation, the code of each subroutine can be converted into destructured code. After that, it is possible to calculate the total number of feasible operators, taking into account (operator) output for all routines.
Keywords: obfuscation, code protection, refactoring.
References
1. Borodin A.V., Dolgushev E.D. (2016) Obfuscation of a pool of constants as a problem of constructing a minimal system of integer linear combinations. Education, Science, Business: Development and Prospects: Proceedings of the III International Scientific and Practical Conference. P. 7 - 13.
2. Borodin A.V., Dolgushev E.D. (2016) Statement of the problem of constant pool obfuscation. A new word in science: development prospects: materials of the IX International scientific and practical conference. No. 3 (9). P. 89 - 93.
3. Varnovsky N.P., Zakharov V.A., Kuzyurin N.N. (2014) Mathematical problems of obfuscation. Proceedings of the conference "Mathematics and Security of Information Technologies". P. 54 - 72.
4. Varnovsky N.P., Zakharov V.A., Podlovchenko R.I., Shcherbina V.S., Kuzyurin N.N., Shokurov A.V. (2006) On the application of software deobfuscation methods to detect complex computer viruses. Izvestia SFedU. Technical science. No. 7 (62). P. 18 - 27.
5. Varnovsky N.P., Zakharov V.A., Kuzyurin N.N., Shokurov A.V. (2014) The current state of research in the field of program obfuscation: determining the persistence of obfuscation. Proceedings of the Institute for System Programming, RAS. Vol. 26. Issue.3. P. 167 - 198.
6. Korobeynikov A.G., Kutuzov I.M. (2015) Obfuscation algorithm. Cybernetics and Programming. No. 3. P. 1 - 8.
7. Korobeynikov A.G., Kutuzov I.M., Kolesnikov P.Yu. (2017) Analysis of obfuscation methods. Cybernetics and Programming. No. 1. P. 31 - 37.
8. Lifshits Yu.M. Obfuscation of programs. (2018) St. Petersburg Department of the Mathematical Institute. V. A. Steklov RAN.
9. Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A., Vadhan S., Yang K. (2018) On the (im)possibility of obfuscating programs. Journal of the ACM. No 6. P. 40 – 48.
10. Drape S., Voiculescu I. (2109) Creating transformations for matrix obfuscation. Static Analysis: 16th International Static Symposium. P. 273 – 292.
11. Drape S., Voiculescu I. (2018) The Use of Matrices in Obfuscation. Oxford University Computing Laboratory. No 08. P. 12 – 28.