\hypertarget{classtheo_1_1obf_1_1jcc__rewrite__pass__t}{}\doxysection{theo\+::obf\+::jcc\+\_\+rewrite\+\_\+pass\+\_\+t Class Reference} \label{classtheo_1_1obf_1_1jcc__rewrite__pass__t}\index{theo::obf::jcc\_rewrite\_pass\_t@{theo::obf::jcc\_rewrite\_pass\_t}} jcc rewrite pass which rewrites rip relative jcc\textquotesingle{}s so that they are position independent. {\ttfamily \#include $<$jcc\+\_\+rewrite\+\_\+pass.\+hpp$>$} Inheritance diagram for theo\+::obf\+::jcc\+\_\+rewrite\+\_\+pass\+\_\+t\+: % FIG 0 Collaboration diagram for theo\+::obf\+::jcc\+\_\+rewrite\+\_\+pass\+\_\+t\+: % FIG 1 \doxysubsection*{Public Member Functions} \begin{DoxyCompactItemize} \item void \mbox{\hyperlink{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a5a93eb0945025ef3caefed8c63b65b23}{run}} (\mbox{\hyperlink{classtheo_1_1decomp_1_1symbol__t}{decomp\+::symbol\+\_\+t}} $\ast$sym) \begin{DoxyCompactList}\small\item\em virtual method which must be implimented by the pass that inherits this class. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection*{Static Public Member Functions} \begin{DoxyCompactItemize} \item static \mbox{\hyperlink{classtheo_1_1obf_1_1jcc__rewrite__pass__t}{jcc\+\_\+rewrite\+\_\+pass\+\_\+t}} $\ast$ \mbox{\hyperlink{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a1b119e0ee8c6b11d677169d7974e55b7}{get}} () \end{DoxyCompactItemize} \doxysubsection{Detailed Description} jcc rewrite pass which rewrites rip relative jcc\textquotesingle{}s so that they are position independent. given the following code\+: \begin{DoxyVerb}jnz label1 ; other code goes here \end{DoxyVerb} label1\+: ; more code here the jnz instruction will be rewritten so that the following code is generated\+: \begin{DoxyVerb}jnz br2 \end{DoxyVerb} br1\+: jmp \mbox{[}rip\mbox{]} ; address after this instruction contains the address ; of the instruction after the jcc. br2\+: jmp \mbox{[}rip\mbox{]} ; address after this instruction contains the address of where ; branch 2 is located. its important to note that other passes will encrypt (transform) the address of the next instruction. There is actually no jmp \mbox{[}rip\mbox{]} either, push/ret is used. Definition at line 61 of file jcc\+\_\+rewrite\+\_\+pass.\+hpp. \doxysubsection{Member Function Documentation} \mbox{\Hypertarget{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a1b119e0ee8c6b11d677169d7974e55b7}\label{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a1b119e0ee8c6b11d677169d7974e55b7}} \index{theo::obf::jcc\_rewrite\_pass\_t@{theo::obf::jcc\_rewrite\_pass\_t}!get@{get}} \index{get@{get}!theo::obf::jcc\_rewrite\_pass\_t@{theo::obf::jcc\_rewrite\_pass\_t}} \doxysubsubsection{\texorpdfstring{get()}{get()}} {\footnotesize\ttfamily static \mbox{\hyperlink{classtheo_1_1obf_1_1jcc__rewrite__pass__t}{jcc\+\_\+rewrite\+\_\+pass\+\_\+t}}$\ast$ theo\+::obf\+::jcc\+\_\+rewrite\+\_\+pass\+\_\+t\+::get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} \mbox{\Hypertarget{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a5a93eb0945025ef3caefed8c63b65b23}\label{classtheo_1_1obf_1_1jcc__rewrite__pass__t_a5a93eb0945025ef3caefed8c63b65b23}} \index{theo::obf::jcc\_rewrite\_pass\_t@{theo::obf::jcc\_rewrite\_pass\_t}!run@{run}} \index{run@{run}!theo::obf::jcc\_rewrite\_pass\_t@{theo::obf::jcc\_rewrite\_pass\_t}} \doxysubsubsection{\texorpdfstring{run()}{run()}} {\footnotesize\ttfamily void theo\+::obf\+::jcc\+\_\+rewrite\+\_\+pass\+\_\+t\+::run (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtheo_1_1decomp_1_1symbol__t}{decomp\+::symbol\+\_\+t}} $\ast$}]{sym }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} virtual method which must be implimented by the pass that inherits this class. \begin{DoxyParams}{Parameters} {\em sym} & a symbol of the same type of m\+\_\+sym\+\_\+type.\\ \hline \end{DoxyParams} Implements \mbox{\hyperlink{classtheo_1_1obf_1_1pass__t_acfadc013ff0754d66a18baffdb1a61d1}{theo\+::obf\+::pass\+\_\+t}}. The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} \item include/obf/passes/\mbox{\hyperlink{jcc__rewrite__pass_8hpp}{jcc\+\_\+rewrite\+\_\+pass.\+hpp}}\end{DoxyCompactItemize}