ПРИКЛАДНАЯ ИНФОРМАТИКА ¹ 6(24) 2009 Е. Н. Трошина, А. В. Чернов Восстановление типов данных в задаче декомпилирования в язык C Декомпиляция—одна из сложнейших задач обратной инженерии. <...> Программные компоненты, представленные в виде исполняемых файлов или на языке ассемблера, сложны для анализа специалистами в области информационной безопасности. <...> Для более качественного и продуктивного анализа их лучше предоставлять специалистам на более высоком уровне представления, например, на языке высокого уровня, в частности на языке программирования C. <...> Ассемблерный код и, тем более, исполняемые файлы не позволяют с приемлемыми трудозатратами оценить взаимосвязь элементов проЛабораторияИспытаниетехнологий граммы, а также идентифицировать в программе различные алгоритмические конструкции, в то время как наличие восстановленной программы на языке высокого уровня дает возможность преодолеть указанные выше трудности. <...> В качестве одного из средств для повышения уровня абстракции представления программы может использоваться декомпиляция. <...> Декомпиляция — это процесс автоматического восстановления программы на языке высокого уровня из программы на языке низкого уровня. <...> Под декомпилятором мы будем понимать инструментальное средство, получающее на вход программу на языке ассемблера или другое аналогичное низкоуровневое представление и выдающее на выход эквивалентную ей программу на некотором языке высокого уровня. <...> Поэтому декомпиляторы с этих языков имеют наиболь99 ПРИКЛАДНАЯ ИНФОРМАТИКА ¹ 6(24) 2009 шую практическую значимость. <...> Поскольку при обратной инженерии в целом и при декомпиляции в частности уровень абстракции представления программы повышается, можно считать, что программы на языке C являются промежуточным уровнем при переходе от программы на языке ассемблера к программе на языке C++ . <...> Дальше повысить уровень абстракции представления программы можно посредством широко известных методов <...>