]> git.siccegge.de Git - talk/frida.git/blob - vortrag.tex
Moar stuff
[talk/frida.git] / vortrag.tex
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %% This Beamer template was created by Cameron Bracken.
3 %% Anyone can freely use or modify it for any purpose
4 %% without attribution.
5 %%
6 %% Last Modified: January 9, 2009
7 %%
8 %%% Modified by Maximilian Krüger
9 %%%
10 %%% April 17, 2014
11 %%%
12 %%%% Modified by Christoph Egger
13 %%%%
14 %%%% September 2015
15 %%%%
16
17 \documentclass[12pt]{beamer}
18
19 \usepackage{BeamerColor}
20 \usepackage{textcomp}
21 %% Beamer Layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22 \useoutertheme[subsection=false,shadow]{miniframes}
23 \setbeamertemplate{footline}[frame number]
24 \useinnertheme{default}
25 \usepackage{fontspec}
26 \setmainfont{Droid Sans}
27 \setsansfont{Droid Sans}
28 \setmonofont{Source Code Pro Regular}
29
30 \setbeamerfont{title like}{shape=\scshape}
31 \setbeamerfont{frametitle}{shape=\scshape}
32 \beamertemplatenavigationsymbolsempty
33 %\setbeamertemplate{mini frames}{}
34 \setbeamercolor*{lower separation line head}{bg=DeepSkyBlue4}
35 \setbeamercolor*{normal text}{fg=black,bg=white}
36 \setbeamercolor*{alerted text}{fg=red}
37 \setbeamercolor*{example text}{fg=black}
38 \setbeamercolor*{structure}{fg=black}
39 \setbeamercolor*{frametitle}{fg=DeepSkyBlue4}
40 \setbeamercolor*{title}{fg=DeepSkyBlue4}
41
42 \setbeamercolor*{palette tertiary}{fg=white,bg=black!80}
43 \setbeamercolor*{palette quaternary}{fg=white,bg=black!80}
44
45 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46
47 \usepackage{tikz}
48
49 %\usepackage{minted}
50 %\usemintedstyle{trac}
51 %\usemintedstyle{monokai}
52 \setbeamerfont{frametitle}{size=\huge}
53 \setcounter{tocdepth}{2}
54 \usepackage{booktabs}
55 \usepackage{multirow}
56 %use biblatex instead of bibtex
57 \usepackage[backend=bibtex, style=numeric, sorting=none]{biblatex}
58 \addbibresource{vortrag.bib}
59 \setbeamertemplate{bibliography item}{}
60 \setbeamertemplate{caption}{\tiny\insertcaption}
61
62 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
63
64 \begin{document}
65 %\renewcommand{\inserttotalframenumber}{\pageref{lastslide}}
66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68 \begin{frame}[plain]
69 \title{FrIDa}
70 \subtitle{A Free and Interactive Disassembler}
71 \author{
72 Christoph Egger\\
73 {\it Lehrstuhl~Informatik~1~\textendash~FAU}\\
74 }
75 \date{
76 \begin{tabular}[ht]{lcr}
77 \parbox{3.0cm}{
78 \centering
79 \includegraphics[width=2.5cm]{images/fau-logo.png}
80 } &
81 \parbox{3.0cm}{
82 \centering
83
84 } &
85 \parbox{3.0cm}{
86 \centering
87 \includegraphics[width=2.5cm]{images/i1-logo.png}
88 }
89 \end{tabular}
90 \\
91 \vspace{0.1cm}
92 2015~\textendash~10~\textendash~09
93 }
94 \titlepage
95 \end{frame}
96
97 \AtBeginSection[]
98 {
99 \begin{frame}
100 \frametitle{Table of Contents}
101 \tableofcontents[currentsection]
102 \end{frame}
103 }
104
105 \begin{frame}
106 \centering
107 \includegraphics[width=.7\textwidth]{images/frida}
108 \end{frame}
109
110 \begin{frame}{FrIDa}
111 \begin{columns}[T]
112 \begin{column}[T]{5em}
113 \includegraphics[width=\textwidth]{images/GPLv3}
114 \end{column}
115 \begin{column}{23em}
116 \url{https://www.frida.xyz}\\
117 \url{https://doc.frida.xyz}\\
118 \url{https://projects.faui2k9.de/tag/frida/}
119 \end{column}
120 \end{columns}
121 \bigskip
122 \begin{tabular}[ht]{lcr}
123 \parbox{3.0cm}{
124 \centering
125 \includegraphics[width=3.0cm]{images/LLVM}
126 } &
127 \parbox{4.0cm}{
128 \centering
129 \includegraphics[width=3.5cm]{images/guile}
130 } &
131 \parbox{3.0cm}{
132 \centering
133 \includegraphics[width=2.5cm]{images/Qt}
134 }
135 \end{tabular}
136 \end{frame}
137
138 \begin{frame}{Overview}
139 \tableofcontents{}
140 \end{frame}
141
142 \section{Current State}
143 \subsection{Disassembler Core}
144 \begin{frame}{Disassembler Core}
145 \begin{itemize}
146 \item Recursive Disassembler
147 \item MachO / PE / ELF handling
148 \item Whatever ISA LLVM supports, frida supports (x86, arm, POWER,
149 mips, \dots{})
150 \item Use Symbols when available, still find \texttt{\_start} if not
151 \item Assembly dialect suckless\texttrademark{} configurable
152 \end{itemize}
153 \end{frame}
154
155 \subsection{GUI}
156 \begin{frame}{GUI}
157 \begin{itemize}
158 \item Classical Control-Flow Diagram
159 \item Hyperlinked references
160 \item Automagic Layout
161 \item Grouping for functions
162 \end{itemize}
163 \end{frame}
164
165 \subsection{Scripting}
166 \begin{frame}{Scripting}
167 \begin{itemize}
168 \item Plugin Interface, Plug your own!
169 \item GUILE bindings with access to the core datastructures
170 \begin{itemize}
171 \item Full geiser support (Connect your editor to frida when
172 writing scripts)!
173 \item Missing: wrapper for nicer interface
174 \end{itemize}
175 \item iPython currently explored
176 \begin{itemize}
177 \item Qt IPython Widget
178 \item Alternative socket connection
179 \end{itemize}
180 \end{itemize}
181 \end{frame}
182
183 \section{Design Overview}
184 \subsection{Serialization}
185 \begin{frame}{Serialization}
186 \begin{itemize}
187 \item Storing \emph{Facts} (and later \emph{Patches}) for the Binary
188 \item ZIP archive with base state and linear sequence of
189 transactions
190 \begin{itemize}
191 \item Each transaction with enough information to reverse-apply it
192 \item Transactions can not only be written to disk but also
193 e.\,g. sent over the network to remote viewers
194 \end{itemize}
195 \end{itemize}
196 \end{frame}
197
198 \subsection{QSignals}
199 \begin{frame}{QSignals}
200 \begin{itemize}
201 \item Only option really for the GUI part
202 \item Properly handles passing messages between
203 (Q)Threads. Disassembler already runs asyncron to the GUI and the
204 interpreter
205 \end{itemize}
206 \end{frame}
207
208 \subsection{Scripting}
209 \begin{frame}{Scripting}
210 \begin{itemize}
211 \item Keep complex logic out of the core as far as possible
212 \begin{itemize}
213 \item finding probably functions in the text section
214 \item Detecting structure of \texttt{libgcc\_s} \texttt{\_start}
215 \end{itemize}
216 \end{itemize}
217 \end{frame}
218
219 \section{Vision}
220 \begin{frame}{Vision}
221 \begin{itemize}
222 \item LLDB
223 \item clang-based indexing of \texttt{/usr/include}
224 \item Calculation of Path-Conditions
225 \item XMPP PubSub based Multiplayer mode
226 \end{itemize}
227 \end{frame}
228
229 \begin{frame}{Name Wanted}
230 \begin{block}{}
231 Mit der AS/400-Standardsoftware Frida 4.0 \dots
232 \end{block}
233 \begin{block}{}
234 Frida Software: FRamework for Image Dataset Analysis
235 \end{block}
236 \begin{block}{}
237 Frida: Inject JavaScript to explore native apps on Windows, Mac, Linux, iOS and Android
238 \end{block}
239 \end{frame}
240
241 \begin{frame}{Questions?}
242 \vspace*{\fill}
243 \begin{center}
244 \includegraphics[width=7cm]{images/42.pdf}
245 \end{center}
246 \vspace*{\fill}
247
248 Download: https://static.siccegge.de/talks/frida-FAU-2015-10-09.pdf\\
249 https://git.siccegge.de/?p=talk/frida.git
250 \end{frame}
251 \end{document}