Захист програмного коду на платформі .NET - Фечан, Андрій; Ховерко, Олексій (Національний університет «Львівська політехніка», 2025)
В роботі проведено дослідження функціонування складних інформаційних систем, що спрямоване на аналіз існуючих методів захисту, розробку концепції механізму трансформації коду, яка забезпечить високий рівень захисту .NET застосунків. Розглянуто архітектуру .NET Framework із сучасними універсальними вдосконаленнями. Один з важливих елементів є Base Class Library (BCL), що є набором базових класів і бібліотек, які забезпечують стандартні функціональні можливості, такі як робота з файлами, мережею, базами даних, опрацювання тексту, а також базові структури даних. Визначено, що обфускація є одним із найпоширеніших методів захисту програмного забезпечення, що полягає у модифікації вихідного або проміжного коду таким чином, щоб зберегти його функціональність, але зробити його важким для розуміння. Встановлено основні особливості вдосконалення коду, що полягає у заплутуванні потоків виконання, шифруванні рядкових літералів, використання пакерів і криптерів. Характерною особливістю для пакерів і криптерів є пряма інжекція в пам'ять, що відображає свою функціональність у розпакуванні або розшифруванні коду програми безпосередньо в оперативну пам'ять, яке ускладнює зняття дампу процесу. Окрім того, заплутування потоків виконання дозволяє модифікувати логіку роботи програмного забезпечення завдяки вставлення зайвих умов, циклів або переходів, що створює складні для розуміння структури виконання. Запропоновано процес антивідлагодження, що є одним із ключових компонентів захисту програмного забезпечення від реверс-інжинірингу. Сформовано концептуальний підхід до реалізації механізмів антивідлагодження програмного забезпечення, що полягає у багаторівневому захисті програмного забезпечення і змінює інструкції та поведінку віртуальної машини. Одні з важливих елементів таких алгоритмів є перевірка батьківських процесів та виявлення відлагодження за допомогою апаратних точок зупинки. Це, своєю чергою, відкриває можливість під час проектування віртуальної машини у поєднанні з іншими техніками створювати значні перешкоди для аналізу програмного коду. In the work, a study of the functioning of complex information systems is carried out, which is aimed at the analysis of existing protection methods, the development of the concept of the code transformation mechanism, which will ensure a high level of protection of .NET applications. The architecture of the .NET Framework with modern universal improvements is considered. One of the important elements is the Base Class Library (BCL), which is a set of base classes and libraries that provide standard functionality, such as working with files, networks, databases, text processing, and basic data structures. It was determined that obfuscation is one of the most common methods of software protection, which consists in modifying the source or intermediate code in such a way as to preserve its functionality, but make it difficult to understand. The main features of code improvement are established, which consist in obfuscating execution flows, encrypting string literals, and using packers and crypters. A characteristic feature of packers and crypters is direct injection into memory, which reflects its functionality in unpacking or decrypting program code directly into random access memory (RAM), which makes it difficult to remove a dump of the process. In addition, the entanglement of execution threads allows you to modify the logic of the software operation by inserting unnecessary conditions, loops or transitions, which creates complex execution structures. The anti-debugging process is proposed, which is one of the key components of software protection against reverse engineering. A conceptual approach to the implementation of software anti-debugging mechanisms is formed, which consists in multi-level protection of software and changes the instructions and behavior of the virtual machine. One of the important elements of such algorithms is checking parent processes and detecting debugging using hardware breakpoints. This, in its turn, opens up the possibility during the design of a virtual machine in combination with other techniques to create significant obstacles for the analysis of the software code.
Software code protection on the .NET platform
Keywords: алгоритм, програмний код, віртуальна машина, обфускація, .NET Framework, algorithm, program code, virtual machine, obfuscation, .NET Framework.; 004.4