Научно-технический журнал УДК 004.415.5 С.В. МОЖИН АЛГОРИТМ АВТОМАТИЧЕСКОГО ОПРЕДЕЛЕНИЯ ЦИКЛОВ В ИСПОЛНЯЕМОМ КОДЕ Рассматривается задача восстановления структурных компонентов программного обеспечения. <...> Предлагается алгоритм автоматического определения циклов в исполняемом коде. <...> Ключевые слова: верификация программного обеспечения; граф потока управления; обратный инженеринг; алгоритм поиска структурных компонентов. <...> Ни бинарный код, ни ассемблерный листинг, полученный в результате дизассемблирования, не позволяют с приемлемыми трудозатратами оценить взаимосвязь элементов программы, а также идентифицировать в программе стандартные алгоритмические конструкции [3]. <...> Автоматическое определение структурных компонентов исполняемого кода дает возможность частично преодолеть указанные выше трудности. <...> Программные приложения, представленные в виде исполняемых файлов или на языке ассемблера, сложны для анализа их специалистами в области информационной безопасности и должны быть предоставлены им для анализа на более высоком уровне представления. <...> В частности, при компиляции программы из языка высокого уровня в язык ассемблера характерно отображение «многие к одному» концепций языка высокого уровня в концепции языка ассемблера, как следствие, однозначное восстановление структурных компонентов программы становится зачастую невозможным [2]. <...> Поэтому системы определения структурных компонентов исполняемого кода программ должны работать во взаимодействии с аналитиком, который управляет процессом декомпиляции. <...> В ходе определения структурных компонентов исполняемого кода программы решаются следующие задачи: выделение структурных единиц программы, в частности, подпрограмм в однородном ассемблерном листинге, выявление параметров подпрограмм и возвращаемых ими значений, структурный анализ, то есть восстановление операторов циклов, ветвлений и т.п., восстановление типов данных (как базовых <...>