Деобфускация Control Flow Flattening средствами символьного исполнения
Метод обфускации Control Flow Flattening заменяет в коде программы все условные и безусловные переходы на переход в специальный управляющий блок - диспетчер, который определяет, куда на самом деле будет передано управление в программе. Это делает невозможным исследователю быстро определить, в какой последовательности исполняется код в программе. Предлагается алгоритм восстановления исходной логики программ, обфусцированных этим методом. В основе алгоритма лежит символьное исполнение.
Control flow flattening deobfuscation using symbolic execution.pdf Введение Control Flow Flattening [1] -техника обфускации, с помощью которой скрываются ветвления в коде. Вместо последовательного выполнения базовых блоков (линейных участков кода) каждому из них присваивается определённый номер. Вместо прямого перехода на следующий блок номер этого блока записывается в управляющий регистр, затем делается переход в специальный управляющий блок - диспетчер, который, исходя из номера блока, делает на него переход (рис. 1). В коде на языке Си это выглядит как switch внутри цикла while (рис. 2). Рис. 1. Граф потока исполнения обфусцированной функции ; Attributes: bp-based fraae sub_B96C var_10= var_sfl= 9 ; unwind ( STP X20, X19. (SPre-0fl9*var 19]! 5TP Э42.9, X38, (SPt80K19*var_S0) ADD X29, SP, ff0»16 NOV W19, 80«6A06 4OVK W19, S6*F,L5L*ie ADRP хзе, Sjpt.B-JCBpPAGE ADD Wft, И19, Al ADD JC20, X29, Pjpt B9C#eP*GE0FF В def_B9C« . juwptable 009
Ключевые слова
реверс-инжиниринг,
символьное исполнение,
обфускация,
control flow flatteningАвторы
Лебедев Владимир Витальевич | Национальный исследовательский Томский государственный университет | студент | d3fl4t3@gmail.com |
Всего: 1
Ссылки
Shoshitaishvili Y., Wang R., Salls C., etal. SOK: (State of) The art ofwar: Offensive techniques in binary analysis // IEEE Symp. Security Privacy. 2016. P. 138-157.
Kan Z., Wang H., Wu L., et al. Automated Deobfuscation of Android Native Binary Code. 2020. https://arxiv.org/pdf/1907.06828.pdf.
Peter Garba, Matteo Favaro SATURN - software deobfuscation framework based on LLVM // 3rd Intern. Workshop Software Protection, Nov 2019, London. https://arxiv.org/abs/1909. 01752.
Wang C., Hill J., Knight J., and Davidson J. Software Tamper Resistance: Obstructing Static Analysis of Programs. Technical Report. University of Virginia, USA, 2000.
Boyer R. S., Elspas B., and Levitt K. N. SELECT - a formal system for testing and debugging programs by symbolic execution // Proc. Intern. Conf. Reliable Software. Los Angeles, California: Association for Computing Machinery, 1975. P. 234-245.