RU2851570C1 - Method and system for protection of mobile applications program code from reverse engineering - Google Patents
Method and system for protection of mobile applications program code from reverse engineeringInfo
- Publication number
- RU2851570C1 RU2851570C1 RU2024116386A RU2024116386A RU2851570C1 RU 2851570 C1 RU2851570 C1 RU 2851570C1 RU 2024116386 A RU2024116386 A RU 2024116386A RU 2024116386 A RU2024116386 A RU 2024116386A RU 2851570 C1 RU2851570 C1 RU 2851570C1
- Authority
- RU
- Russia
- Prior art keywords
- obfuscation
- code
- control flow
- data
- application
- Prior art date
Links
Abstract
Description
ОБЛАСТЬ ТЕХНИКИAREA OF TECHNOLOGY
[0001] Настоящее техническое решение относится к области компьютерной техники, а именно к способу и системе защиты программного кода мобильных приложений от реверс-инжиниринга.[0001] This technical solution relates to the field of computer technology, namely to a method and system for protecting the program code of mobile applications from reverse engineering.
УРОВЕНЬ ТЕХНИКИLEVEL OF TECHNOLOGY
[0002] Мобильные приложения (далее - МП) на платформе Android подвергаются реверс-инжинирингу (далее - РИ) как со стороны злоумышленников, так и со стороны разработчиков МП компаний-конкурентов. Под РИ понимается широкий список манипуляций с приложением, которые заключаются в анализе и изучении мобильного приложения с целью получения несанкционированного доступа к информации о его внутреннем устройстве и функциональности, а также раскрытии участков кода для их более детального изучения, воссоздания или изменения. Конечная цель данного исследования при этом может быть в получении конкурентного преимущества, оптимизации и улучшении стороннего МП, обходе механизмов защиты исследуемого приложения и получении доступа к хранимым и обрабатываемым данным в МП, либо создании вредоносного программного обеспечения.[0002] Mobile applications (hereinafter referred to as MA) on the Android platform are subject to reverse engineering (hereinafter referred to as RE) by both attackers and MA developers from competing companies. RE refers to a broad range of application manipulations that involve analyzing and studying a mobile application to gain unauthorized access to information about its internal structure and functionality, as well as disclosing sections of code for more detailed study, reconstruction, or modification. The ultimate goal of this research may be to gain a competitive advantage, optimize and improve third-party MA, bypass the security mechanisms of the application being analyzed, and gain access to stored and processed data within the MA, or create malware.
[0003] К традиционным и широко применяемым методам защиты мобильных приложений можно отнести: обфускацию кода, шифрование данных, защиту каналов передачи данных, контроль целостности при запуске приложения и другие организационно-технические меры. Однако, большинство этих подходов хорошо изучены и в результате различных исследований разработано и находится в общем доступе большое количество автоматизированных средств РИ для ускорения общего процесса анализа. Таким образом, широко применяемые методы защиты не могут обеспечивать необходимый и достаточный уровень безопасности МП в текущих реалиях.[0003] Traditional and widely used methods for protecting mobile applications include code obfuscation, data encryption, data channel protection, integrity monitoring during application launch, and other organizational and technical measures. However, most of these approaches are well-studied, and as a result of various studies, a large number of automated RI tools have been developed and are now publicly available to speed up the overall analysis process. Therefore, widely used protection methods cannot provide the necessary and sufficient level of mobile application security in the current environment.
[0004] Кроме обозначенной проблематики безопасности самих мобильных приложений существуют уязвимости платформы OS Android. Каждый месяц компания Google публикует бюллетень по безопасности (доступен по ссылке: https://source.android.corn/docs/security/bulletin?hl=ru), в котором обычно указано множество найденных актуальных CVE за прошедший месяц с разбивкой по периодам. Иными словами, безопасность МП, включая обрабатываемые данные, будет существенно зависеть от защищенности основной операционной системы, иначе при уязвимости высокого уровня на уровне ОС может быть получен доступ уровня root и все приложение будет скомпрометировано для дальнейшего более детального анализа. Защищенность операционной системы будет являться первым барьером на пути злоумышленника.[0004] In addition to the aforementioned security issues with mobile apps themselves, there are vulnerabilities within the Android OS platform. Every month, Google publishes a security bulletin (available at: https://source.android.corn/docs/security/bulletin?hl=en), which typically lists numerous relevant CVEs discovered over the previous month, broken down by period. In other words, the security of the mobile app, including the data it processes, will depend significantly on the security of the underlying operating system. Otherwise, a high-level vulnerability at the OS level could allow root access to be obtained, compromising the entire app for further, more detailed analysis. The security of the operating system will be the first barrier to attack.
[0005] Мобильные приложения для ОС Android представляют собой приложения на Java, которые транслируются в байт-код Java, выполняемый виртуальной машиной Java (далее - JVM). Байт-код Java сам по себе является достаточно прозрачным для изучения, а также легко восстанавливаемым вплоть до исходных кодов. Разработчики стремятся как можно хитрее спрятать код, используя различные приемы: обфускацию, компиляцию в нативный код, шифрование. Однако Java приложения даже после обфускации и запутывания кода имеют низкую защиту от РИ, так как большинство реализуемых методов защиты могут быть преодолены опытным реверс-инженером, a JVM остается под полным контролем пользователя с правами супер-пользователя (root) - так поступают злоумышленники, устанавливая приложения для анализа на уже скомпрометированные телефонные устройства с доступом уровня root. В настоящее время наиболее эффективная защита Java приложений сводится к следующим парадигмам, которые могут быть комбинированы между собой:[0005] Mobile applications for the Android OS are Java applications translated into Java bytecode, which is executed by the Java Virtual Machine (hereinafter referred to as JVM). Java bytecode itself is transparent enough to be studied and easily recovered, even down to the source code. Developers strive to hide the code as cleverly as possible, using various techniques: obfuscation, compilation to native code, encryption. However, even after obfuscation and obfuscation, Java applications have low protection against malicious code, since most implemented protection methods can be overcome by an experienced reverse engineer, and the JVM remains under the complete control of a user with superuser (root) rights—this is what attackers do, installing analysis applications on already compromised phone devices with root-level access. Currently, the most effective protection of Java applications comes down to the following paradigms, which can be combined with each other:
- Встраивание логики бэкенда (например, валидация лицензий или специфичных токенов на удаленном сервере);- Embedding backend logic (e.g. validation of licenses or specific tokens on a remote server);
- Внедрение сложных алгоритмов криптографии, которые существенно повысят стоимость и временные затраты на РИ;- Implementation of complex cryptographic algorithms, which will significantly increase the cost and time spent on RI;
- Осуществление перехода от защиты алгоритмов к защите критичных данных, таких как логины/пароли/ключи/токены API вызовов, хранимые и обрабатываемые в приложении данные и других пользовательских/технических данных с высокой значимостью.- Transition from protecting algorithms to protecting critical data, such as logins/passwords/keys/tokens for API calls, data stored and processed in the application, and other user/technical data with high significance.
[0006] МП на платформе Android в принципе и банковские приложения в частности, которые не имеют аналогичных реализованных средств защиты, с большой долей вероятности не смогут адекватно противодействовать РИ и динамическому анализу защищенности. Как упоминалось выше о регулярных уязвимостях платформы ОС Android - успешность встроенных средств защиты (антивирусное ПО, идентификация эмуляторов и root устройств и др.) может быть легко компенсирована свежей уязвимостью высокого или критичного уровня.[0006] Android-based mobile applications in general, and banking applications in particular, that lack similar security features, are highly unlikely to adequately counteract malicious attacks and dynamic security analysis. As mentioned above regarding the regular vulnerabilities of the Android OS platform, the effectiveness of built-in security features (antivirus software, emulator and root device identification, etc.) can easily be offset by a new high- or critical-level vulnerability.
[0007] Известно решение в части шифрования программного обеспечения при его передаче в исполняющую среду (US 7841009 В1б 23.11.2010), при котором выполняется сравнение данных для безопасной доставки и установки приложений в программной среде назначения.[0007] A solution is known in terms of encryption of software when it is transferred to the execution environment (US 7841009 B16 11/23/2010), in which a comparison of data is performed for the secure delivery and installation of applications in the destination software environment.
[0008] Такой подход не исключает вероятность утечки ПО и его последующего реверс-инжиниринга для создания вредоносного ПО, что снижает эффективность защиты оригинальных программных приложений.[0008] This approach does not exclude the possibility of software leakage and its subsequent reverse engineering to create malware, which reduces the effectiveness of the protection of original software applications.
СУЩНОСТЬ ИЗОБРЕТЕНИЯESSENCE OF THE INVENTION
[0009] Настоящее изобретение позволяет решить техническую проблему в части эффективной защиты кода приложений от реверс-инжиниринга.[0009] The present invention makes it possible to solve a technical problem in terms of effective protection of application code from reverse engineering.
[0010] Техническим результатом является повышение эффективности защиты кода от реверс-инжиниринга.[0010] The technical result is to increase the efficiency of code protection against reverse engineering.
[0011] Заявленный технический результат достигается за счет способа защиты программного кода мобильных приложений от реверс-инжиниринга, выполняемый с помощью процессора и содержащий этапы, на которых:[0011] The claimed technical result is achieved through a method for protecting the program code of mobile applications from reverse engineering, performed using a processor and containing the following stages:
получают исходный код приложения;receive the source code of the application;
выполняют автоматизированный анализ кода, в ходе которого выделяют по меньшей мере одну область кода, отвечающую за: аутентификацию, авторизацию и управление сессиями приложения; ввод данных в приложение; взаимодействие с файловой системой и ОС; взаимодействие с внутренними ресурсами; хранение секретов, обращения в хранилище ключей;perform automated code analysis, during which they identify at least one area of code responsible for: authentication, authorization, and session management of the application; entering data into the application; interaction with the file system and OS; interaction with internal resources; storing secrets, accessing the key store;
определяется степень критичности выявленных областей кода;the degree of criticality of the identified areas of code is determined;
определяется метод обфускации областей кода в зависимости от степени их критичности, причем методы обфускации выбираются из группы: обфускация данных, обфускация структуры, обфускация потока управления или их сочетания;the method of obfuscation of code areas is determined depending on the degree of their criticality, and the obfuscation methods are selected from the group: data obfuscation, structure obfuscation, control flow obfuscation or their combinations;
выполняют обфускацию выявленных областей кода; иperform obfuscation of the identified areas of code; and
формируют обфусцированный исходный код приложения.generate obfuscated source code of the application.
[0012] В одном из частных вариантов осуществления способа область ввода данных в приложение отвечает за взаимодействие с бэкендом, регистрацию нового аккаунта или восстановление пароля.[0012] In one particular embodiment of the method, the data entry area in the application is responsible for interaction with the backend, registering a new account, or recovering a password.
[0013] В другом частном варианте осуществления способа обфускация данных включает набор трансформаций, обеспечивающий сокрытие значений и структуры данных приложения.[0013] In another particular embodiment of the method, data obfuscation includes a set of transformations that ensure the concealment of the values and structure of the application data.
[0014] В другом частном варианте осуществления способа набор трансформаций включает в себя по меньшей мере одно из:[0014] In another particular embodiment of the method, the set of transformations includes at least one of:
агрегация данных, выполняющая изменение структур;data aggregation that performs structure modification;
хранение и кодирование данных, выполняющая изменения значений переменных;data storage and encoding, performing changes in the values of variables;
переупорядочивание данных, выполняющая изменение порядка хранения данных и использование динамических вычислений для определения нужного элемента массива.Data reordering, which changes the order in which data is stored and uses dynamic calculations to determine the desired array element.
[0015] В другом частном варианте осуществления способа обфускация структуры включает в себя набор техник по изменению структуры приложения путем модификации имен переменных, изменения форматирования кода, а также удаления комментариев и отладочной информации.[0015] In another particular embodiment of the method, obfuscation of the structure includes a set of techniques for changing the structure of the application by modifying variable names, changing the formatting of the code, and removing comments and debugging information.
[0016] В другом частном варианте осуществления способа обфускация потока управления содержит набор трансформаций, обеспечивающих скрытие ветвления и последовательности операций в исходном коде.[0016] In another particular embodiment of the method, the obfuscation of the control flow comprises a set of transformations that ensure the concealment of branching and the sequence of operations in the source code.
[0017] В другом частном варианте осуществления способа при обфускации потока выполняется трансформация в части вычисления потока управления, при которой скрывается последовательность выполнения кода и добавляется фиктивный код.[0017] In another particular embodiment of the method, when obfuscating a flow, a transformation is performed in the part of the control flow calculation, in which the sequence of code execution is hidden and dummy code is added.
[0018] В другом частном варианте осуществления способа фиктивный код содержит блоки с неисполнимым кодом и неявными предикатами.[0018] In another particular embodiment of the method, the dummy code contains blocks with non-executable code and implicit predicates.
[0019] В другом частном варианте осуществления способа предикат содержит сложное условие, которое разрешается в истинное-ложное по требованию прохождения блока.[0019] In another particular embodiment of the method, the predicate contains a complex condition that is resolved to true-false upon the requirement of passing the block.
[0020] В другом частном варианте осуществления способа при обфускации потока управления выполняется изменение порядка потока управления, при котором изменяется порядок выполнения операций.[0020] In another particular embodiment of the method, when obfuscating the control flow, a change in the order of the control flow is performed, which changes the order of execution of operations.
[0021] В другом частном варианте осуществления способа при обфускации потока управления выполняется трансформация, изменяющая структуру выполнения методов путем их объединения в общий метод с использованием селектора, или клонирования методов.[0021] In another particular embodiment of the method, when obfuscating the control flow, a transformation is performed that changes the execution structure of methods by combining them into a common method using a selector, or cloning methods.
[0022] В другом частном варианте осуществления способа при обфускации потока управления выполняется упорядочивание потока управления, при котором происходит изменение порядка независимых выражений и направлений обхода в циклах.[0022] In another particular embodiment of the method, when obfuscating the control flow, the control flow is ordered, which involves changing the order of independent expressions and directions of traversal in cycles.
[0023] В другом частном варианте осуществления способа при обфускации потока управления выполняется уплощение потока управления с помощью диспетчера и нумерации блоков.[0023] In another particular embodiment of the method, when obfuscating the control flow, flattening of the control flow is performed using a dispatcher and block numbering.
[0024] В другом частном варианте осуществления способа при уплощении потока управления линейным участкам кода присваивается уникальный номер для последующего их выбора для исполнения диспетчером.[0024] In another particular embodiment of the method, when flattening the control flow, the linear sections of the code are assigned a unique number for their subsequent selection for execution by the dispatcher.
[0025] Заявленное изобретение также реализуется с помощью системы защиты программного кода мобильных приложений от реверс-инжиниринга, содержащую по меньшей мере один процессор и по меньшей мере одну память, содержащую машиночитаемые инструкции, которые при их выполнении по меньшей мере одним процессором реализуют вышеуказанный способ.[0025] The claimed invention is also implemented using a system for protecting software code of mobile applications from reverse engineering, containing at least one processor and at least one memory containing machine-readable instructions that, when executed by at least one processor, implement the above-mentioned method.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS
[0026] Фиг. 1 иллюстрирует блок-схему заявленного способа.[0026] Fig. 1 illustrates a block diagram of the claimed method.
[0027] Фиг. 2 иллюстрирует общий вид вычислительного устройства.[0027] Fig. 2 illustrates a general view of the computing device.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION
[0028] На Фиг. 1 представлена блок-схема заявленного способа (100) защиты от реверс-инжиниринга приложений. На первом этапе (101) выполняется получение исходного кода приложения, который далее анализируется на наличие областей в коде на этапе (102) для их обработки.[0028] Fig. 1 shows a block diagram of the claimed method (100) for protecting against reverse engineering of applications. In the first step (101), the source code of the application is obtained, which is then analyzed for the presence of areas in the code in step (102) for processing them.
[0029] Классификация и разделение на области кода на этапе (102) может выполняться с помощью инструментов статического тестирования безопасности приложений (SAST). В основе инструментов SAST (Static Application Security Testing) лежит анализ кода приложения/программы или его части без реального запуска в исполняемой среде. Такую технологию еще принято называть тестированием по методу белого ящика и в отличии от динамического тестирования, SAST проверяет исполняемый код полностью. Современные инструменты SAST поддерживают различные языки программирования, за счет чего сканирование осуществляется с учетом их особенностей, максимально точно и эффективно.[0029] Classification and division of code into regions at step (102) can be performed using static application security testing (SAST) tools. SAST (Static Application Security Testing) tools are based on the analysis of application/program code or parts thereof without actually running it in an executable environment. This technology is also commonly referred to as white-box testing, and unlike dynamic testing, SAST verifies the executable code in its entirety. Modern SAST tools support various programming languages, allowing scanning to be performed with due regard for their specific features, as accurately and efficiently as possible.
[0030] SAST легко внедряется в конвейер разработки или в IDE (integrated development environment), что делает его полностью автоматизированным и не зависящим от уровня экспертизы и опыта использования оператором. Помимо всего прочего анализ исходного кода включает в себя обратную связь от сканера о точном местоположении целевого блока, класса, метода или функции в коде. При этом в зависимости от прикладных задач и акцентов в SAST решениях, целевыми событиями (фрагментами) могут являться уязвимости, конфиденциальная или критическая информация. Одним из ключевых факторов, определяющих эффективность выявления целевых событий является регулярно обновляемая база правил с возможностями гибкой настройки и расширения.SAST is easily integrated into a development pipeline or IDE (integrated development environment), making it fully automated and independent of operator expertise and experience. Source code analysis also includes feedback from the scanner on the precise location of the target block, class, method, or function within the code. Depending on the application tasks and the emphasis of SAST solutions, target events (fragments) can include vulnerabilities, confidential, or critical information. One of the key factors determining the effectiveness of target event detection is a regularly updated rule base with flexible customization and expansion capabilities.
[0031] Далее с помощью решения SAST осуществляется классификация определяемых областей исходного кода. Пример классификации областей приведен в Таблице №1.[0031] Next, the SAST solution is used to classify the identified source code regions. An example of region classification is shown in Table 1.
[0031] Далее приводятся примеры текста исходного кода для каждой из областей.[0031] The following are examples of source code text for each of the areas.
[0032] Аутентификация авторизация и управления сессиями[0032] Authentication, authorization and session management
[0037] Далее на этапе (103) выполняется анализ критичности каждой из областей кода с присвоением каждой из областей своего значения критичности. Пример классификации областей приведен в Таблице №2.[0037] Next, at step (103), the criticality of each area of the code is analyzed, with each area assigned its own criticality value. An example of the classification of areas is given in Table No. 2.
[0038] Далее на этапе (104) определяются методы обфускации для выявленных областей кода с учетом степени их критичности. Для различных областей исходного кода применяется дифференцированная обфускация вышеописанными техниками. Данный подход позволяет максимизировать защиту наиболее ценных (критичных) областей исходного кода, при этом не допуская и избегая избыточной обфускации.[0038] Next, at step (104), obfuscation methods are determined for the identified code areas, taking into account their degree of criticality. Differentiated obfuscation using the techniques described above is applied to different areas of the source code. This approach maximizes the protection of the most valuable (critical) areas of the source code, while preventing and avoiding excessive obfuscation.
[0040] На основе результатов данного этапа определяются параметры (техники) обфускации, реализация которых также осуществляется далее в автоматизированном режиме.[0040] Based on the results of this stage, the obfuscation parameters (techniques) are determined, the implementation of which is also carried out further in an automated mode.
[0041] Рассмотрим применяемые методы обфускации кода.[0041] Let's consider the methods of code obfuscation used.
[0042] Обфускация данных - набор трансформаций, обеспечивающий сокрытие значений и структуры данных, которые используется приложением в работе. Реализация предполагает несколько категорий:[0042] Data obfuscation is a set of transformations that ensure the concealment of the values and structure of data used by an application. Implementation involves several categories:
- Аггрегация данных - изменения касающиеся объединения/разъединения структур (констант, классов, массивов). Константы могут объединятся в аггрегированные массивы или другие сложные типы, обфусцируемые массивы в свою очередь разбиваются на несколько частей или объединяются с другими массивами.- Data aggregation – changes related to the merging/unmerging of structures (constants, classes, arrays). Constants can be combined into aggregated arrays or other complex types, while obfuscated arrays are in turn split into several parts or merged with other arrays.
- Хранение и кодирование данных - набор трансформаций, включающих в себя изменения значений переменных. Значения констант заменяются на динамически вычисляемые. Строковые константы шифруются, добавляются функции шифрования и дешифрования. Целочисленные константы разбиваются на слагаемые.Data storage and encoding is a set of transformations that include changes to variable values. Constant values are replaced with dynamically calculated ones. String constants are encrypted, and encryption and decryption functions are added. Integer constants are broken down into terms.
- Переупорядочеванние данных - изменения порядка хранения данных и использование динамических вычислений для определения нужного элемента массива [0043] Обфускация структуры - набор техник по изменению структуры программы путем модификации имен переменных, изменения форматированния кода, а также удаления комментариев и отладочной информации.- Data reordering - changing the order in which data is stored and using dynamic calculations to determine the desired array element [0043] Structure obfuscation - a set of techniques for changing the structure of a program by modifying variable names, changing the formatting of code, and removing comments and debugging information.
[0044] Обфускация потока управления (control flow) - техника, с помощью которой скрываются ветвления и последовательность операций в исходном коде. Данный набор методик включает в себя следующие способы:[0044] Control flow obfuscation is a technique used to hide branches and sequences of operations in source code. This set of methods includes the following:
- Вычисление потока управления - категория трансформаций, в которой скрывается последовательность выполнения кода и добавляется «мусорный» код (не влияющий на выполнение программы). К оригинальному коду примешиваются блоки с недостижимым кодом и использованием неявных предикатов, которые в зависимости от условий могут выполнять или пропускать следующий блок. Предикат содержит сложное условие, которое разрешается в истинное-ложное по требованию прохождения блока;Control flow computation is a category of transformations that hides the code execution sequence and adds "junk" code (which does not affect program execution). The original code is interspersed with blocks of unreachable code using implicit predicates that, depending on conditions, can execute or skip the next block. The predicate contains a complex condition that evaluates to true or false upon traversal of the block;
- Изменение порядка потока управления - обфускации меняющие порядок выполнения операций, например, обход циклов с последнего элемента;- Changing the order of control flow - obfuscations that change the order of operations, for example, bypassing cycles from the last element;
- Агрегация потока управления - трансформации, изменяющие структуру выполнения методов путем их объединения в общий метод с использованием селектора, или клонирование методов для усложнения анализа;- Control flow aggregation - transformations that change the execution structure of methods by combining them into a common method using a selector, or cloning methods to complicate analysis;
- Упорядочивании потока управления - изменение порядка независимых выражений и направлений обхода в циклах;- Control flow ordering - changing the order of independent expressions and directions of traversal in cycles;
- Уплощение потока управления - техника управления потоком управления с использованием диспетчера и нумерации блоков. Вместо последовательного выполнения базовых блоков (линейных участков кода) каждому из них присваивается определенный номер. Выбор блока определяет диспетчер по номеру. Номер для следующего блока вычисляется в момент работы текущего.- Control flow flattening is a control flow management technique using a dispatcher and block numbering. Instead of sequentially executing basic blocks (linear sections of code), each block is assigned a specific number. The dispatcher determines block selection based on its number. The number for the next block is calculated as the current block executes.
[0045] Превентивная обфускация - набор техник, позволяющий противодействовать инструментам автоматизированного анализа - дебаггерам, декомпиляторам и т.д. Основное направление - использование ограничений таких инструментов. Данный метод включает следующие подходы:[0045] Preventive obfuscation is a set of techniques that counteract automated analysis tools—debuggers, decompilers, etc.—by exploiting the limitations of such tools. This method includes the following approaches:
- Анти-дебаггинг - исполнение особого кода для определения присутствия подключенного дебаггера. В случае обнаружения, программа прекращает работу.- Anti-debugging - execution of special code to detect the presence of a connected debugger. If detected, the program terminates.
- Анти-декомпиляция - внедрение сложных структур, которые могут быть рекурсивными и расходовать вычислительные ресурсы декомпилятора, либо использовать неявные последовательности или функции, которые приводят к ошибкам декомпиляции - Рефлексия - техника динамической загрузки кода, позволяющая запускать скрытые функции.- Anti-decompilation - the introduction of complex structures that can be recursive and consume the computing resources of the decompiler, or use implicit sequences or functions that lead to decompilation errors - Reflection - a dynamic code loading technique that allows hidden functions to be run.
[0046] Изобретение не ограничивается данным набором техник обфускации и служит в качестве примера и описания логики работы частного случая противодействия реверс-инжинирингу банковского мобильного приложения.[0046] The invention is not limited to this set of obfuscation techniques and serves as an example and description of the logic of operation of a particular case of counteracting reverse engineering of a banking mobile application.
[0047] Приведенные в Таблице №3 методы обфускации применяются как по отдельности, так и в комбинации на этапе (105), в зависимости от степени критичности той или иной области кода. Техники обфускации автоматически применяются с помощью вышеупомянутого SAST решения, которые настраиваются для применения техник обфускации при выявлении соответствующих областей исходного кода.[0047] The obfuscation methods listed in Table 3 are applied either individually or in combination at step (105), depending on the criticality of a particular code area. Obfuscation techniques are automatically applied by the aforementioned SAST solution, which is configured to apply obfuscation techniques upon detection of relevant areas of the source code.
[0048] По итогу работы способа (100) формируется обфусцированный исходный код, защищенный от реверс-инжиниринга. Данный подход значительно повышает уровень сложности и трудоемкости реверс-инжиниринга, так как не позволяет применять существующие автоматизированные средства реверс-инжиниринга, а также требует специфических знаний и навыков от профильного специалиста по реверс-инжиниринга. При этом применяемая защита приложения не оказывает существенного влияния на работу мобильного приложения в части быстродействия и клиентского пути.[0048] The result of the method (100) is obfuscated source code protected from reverse engineering. This approach significantly increases the complexity and labor intensity of reverse engineering, as it precludes the use of existing automated reverse engineering tools and requires specialized knowledge and skills from a reverse engineering specialist. However, the applied application protection does not significantly impact the mobile application's performance or user experience.
[0049] Вышеописанный подход можно использовать как в банковской сфере, так и за ее пределами, так как защита мобильных приложений от реверс-инжиниринга актуальна для владельцев и разработчиков всех приложений, стремящихся сохранить конфиденциальную информацию мобильного приложения от злоумышленников и разработчиков сторонних приложений.[0049] The above approach can be used both in the banking sector and outside of it, since protecting mobile applications from reverse engineering is relevant for owners and developers of all applications seeking to protect the confidential information of a mobile application from intruders and developers of third-party applications.
[0050] На Фиг. 2 представлен общий вид вычислительной системы, реализованной на базе вычислительного устройства (200) и обеспечивающей выполнение заявленного способа (100). В общем случае вычислительное устройство (200) содержит объединенные общей шиной информационного обмена один или несколько процессоров (201), средства памяти, такие как ОЗУ (202) и ПЗУ (203), интерфейсы ввода/вывода (204), устройства ввода/вывода (205) и устройство для сетевого взаимодействия (206).[0050] Fig. 2 shows a general view of a computing system implemented on the basis of a computing device (200) and ensuring the implementation of the claimed method (100). In the general case, the computing device (200) comprises one or more processors (201) connected by a common information exchange bus, memory means such as RAM (202) and ROM (203), input/output interfaces (204), input/output devices (205) and a device for network interaction (206).
[0051] Процессор (201) (или несколько процессоров, многоядерный процессор) могут выбираться из ассортимента устройств, широко применяемых в текущее время, например, компаний Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™ и т.п. Под процессором также необходимо учитывать графический процессор, например, GPU NVIDIA или ATI, который также является пригодным для полного или частичного выполнения способа (100). При этом средством памяти может выступать доступный объем памяти графической карты или графического процессора.[0051] The processor (201) (or several processors, a multi-core processor) can be selected from a range of devices that are widely used at the present time, for example, from Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™, etc. The processor must also include a graphic processor, for example, an NVIDIA or ATI GPU, which is also suitable for the full or partial implementation of the method (100). In this case, the memory means can be the available memory capacity of the graphic card or graphic processor.
[0052] ОЗУ (202) представляет собой оперативную память и предназначено для хранения исполняемых процессором (201) машиночитаемых инструкций для выполнение необходимых операций по логической обработке данных. ОЗУ (202), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.).[0052] RAM (202) is a random access memory and is intended for storing machine-readable instructions executable by the processor (201) for performing the necessary operations for logical data processing. RAM (202), as a rule, contains executable instructions of the operating system and the corresponding software components (applications, software modules, etc.).
[0053] ПЗУ (203) представляет собой одно или более устройств постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др.[0053] ROM (203) represents one or more permanent data storage devices, such as a hard disk drive (HDD), a solid state drive (SSD), flash memory (EEPROM, NAND, etc.), optical storage media (CD-R/RW, DVD-R/RW, BlueRay Disc, MD), etc.
[0054] Для организации работы компонентов устройства (200) и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В (204). Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительного устройства, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232 и т.п.[0054] To organize the operation of the components of the device (200) and to organize the operation of external connected devices, various types of I/O interfaces (204) are used. The selection of the corresponding interfaces depends on the specific design of the computing device, which may be, without limitation: PCI, AGP, PS/2, IrDa, FireWire, LPT, COM, SATA, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232, etc.
[0055] Для обеспечения взаимодействия пользователя с вычислительным устройством (200) применяются различные средства (205) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.[0055] To ensure user interaction with the computing device (200), various I/O information means (205) are used, for example, a keyboard, a display (monitor), a touch display, a touchpad, a joystick, a mouse, a light pen, a stylus, a touch panel, a trackball, speakers, a microphone, augmented reality means, optical sensors, a tablet, light indicators, a projector, a camera, biometric identification means (a retinal scanner, a fingerprint scanner, a voice recognition module), etc.
[0056] Средство сетевого взаимодействия (206) обеспечивает передачу данных устройством (200) посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п.В качестве одного или более средств (206) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.[0056] The network interaction means (206) ensures the transmission of data by the device (200) via an internal or external computer network, for example, the Intranet, the Internet, a LAN, etc. One or more means (206) may be, but are not limited to: an Ethernet card, a GSM modem, a GPRS modem, an LTE modem, a 5G modem, a satellite communication module, an NFC module, a Bluetooth and/or BLE module, a Wi-Fi module, etc.
[0057] Дополнительно могут применяться также средства спутниковой навигации в составе устройства (200), например, GPS, ГЛОНАСС, BeiDou, Galileo.[0057] Additionally, satellite navigation tools may also be used as part of the device (200), for example, GPS, GLONASS, BeiDou, Galileo.
[0058] Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов соответствующей области техники.[0058] The submitted application materials disclose preferred examples of the implementation of the technical solution and should not be interpreted as limiting other, particular examples of its implementation that do not go beyond the scope of the requested legal protection, which are obvious to specialists in the relevant field of technology.
Claims (25)
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RU2851570C1 true RU2851570C1 (en) | 2025-11-25 |
Family
ID=
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6668325B1 (en) * | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
| RU2439669C2 (en) * | 2005-08-06 | 2012-01-10 | Майкрософт Корпорейшн | Method to prevent reverse engineering of software, unauthorised modification and data capture during performance |
| US8856869B1 (en) * | 2009-06-22 | 2014-10-07 | NexWavSec Software Inc. | Enforcement of same origin policy for sensitive data |
| US20160180065A1 (en) * | 2013-08-12 | 2016-06-23 | Soongsil University Research Consortium Techno- Park | Apparatus for tamper protection of application code and method thereof |
| US20220116745A1 (en) * | 2014-09-29 | 2022-04-14 | Visa International Service Association | Methods and systems for asset obfuscation |
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6668325B1 (en) * | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
| RU2439669C2 (en) * | 2005-08-06 | 2012-01-10 | Майкрософт Корпорейшн | Method to prevent reverse engineering of software, unauthorised modification and data capture during performance |
| US8856869B1 (en) * | 2009-06-22 | 2014-10-07 | NexWavSec Software Inc. | Enforcement of same origin policy for sensitive data |
| US20160180065A1 (en) * | 2013-08-12 | 2016-06-23 | Soongsil University Research Consortium Techno- Park | Apparatus for tamper protection of application code and method thereof |
| US20220116745A1 (en) * | 2014-09-29 | 2022-04-14 | Visa International Service Association | Methods and systems for asset obfuscation |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Feng et al. | A performance-sensitive malware detection system using deep learning on mobile devices | |
| Or-Meir et al. | Dynamic malware analysis in the modern era—A state of the art survey | |
| Geneiatakis et al. | A Permission verification approach for android mobile applications | |
| US11809571B2 (en) | Vulnerability analysis using continuous application attestation | |
| Dejaeghere et al. | Comparing security in ebpf and webassembly | |
| Shepherd et al. | Trusted Execution Environments | |
| Wang et al. | Symgx: Detecting cross-boundary pointer vulnerabilities of sgx applications via static symbolic execution | |
| US20250028838A1 (en) | Guided method to detect software vulnerabilities | |
| US8694797B2 (en) | Method for preventing malicious software from execution within a computer system | |
| RU2851570C1 (en) | Method and system for protection of mobile applications program code from reverse engineering | |
| Busch et al. | {GlobalConfusion}:{TrustZone} Trusted Application 0-Days by Design | |
| Zeng et al. | Mazerunner: Evaluating the attack surface of control-flow integrity policies | |
| RU2467389C1 (en) | Method of protecting software and dataware from unauthorised use | |
| Moghadam et al. | Memory integrity techniques for memory-unsafe languages: A survey | |
| Joshi et al. | Trading off a vulnerability: does software obfuscation increase the risk of rop attacks | |
| Wang et al. | Towards memory safe python enclave for security sensitive computation | |
| Kalogranis | Antivirus software evasion: an evaluation of the av evasion tools | |
| WO2025259128A1 (en) | Method and system for protecting mobile application source code against reverse engineering | |
| Huq et al. | A Survey of Cloud-Based GPU Threats and Their Impact on AI, HPC, and Cloud Computing | |
| US20070061790A1 (en) | Partially compiled data security software | |
| Kanchhal et al. | Android malware a oversight on malware detection using machine learning | |
| Gadilohar et al. | Integrating CNN and XGBoost with Synthetic Samples for Advanced Android Malware Detection | |
| CN119155115B (en) | Website security vulnerability detection method and system | |
| Poornima et al. | Evolution of Deep Quantum Learning Models Based on Comprehensive Survey on Effective Malware Identification and Analysis | |
| Song et al. | JShellDetector: A Java Fileless Webshell Detector Based on Program Analysis |