Исследование распределения константных значений в исходном коде программ на языке C

Обложка

Цитировать

Полный текст

Аннотация

В настоящее время ключевую роль в разработке программного обеспечения играет программная инженерия, одним из критерия развитости которой является изучение ее фактологии и различных научно-практических закономерностей. Важным аспектом данной области является логика выполнения программ, оперирующая внутренними данными, и, в частности – константными значениями, выявление закономерностей в которых и актуализирует данное исследование. В качестве основных применений данной закономерности можно отметить такие, как получение фундаментальных знаний об алгоритмах, создание новых и расширение существующих метрик оценки и сравнения программного кода, развитие методов его оптимизации, применение в генетическом программировании и др.Целью настоящей статьи получение частотного распределения константных значений в исходном коде программ на языке программирования C.Сущность представленного подхода заключается в создании метода статистического анализа текста исходных кодов программ, содержащихся в датасете ExeBench (который состоит из огромного количества исходного кода функций на языке программирования C, их ассемблерного кода для различных процессорных архитектур, ошибок компиляции и другой информации).Предложенный метод базируется на применении алгоритмов лексического и синтаксического разбора функций исходного кода, семантического определения типов констант, преобразования записи символов языка программирования в соответствующие числовые или строковые значения.Метод имеет реализацию в виде программного средства на языке программирования Python, приведенного в виде интуитивно понятного псевдокода.Эксперименты с применением данного прототипа позволили получить искомое распределение константных значений для исходного кода программ на языке программирования C. Анализ полученных результатов позволил сделать ряд важных теоретико-практических выводов касательно наиболее часто используемых констант, соответствия полученного распределения закону Ципфа и близость к показательной функции, аномального появления ряда констант в Топ-50 и др.Научная новизна предложенного подхода заключается в том, что распределение константных значений для исходного кода программ на языке программирования C получено впервые.Теоретическая значимость состоит в получении новых фундаментальных знаний касательно особенностей и закономерностей конструкций исходного кода, которые могут быть расширены и на другие языки программирования.Практическая значимость заключается в применении распределения для большого спектра задач, включая авторский генетический реверс-инжиниринг, который сам по себе является качественно новым направлением.

Об авторах

К. Е. Израилов

Санкт-Петербургский Федеральный исследовательский центр Российской академии наук

Email: konstantin.izrailov@mail.ru
ORCID iD: 0000-0002-9412-5693
SPIN-код: 5109-3499

Список литературы

  1. Касторнов А.Ф., Касторнова В.А. Языки программирования и их роль в становлении предметной области "Информатика" // Педагогическая информатика. 2016. № 1. С. 59‒68. EDN:VUUFHV
  2. Коновалов Г.Г. Измерение качества чистого кода: метрики и инструменты анализа // Тенденции развития науки и образования. 2023. № 102-5. С. 25‒28. doi: 10.18411/trnio-10-2023-244. EDN:GDPWLC
  3. Хлыстов И.С., Жарова О.Ю. Генетическое программирование // Электронный журнал: наука, техника и образование. 2016. № 4(9). С. 62‒67. EDN:XHJVHH
  4. Израилов К.Е. Концепция генетической декомпиляции машинного кода телекоммуникационных устройств // Труды учебных заведений связи. 2021. Т. 7. № 4. С. 10‒17. doi: 10.31854/1813-324X-2021-7-4-95-109. EDN:AIOFPM
  5. Kotenko I., Izrailov K., Buinevich M. Analytical Modeling for Identification of the Machine Code Architecture of Cyberphysical Devices in Smart Homes // Sensors. 2022. Vol. 22. Iss. 3. PP. 1017. doi: 10.3390/s22031017
  6. Буйневич М.В., Израилов К.Е. Способ классификации файлов на базе технологии машинного обучения // Вестник Санкт-Петербургского государственного университета технологии и дизайна. Серия 1: Естественные и технические науки. 2020. № 1. С. 34‒41. doi: 10.46418/2079-8199_2020_1_6. EDN:MDPYTW
  7. Израилов К.Е. Прогнозирование размера исходного кода бинарной программы в интересах ее интеллектуального реверс-инжиниринга // Вопросы кибербезопасности. 2024. № 4(62). С. 13‒25. doi: 10.21681/2311-3456-2024-4-13-25. EDN:NRFCND
  8. Кучерова С.В. Закон Ципфа и его приложения в области лингвистики // Некоторые вопросы анализа, алгебры, геометрии и математического образования. 2020. № 10. С. 107‒108. EDN:QRNCOY
  9. Leonov N., Buinevich M., Chechulin A. Top-20 Weakest from Cybersecurity Elements of the Industry Production and Technology Platform 4.0 Information Systems // Proceedings of the International Russian Smart Industry Conference (SmartIndustryCon, Sochi, Russian, 25‒29 March 2024). IEEE, 2024. PP. 668‒675. doi: 10.1109/SmartIndustryCon61328.2024.10515678
  10. Фомин А.И. Оценка сложности исследования дизассемблированного кода исполняемых программ // Естественные и технические науки. 2021. № 7(158). С. 210‒211. EDN:UBNPCY
  11. Ормонова Э.М. Определение качества программного продукта на основе теории графов // Наука. Образование. Техника. 2021. № 1(70). С. 37‒44. EDN:ITSANI
  12. Лебедев В.В. Деобфускация control flow flattening средствами символьного исполнения // Прикладная дискретная математика. Приложение. 2021. № 14. С. 134‒138. doi: 10.17223/2226308X/14/29. EDN:ITNATQ
  13. Королев В.Ю., Смелянский Р.Л., Смелянский Т.Р., Шалимов А.В. Об оценивании частоты выполнения фрагментов кода последовательной программы // Известия Российской академии наук. Теория и системы управления. 2015. № 4. С. 39. doi: 10.7868/S0002338815040095. EDN:RXZZRT
  14. Armengol-Estapé J., Woodruff J., Brauckmann A., Magalhães J.W.S., O'Boyle M.F.P. ExeBench: an ML-scale dataset of executable C functions // Proceedings of the 6th ACM SIGPLAN International Symposium on Machine Programming (New York, USA, 13 June 2022). ACM, 2022. PP. 50–59. doi: 10.1145/3520312.3534867
  15. Toomey W. Ctcompare: Code clone detection using hashed token sequences // Proceedings of the 6th International Workshop on Software Clones (IWSC, Zurich, Switzerland, 04 June 2012). IEEE, 2012. PP. 92‒93. doi: 10.1109/IWSC.2012.6227881
  16. Samuelsson C. Comparative evaluation of the stochastic simplex bisection algorithm and the SciPy.Optimize module // Proceedings of the Federated Conference on Computer Science and Information Systems (FedCSIS, Lodz, Poland, 13‒16 September 2015). IEEE, 2015. PP. 573‒578. doi: 10.15439/2015F47
  17. Барляева Е.А. Мыслительная деятельность человека в метафорах и сравнениях // Вестник Воронежского государственного университета. Серия: Лингвистика и межкультурная коммуникация. 2016. № 3. С. 15‒18. EDN:WKNUBD

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML


Creative Commons License
Эта статья доступна по лицензии Creative Commons Attribution 4.0 International License.

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».