Preview

Труды Института системного программирования РАН

Расширенный поиск

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

https://doi.org/10.15514/ISPRAS-2026-38(4)-5

Аннотация

Статически связанные библиотеки упрощают распространение и использование программного обеспечения, но усложняют анализ бинарных файлов, поскольку код библиотеки становится неотличимым от кода программы после компиляции. Идентификация встроенных библиотек и их версий имеет важное значение для анализа состава программного обеспечения, оценки уязвимостей и соблюдения лицензионных требований. Несмотря на значительный прогресс существующих решений, достижение точной идентификации библиотек при различных оптимизациях компилятора и нескольких версиях библиотек остается сложной задачей. В данной статье представляется метод нахождения статически связанных библиотек в исполняемых файлах. Предложенный подход строит графы зависимостей программ и графы вызовов функций как для анализируемого исполняемого файла, так и для версий-кандидатов библиотек, после чего сопоставляет соответствующие функции с помощью масштабируемого алгоритма сравнения графов. Метод был реализован и протестирован на исполняемых файлах, содержащих различные версии широко используемых библиотек. Результаты экспериментов показывают, что предложенный подход обеспечивает в среднем 91%-ную точность и 99%-ную полноту идентификации встроенных библиотек, сохраняя при этом практическую масштабируемость.

Об авторах

Мариам Сероповна АРУТЮНЯН
Российско-Армянский университет
Армения

Кандидат технических наук, исследователь в Центре передовых программных технологий и преподаватель Российско-Армянского университета. Сфера научных интересов: статический анализ программ, безопасность программного обеспечения и оптимизация компиляторов.



Айк Каренович АСЛАНЯН
Российско-Армянский университет
Армения

Кандидат физико-математических наук, исследователь в Центре передовых программных технологий и преподаватель Российско-Армянского университета. Его научные интересы включают статический и динамический анализ программ, безопасность программного обеспечения и оптимизацию компиляторов.



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

1. Krueger C.W. Software reuse. ACM Computing Surveys, 1992, vol. 24, no. 2, pp. 131-183. DOI: 10.1145/130844.130856.

2. National Institute of Standards and Technology. National Vulnerability Database (NVD). Available at: https://nvd.nist.gov/, accessed 10.03.2026.

3. Cybersecurity and Infrastructure Security Agency. Known Exploited Vulnerabilities Catalog. Available at: https://www.cisa.gov/known-exploited-vulnerabilities-catalog, accessed 10.03.2026.

4. Hex-Rays. IDA F.L.I.R.T. Technology, 27.05.2015. Available at: https://www.hex-rays.com/products/ida/tech/flirt/index.shtml, accessed 10.03.2026.

5. Ferrante J., Ottenstein K.J., Warren J.D. The Program Dependence Graph and Its Use in Optimization. ACM Transactions on Programming Languages and Systems, 1987, vol. 9, no. 3, pp. 319-349. DOI: 10.1145/24039.24041.

6. von Tschirschnitz M. Library and Function Identification by Optimized Pattern Matching on Compressed Databases: A Close to Perfect Identification of Known Code Snippets. In Proc. of the 2nd Reversing and Offensive-oriented Trends Symposium (ROOTS), 2018.

7. idenLib. Available at: https://github.com/secrary/idenLib, accessed 10.03.2026.

8. Akabane S., Okamoto T. Identification of Library Functions Statically Linked to Linux Malware. Procedia Computer Science, 2020, vol. 176, pp. 3436-3445. DOI: 10.1016/j.procs.2020.09.013.

9. Alvarez V. YARA Documentation, 2013. Available at: https://yara.readthedocs.io/en/v4.1.0/index.html, accessed 10.03.2026.

10. Google Project Zero. FunctionSimSearch. Available at: https://github.com/googleprojectzero/functionsimsearch, accessed 10.03.2026.

11. Charikar M.S. Similarity Estimation Techniques from Rounding Algorithms. In Proc. of the 34th Annual ACM Symposium on Theory of Computing, 2002, pp. 380-388. DOI: 10.1145/509907.509965.

12. Itkin E. Karta – Matching Open Sources in Binaries. Available at: https://research.checkpoint.com/karta-matching-open-sources-in-binaries/, accessed 10.03.2026.

13. Zou Y., Zhang Y., Zhao G., Wu Y., Shen S., Fu C. BinCoFer: Three-stage Purification for Effective C/C++ Binary Third-party Library Detection. Journal of Systems and Software, 2025, vol. 229. DOI: 10.1016/j.jss.2025.112480.

14. Carrillo-Mondéjar J., Rodríguez R.J. Identifying Runtime Libraries in Statically Linked Linux Binaries. Future Generation Computer Systems, 2025, vol. 164, article 107602. DOI: 10.1016/j.future.2024.107602.

15. Arutunian M., Hovhannisyan H., Malajyan A., Avetisyan K., Aslanyan H. Method for Identifying Changes Between Program Versions. In Proc. of the 35th International Conference on Computer Theory and Applications (ICCTA), Alexandria, Egypt, 2025, pp. 107-112. DOI: 10.1109/ICCTA68914.2025.11520031.

16. GNU Project. GNU Binutils. Available at: https://www.gnu.org/software/binutils/, accessed 10.03.2026.

17. GNU Project. Coreutils – GNU Core Utilities. Available at: https://www.gnu.org/software/coreutils/, accessed 10.03.2026.

18. LLVM Project. Clang: A C Language Family Frontend for LLVM. Available at: https://clang.llvm.org/, accessed 10.03.2026.

19. Stallman R.M., GCC Developer Community. Using the GNU Compiler Collection. Boston: GNU Press, 2003.

20. Powers D.M.W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness and Correlation. Journal of Machine Learning Technologies, 2011, vol. 2, no. 1, pp. 37-63.

21. Manning C.D., Raghavan P., Schütze H. Introduction to Information Retrieval. Cambridge: Cambridge University Press, 2008. 482 p.


Рецензия

Для цитирования:


АРУТЮНЯН М.С., АСЛАНЯН А.К. Идентификация статически связанных библиотек в исполняемых файлах с использованием сопоставления графов зависимостей программы. Труды Института системного программирования РАН. 2026;38(4):89-100. https://doi.org/10.15514/ISPRAS-2026-38(4)-5

For citation:


ARUTUNIAN M.S., ASLANYAN H.K. Identification of Statically Linked Libraries in Executables Using Program Dependence Graph Matching. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2026;38(4):89-100. (In Russ.) https://doi.org/10.15514/ISPRAS-2026-38(4)-5



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)