Научная статья на тему 'Метод идентификации соглашений о вызове функций в бинарных приложениях'

Метод идентификации соглашений о вызове функций в бинарных приложениях Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
86
17
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СТАТИЧЕСКИЙ АНАЛИЗ / БИНАРНЫЕ ПРИЛОЖЕНИЯ / СОГЛАШЕНИЕ О ВЫЗОВЕ / STATIC ANALYSIS / CALLING CONVENTION / BINARY APPLICATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Станчин Максим Андреевич, Сороковиков Никита Викторович

Предлагается метод определения соглашений о вызове функций в бинарных приложениях.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Станчин Максим Андреевич, Сороковиков Никита Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Identification method for function calling conventions in binary applications

A method for identification of calling conventions for functions in binary applications is proposed. The essence of the method is to determine indications that the calling convention under analysis seems to be specific to a certain type. If there are indications for many different types of calling conventions, then the majority rule is used to determine one of them. In the case of absence of any indications for known calling conventions, it is considered that the calling convention for this function is "user call".

Текст научной работы на тему «Метод идентификации соглашений о вызове функций в бинарных приложениях»

122

Прикладная дискретная математика. Приложение

вектора. На этапе обучения на вход данная нейронная сеть принимает вектор признаков и число — номер класса, к которому относится вектор.

На этапе классификации LSTM-сеть принимает вектор признаков нового запроса, а на выходе выдаёт два числа — номер класса, на который наиболее похож запрос, и число от 0 до 1 как вероятность того, что данный запрос принадлежит к этому классу.

В результате работы метод был реализован и подготовлены тестовые данные. В дальнейшем планируется провести серию экспериментов для оценки точности работы метода.

ЛИТЕРАТУРА

1. OWASP Top 10 Application Security Risks — 2017. https://www.owasp.org/index.php/Top_ 10_2017-Top_10

2. Haifond W. G. J., ViegasJ., and Orso A. A classification of SQL injection attacks and countermeasures // Proc. ISSSE 2006, Washington, USA, Mar. 2006. https://pdfs. semanticscholar.org/81a5/02b52485e52713ccab6d260f15871c2acdcb.pdf

3. Rawat R. and Shrivastav S. K. SQL injection attack detection using SVM // Intern. J. Comput. Appl. 2012. V. 42. No. 13. P. 1-4.

4. Buehrer G. T., Weide B. W, and Siviiotti P. A. G. Using parse tree validation to prevent SQL injection attacks // Proc. SEM'05. N.Y.: ACM, 2005. P. 106-113.

5. Cheng Y. Mean shift, mode seeking, and clustering // IEEE Trans. Pattern Analysis Machine Intelligence. 1995. V. 17. Iss.8. P. 790-799.

6. Schmidhuber J. and Hochreiter S. Long short-term memory // Neural Computation. 1997. No. 9. P. 1735-1780.

УДК 004.94 DOI 10.17223/2226308X/10/47

МЕТОД ИДЕНТИФИКАЦИИ СОГЛАШЕНИЙ О ВЫЗОВЕ ФУНКЦИЙ

В БИНАРНЫХ ПРИЛОЖЕНИЯХ

М. А. Станчин, Н. В. Сороковиков

Предлагается метод определения соглашений о вызове функций в бинарных приложениях.

Ключевые слова: статический анализ, бинарные приложения, соглашение о вызове.

При статическом анализе бинарных приложений возникает задача определения соглашений о вызовах функций. Соглашением о вызове (calling convention) называется способ передачи параметров (аргументов) подпрограммам [1]. В известных средствах анализа бинарных приложений (например, Radare2, Angr, IDA Pro) эта задача решается с использованием встроенных инструментов, что, как правило, не позволяет использовать их в собственных разрабатываемых средствах анализа. В данной работе предлагается собственный метод анализа соглашений о вызове функций.

Для определения соглашения о вызове необходимо определить следующие параметры:

1) наличие регистров для передачи параметров в функции;

2) используемые регистры для передачи параметров в функции;

3) используемые области памяти;

4) мнемоника инструкции возврата.

Математические основы компьютерной безопасности

123

Например, соглашение о вызове cdecl использует следующие параметры: для передачи аргументов в функции используются области памяти с отрицательным смещением вместо регистров, а мнемоника инструкции возврата — retn.

Метод определения соглашения о вызове функции

Пусть имеется набор физических и виртуальных адресов функций, соглашения о вызовах которых нужно определить.

1) Строится граф потока управления исследуемой функции для определения её конца и возможных условий выхода из нее.

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

3) Проверяется наличие пролога функции и выясняется адресация относительно отрицательных смещений в стеке.

4) Проверяется наличие аргументов у инструкции возврата (мнемоника «ret/retn»).

5) По завершении всех проверок на основе полученных данных выдаётся определённый тип соглашения о вызове исследуемой функции, а в случае неспособности определить тип соглашения достоверно (например, если присутствуют несколько признаков различных соглашений о вызове) применяется мажоритарный принцип, основанный на статистике использования того или иного соглашения о вызове.

6) В случае отсутствия каких-либо признаков известных соглашений о вызове считается, что тип соглашения функции равен «user call».

На данный момент определяются следующие соглашения о вызове: cdecl_x86, cdecl_x86_64, fastcall_x86, fastcall_x86_64, stdcall_x86, stdcall_x86_64. Программная реализация метода доступна в сети Github [2].

ЛИТЕРАТУРА

1. Agner F. Calling Conventions for Different C++ Compilers and Operating Systems. 2017.

http://www.agner.org/optimize/calling_conventions.pdf

2. CCPTool. https://github.com/ACIDYWE/CCPTool

i Надоели баннеры? Вы всегда можете отключить рекламу.