Using ANTLR In Cybersecurity
Stuart Maclean
Applied Physics Laboratory University of Washington stuart@apl.uw.edu
Seattle Java User Group, June 2017
Maclean (APL/UW) ANTLR Seajug June 2017 1 / 52
Using ANTLR In Cybersecurity Stuart Maclean Applied Physics - - PowerPoint PPT Presentation
Using ANTLR In Cybersecurity Stuart Maclean Applied Physics Laboratory University of Washington stuart@apl.uw.edu Seattle Java User Group, June 2017 Maclean (APL/UW) ANTLR Seajug June 2017 1 / 52 Outline Motivation 1 ANTLR: Another Tool
Maclean (APL/UW) ANTLR Seajug June 2017 1 / 52
Maclean (APL/UW) ANTLR Seajug June 2017 2 / 52
Motivation
Maclean (APL/UW) ANTLR Seajug June 2017 3 / 52
Motivation
Maclean (APL/UW) ANTLR Seajug June 2017 4 / 52
ANTLR: Another Tool for Language Recognition
Maclean (APL/UW) ANTLR Seajug June 2017 5 / 52
ANTLR: Another Tool for Language Recognition
Maclean (APL/UW) ANTLR Seajug June 2017 6 / 52
ANTLR: Another Tool for Language Recognition
Maclean (APL/UW) ANTLR Seajug June 2017 7 / 52
ANTLR: Another Tool for Language Recognition
Maclean (APL/UW) ANTLR Seajug June 2017 8 / 52
Building With ANTLR
Maclean (APL/UW) ANTLR Seajug June 2017 9 / 52
ANTLR And Maven
Maclean (APL/UW) ANTLR Seajug June 2017 10 / 52
ANTLR And Maven
Maclean (APL/UW) ANTLR Seajug June 2017 11 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 12 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 13 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 14 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 15 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 16 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 17 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 18 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 19 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 19 / 52
A Toy Expression Language
Maclean (APL/UW) ANTLR Seajug June 2017 19 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 20 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 21 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 22 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 23 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 24 / 52
Evaluating A Program With Embedded Actions
Maclean (APL/UW) ANTLR Seajug June 2017 25 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 26 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 27 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 27 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 27 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 28 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 28 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 28 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 28 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 29 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 30 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Representing Programs As Trees
Maclean (APL/UW) ANTLR Seajug June 2017 31 / 52
Tree Visualizations
Maclean (APL/UW) ANTLR Seajug June 2017 32 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 33 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 34 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 35 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 36 / 52
ANTLR Runtime API, Tree Manipulations
Maclean (APL/UW) ANTLR Seajug June 2017 37 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 38 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 39 / 52
Manipulating C Code Using ANTLR Trees
Maclean (APL/UW) ANTLR Seajug June 2017 40 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 41 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 42 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 43 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 44 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 45 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 46 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 47 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 48 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 49 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 50 / 52
Automating Code Generation For Program Analysis Via API Hooking
Maclean (APL/UW) ANTLR Seajug June 2017 51 / 52
Conclusion
Maclean (APL/UW) ANTLR Seajug June 2017 52 / 52