updated doxygen, added demo

master
_xeroxz 2 years ago
parent 414eb0ef10
commit a26be3fd80

@ -39,14 +39,14 @@ endif()
add_subdirectory(dependencies)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# tests
# examples
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/tests")
set(CMAKE_FOLDER "${CMAKE_FOLDER}/examples")
else()
set(CMAKE_FOLDER tests)
set(CMAKE_FOLDER examples)
endif()
add_subdirectory(tests)
add_subdirectory(examples)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target Theodosius

@ -866,7 +866,9 @@ WARN_LOGFILE =
INPUT = include \
src \
README.md
README.md \
examples/demo/ \
"examples/demo/Demo Example Using Theo.md"
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@ -1063,7 +1065,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE = E:\Theodosius\README.md
USE_MDFILE_AS_MAINPAGE = README.md
#---------------------------------------------------------------------------
# Configuration options related to source browsing
@ -1082,7 +1084,7 @@ SOURCE_BROWSER = YES
# classes and enums directly into the documentation.
# The default value is: NO.
INLINE_SOURCES = NO
INLINE_SOURCES = YES
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and

@ -2,7 +2,7 @@
name = "Theodosius"
[subdir.dependencies]
[subdir.tests]
[subdir.examples]
[target.Theodosius]
type = "static"

@ -1,114 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/add_op.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="dir_fa1ee7704f0ab8e5fd961a68bf21be50.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">add_op.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for add_op.hpp:</div>
<div class="dyncontent">
<div class="center"><img src="add__op_8hpp__incl.png" border="0" usemap="#ainclude_2obf_2transform_2add__op_8hpp" alt=""/></div>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="add__op_8hpp__dep__incl.png" border="0" usemap="#ainclude_2obf_2transform_2add__op_8hppdep" alt=""/></div>
</div>
</div>
<p><a href="add__op_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">theo::obf::transform::add_op_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:namespacetheo"><td class="mdescLeft">&#160;</td><td class="mdescRight">The outer most encompassing namespace of this project. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:namespacetheo_1_1obf"><td class="mdescLeft">&#160;</td><td class="mdescRight">this is the main namespace for obfuscation related things. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:namespacetheo_1_1obf_1_1transform"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses the code for transforming relocations. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,47 +0,0 @@
digraph "include/obf/transform/add_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="include/obf/transform\l/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$transform_8hpp.html",tooltip=" "];
Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="include/obf/passes\l/reloc_transform_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$reloc__transform__pass_8hpp.html",tooltip=" "];
Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="include/theo.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$theo_8hpp.html",tooltip=" "];
Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="include/obf/transform\l/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$gen_8hpp.html",tooltip=" "];
Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="include/obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$pass_8hpp.html",tooltip=" "];
Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="include/obf/engine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$engine_8hpp.html",tooltip=" "];
Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="include/recomp/recomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$recomp_8hpp.html",tooltip=" "];
Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="include/obf/passes\l/jcc_rewrite_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$jcc__rewrite__pass_8hpp.html",tooltip=" "];
Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="include/obf/passes\l/next_inst_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$next__inst__pass_8hpp.html",tooltip=" "];
Node10 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="include/recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$reloc_8hpp.html",tooltip=" "];
Node11 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="include/decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$symbol_8hpp.html",tooltip=" "];
Node12 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="include/decomp/routine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$routine_8hpp.html",tooltip=" "];
Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="include/decomp/decomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$decomp_8hpp.html",tooltip=" "];
Node14 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="include/recomp/symbol\l_table.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$symbol__table_8hpp.html",tooltip=" "];
Node15 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,25 +0,0 @@
digraph "include/obf/transform/add_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$operation_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
}

@ -1,133 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/add_op.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="dir_fa1ee7704f0ab8e5fd961a68bf21be50.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">add_op.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="add__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="operation_8hpp.html">obf/transform/operation.hpp</a>&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespacetheo_1_1obf_1_1transform.html"> 34</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a> {</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> : <span class="keyword">public</span> <a class="code" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a> {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>()</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; : <a class="code" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val + imm; },</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; XED_ICLASS_ADD) {}</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb"> 42</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>* <a class="code" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">get</a>() {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">static</span> <a class="code" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> obj;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;} <span class="comment">// namespace theo::obf::transform</span></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1add__op__t_html"><div class="ttname"><a href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">theo::obf::transform::add_op_t</a></div><div class="ttdef"><b>Definition:</b> <a href="add__op_8hpp_source.html#l00035">add_op.hpp:35</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1add__op__t_html_a6edc3dd58a94709b395cd928edc47fbb"><div class="ttname"><a href="classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">theo::obf::transform::add_op_t::get</a></div><div class="ttdeci">static add_op_t * get()</div><div class="ttdef"><b>Definition:</b> <a href="add__op_8hpp_source.html#l00042">add_op.hpp:42</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html"><div class="ttname"><a href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></div><div class="ttdoc">operation_t is the base class for all types of transformations. classes that inherit this class are s...</div><div class="ttdef"><b>Definition:</b> <a href="operation_8hpp_source.html#l00061">operation.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html_a3876ca1c7904aed54940e1519fc9fdf4"><div class="ttname"><a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">theo::obf::transform::operation_t::operation_t</a></div><div class="ttdeci">operation_t(transform_t op, xed_iclass_enum_t type)</div><div class="ttdoc">explicit constructor for operation_t</div><div class="ttdef"><b>Definition:</b> <a href="operation_8hpp_source.html#l00069">operation.hpp:69</a></div></div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html"><div class="ttname"><a href="namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></div><div class="ttdoc">this namespace encompasses the code for transforming relocations.</div><div class="ttdef"><b>Definition:</b> <a href="add__op_8hpp_source.html#l00034">add_op.hpp:34</a></div></div>
<div class="ttc" id="aoperation_8hpp_html"><div class="ttname"><a href="operation_8hpp.html">operation.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -87,11 +87,12 @@ $(function() {
<tr id="row_0_1_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" target="_self">jcc_rewrite_pass_t</a></td><td class="desc">jcc rewrite pass which rewrites rip relative jcc's so that they are position independent </td></tr>
<tr id="row_0_1_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html" target="_self">next_inst_pass_t</a></td><td class="desc">This pass is used to generate transformations and jmp code to change RIP to the next instruction </td></tr>
<tr id="row_0_1_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html" target="_self">reloc_transform_pass_t</a></td><td class="desc">this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead of the address of the next instruction. this pass only runs at the instruction level and appends transformations into the reloc_t object of the instruction symbol </td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="da/dbd/namespacetheo_1_1recomp.html" target="_self">recomp</a></td><td class="desc">this namespace encompasses all recomposition related code </td></tr>
<tr id="row_0_2_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d05/classtheo_1_1recomp_1_1recomp__t.html" target="_self">recomp_t</a></td><td class="desc">the main class responsible for recomposition </td></tr>
<tr id="row_0_2_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d37/classtheo_1_1recomp_1_1reloc__t.html" target="_self">reloc_t</a></td><td class="desc">meta data about a relocation for a symbol </td></tr>
<tr id="row_0_2_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" target="_self">symbol_table_t</a></td><td class="desc">this class is a high level wrapper for a hashmap that contains <a class="el" href="d9/dd5/classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">decomp::symbol_t</a> values. the symbol values are references by a hashcode </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/dbc/classtheo_1_1theo__t.html" target="_self">theo_t</a></td><td class="desc">the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge that connects all three: decomp, obf, recomp </td></tr>
<tr id="row_0_1_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html" target="_self">hello_world_pass_t</a></td><td class="desc">hello world pass example of how to inherit <a class="el" href="d4/dad/classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="da/dbd/namespacetheo_1_1recomp.html" target="_self">recomp</a></td><td class="desc">this namespace encompasses all recomposition related code </td></tr>
<tr id="row_0_2_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d05/classtheo_1_1recomp_1_1recomp__t.html" target="_self">recomp_t</a></td><td class="desc">the main class responsible for recomposition </td></tr>
<tr id="row_0_2_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d37/classtheo_1_1recomp_1_1reloc__t.html" target="_self">reloc_t</a></td><td class="desc">meta data about a relocation for a symbol </td></tr>
<tr id="row_0_2_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" target="_self">symbol_table_t</a></td><td class="desc">this class is a high level wrapper for a hashmap that contains <a class="el" href="d9/dd5/classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">decomp::symbol_t</a> values. the symbol values are references by a hashcode </td></tr>
<tr id="row_0_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/dbc/classtheo_1_1theo__t.html" target="_self">theo_t</a></td><td class="desc">the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge that connects all three: decomp, obf, recomp </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

@ -67,7 +67,7 @@ $(function() {
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_J">J</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_X">X</a></div>
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_J">J</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_X">X</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a name="letter_A">A</a></dt>
@ -79,27 +79,30 @@ $(function() {
<dt class="alphachar"><a name="letter_E">E</a></dt>
<dd><a class="el" href="d9/d18/classtheo_1_1obf_1_1engine__t.html">engine_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_H">H</a></dt>
<dd><a class="el" href="d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_J">J</a></dt>
<dd><a class="el" href="d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd></dl>
<dl class="classindex even">
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_N">N</a></dt>
<dd><a class="el" href="d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd></dl>
<dl class="classindex odd">
<dl class="classindex even">
<dt class="alphachar"><a name="letter_O">O</a></dt>
<dd><a class="el" href="d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd></dl>
<dl class="classindex even">
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_P">P</a></dt>
<dd><a class="el" href="d4/dad/classtheo_1_1obf_1_1pass__t.html">pass_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd></dl>
<dl class="classindex odd">
<dl class="classindex even">
<dt class="alphachar"><a name="letter_R">R</a></dt>
<dd><a class="el" href="d5/d05/classtheo_1_1recomp_1_1recomp__t.html">recomp_t</a> (<a class="el" href="da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a>)</dd><dd><a class="el" href="dd/d37/classtheo_1_1recomp_1_1reloc__t.html">reloc_t</a> (<a class="el" href="da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a>)</dd><dd><a class="el" href="dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a> (<a class="el" href="d5/da8/namespacetheo_1_1obf.html">theo::obf</a>)</dd><dd><a class="el" href="d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd><dd><a class="el" href="db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd><dd><a class="el" href="df/db4/classtheo_1_1decomp_1_1routine__t.html">routine_t</a> (<a class="el" href="d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a>)</dd></dl>
<dl class="classindex even">
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_S">S</a></dt>
<dd><a class="el" href="d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd><dd><a class="el" href="d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">symbol_t</a> (<a class="el" href="d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a>)</dd><dd><a class="el" href="db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">symbol_table_t</a> (<a class="el" href="da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a>)</dd></dl>
<dl class="classindex odd">
<dl class="classindex even">
<dt class="alphachar"><a name="letter_T">T</a></dt>
<dd><a class="el" href="d9/dbc/classtheo_1_1theo__t.html">theo_t</a> (<a class="el" href="da/de6/namespacetheo.html">theo</a>)</dd></dl>
<dl class="classindex even">
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_X">X</a></dt>
<dd><a class="el" href="da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd></dl>
</div>

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">decomp_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::decomp_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">decomp_t</a>(std::vector&lt; std::uint8_t &gt; &amp;lib, recomp::symbol_table_t *syms)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a712b162fb8f9e5529b90dfb7fc1b9199">decompose</a>(std::string &amp;entry_sym)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a165d6c4840368e83eccb0f7a390d89aa">lib</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#afa3f22948f6e5e3b6a32b82a76226c3f">objs</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a072d489230e01f634557c5cd6a734d6a">rtns</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a47e3a85ee0121f3c3795b242aea75902">scn_hash_tbl</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a4acd873857bf96e996573c78254a1875">syms</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,294 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::decomp::decomp_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">decomp_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1decomp_1_1decomp__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::decomp::decomp_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files.
<a href="classtheo_1_1decomp_1_1decomp__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="decomp_8hpp_source.html">decomp.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a35cfac16bd918d576b29e04388690d68"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">decomp_t</a> (std::vector&lt; std::uint8_t &gt; &amp;<a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a165d6c4840368e83eccb0f7a390d89aa">lib</a>, <a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> *<a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a4acd873857bf96e996573c78254a1875">syms</a>)</td></tr>
<tr class="memdesc:a35cfac16bd918d576b29e04388690d68"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor for <a class="el" href="classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp_t</a> <a href="classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">More...</a><br /></td></tr>
<tr class="separator:a35cfac16bd918d576b29e04388690d68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a072d489230e01f634557c5cd6a734d6a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1routine__t.html">routine_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a072d489230e01f634557c5cd6a734d6a">rtns</a> ()</td></tr>
<tr class="memdesc:a072d489230e01f634557c5cd6a734d6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets all of the routine objects. <a href="classtheo_1_1decomp_1_1decomp__t.html#a072d489230e01f634557c5cd6a734d6a">More...</a><br /></td></tr>
<tr class="separator:a072d489230e01f634557c5cd6a734d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a165d6c4840368e83eccb0f7a390d89aa"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a165d6c4840368e83eccb0f7a390d89aa">lib</a> ()</td></tr>
<tr class="memdesc:a165d6c4840368e83eccb0f7a390d89aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a vector of bytes consisting of the lib file. <a href="classtheo_1_1decomp_1_1decomp__t.html#a165d6c4840368e83eccb0f7a390d89aa">More...</a><br /></td></tr>
<tr class="separator:a165d6c4840368e83eccb0f7a390d89aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa3f22948f6e5e3b6a32b82a76226c3f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::vector&lt; std::uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#afa3f22948f6e5e3b6a32b82a76226c3f">objs</a> ()</td></tr>
<tr class="memdesc:afa3f22948f6e5e3b6a32b82a76226c3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets all the obj files as a vector of a vector of bytes. <a href="classtheo_1_1decomp_1_1decomp__t.html#afa3f22948f6e5e3b6a32b82a76226c3f">More...</a><br /></td></tr>
<tr class="separator:afa3f22948f6e5e3b6a32b82a76226c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4acd873857bf96e996573c78254a1875"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a4acd873857bf96e996573c78254a1875">syms</a> ()</td></tr>
<tr class="memdesc:a4acd873857bf96e996573c78254a1875"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the symbol table. <a href="classtheo_1_1decomp_1_1decomp__t.html#a4acd873857bf96e996573c78254a1875">More...</a><br /></td></tr>
<tr class="separator:a4acd873857bf96e996573c78254a1875"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47e3a85ee0121f3c3795b242aea75902"><td class="memItemLeft" align="right" valign="top">std::map&lt; coff::section_header_t *, std::size_t &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a47e3a85ee0121f3c3795b242aea75902">scn_hash_tbl</a> ()</td></tr>
<tr class="memdesc:a47e3a85ee0121f3c3795b242aea75902"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the section hash table section header --&gt; hash of the section header ptr. <a href="classtheo_1_1decomp_1_1decomp__t.html#a47e3a85ee0121f3c3795b242aea75902">More...</a><br /></td></tr>
<tr class="separator:a47e3a85ee0121f3c3795b242aea75902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a712b162fb8f9e5529b90dfb7fc1b9199"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html#a712b162fb8f9e5529b90dfb7fc1b9199">decompose</a> (std::string &amp;entry_sym)</td></tr>
<tr class="memdesc:a712b162fb8f9e5529b90dfb7fc1b9199"><td class="mdescLeft">&#160;</td><td class="mdescRight">decomposes (extracts) the symbols used. this function determines all used symbols given the entry point. <a href="classtheo_1_1decomp_1_1decomp__t.html#a712b162fb8f9e5529b90dfb7fc1b9199">More...</a><br /></td></tr>
<tr class="separator:a712b162fb8f9e5529b90dfb7fc1b9199"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files. </p>
<p class="definition">Definition at line <a class="el" href="decomp_8hpp_source.html#l00061">61</a> of file <a class="el" href="decomp_8hpp_source.html">decomp.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a35cfac16bd918d576b29e04388690d68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35cfac16bd918d576b29e04388690d68">&#9670;&nbsp;</a></span>decomp_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::decomp::decomp_t::decomp_t </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>lib</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> *&#160;</td>
<td class="paramname"><em>syms</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the explicit constructor for <a class="el" href="classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp_t</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lib</td><td>vector of bytes containing the lib file.</td></tr>
<tr><td class="paramname">syms</td><td>symbol table that gets populated and managed by this class.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a712b162fb8f9e5529b90dfb7fc1b9199"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a712b162fb8f9e5529b90dfb7fc1b9199">&#9670;&nbsp;</a></span>decompose()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::optional&lt;<a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a>*&gt; theo::decomp::decomp_t::decompose </td>
<td>(</td>
<td class="paramtype">std::string &amp;&#160;</td>
<td class="paramname"><em>entry_sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>decomposes (extracts) the symbols used. this function determines all used symbols given the entry point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entry_sym</td><td>the entry point symbol name.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns an optional pointer to the symbol table. no value in the optional object on failure.</dd></dl>
</div>
</div>
<a id="a165d6c4840368e83eccb0f7a390d89aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a165d6c4840368e83eccb0f7a390d89aa">&#9670;&nbsp;</a></span>lib()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::uint8_t&gt; theo::decomp::decomp_t::lib </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets a vector of bytes consisting of the lib file. </p>
<dl class="section return"><dt>Returns</dt><dd>a vector of bytes consisting of the lib file.</dd></dl>
</div>
</div>
<a id="afa3f22948f6e5e3b6a32b82a76226c3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa3f22948f6e5e3b6a32b82a76226c3f">&#9670;&nbsp;</a></span>objs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::vector&lt;std::uint8_t&gt; &gt; theo::decomp::decomp_t::objs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets all the obj files as a vector of a vector of bytes. </p>
<dl class="section return"><dt>Returns</dt><dd>all the obj files as a vector of a vector of bytes.</dd></dl>
</div>
</div>
<a id="a072d489230e01f634557c5cd6a734d6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a072d489230e01f634557c5cd6a734d6a">&#9670;&nbsp;</a></span>rtns()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classtheo_1_1decomp_1_1routine__t.html">routine_t</a>&gt; theo::decomp::decomp_t::rtns </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets all of the routine objects. </p>
<dl class="section return"><dt>Returns</dt><dd>vector of routine objects.</dd></dl>
</div>
</div>
<a id="a47e3a85ee0121f3c3795b242aea75902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47e3a85ee0121f3c3795b242aea75902">&#9670;&nbsp;</a></span>scn_hash_tbl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::map&lt;coff::section_header_t*, std::size_t&gt;&amp; theo::decomp::decomp_t::scn_hash_tbl </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the section hash table section header --&gt; hash of the section header ptr. </p>
<dl class="section return"><dt>Returns</dt><dd>the section hash table section header --&gt; hash of the section header ptr.</dd></dl>
</div>
</div>
<a id="a4acd873857bf96e996573c78254a1875"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4acd873857bf96e996573c78254a1875">&#9670;&nbsp;</a></span>syms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a>* theo::decomp::decomp_t::syms </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the symbol table. </p>
<dl class="section return"><dt>Returns</dt><dd>the symbol table.</dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/decomp/<a class="el" href="decomp_8hpp_source.html">decomp.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,87 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">routine_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::routine_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#ae75762b8cb7080c432edb36c3fdcafbc">data</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#a61f63c3d5c101172da9fb7657f7c16f6">decompose</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b">routine_t</a>(coff::symbol_t *sym, coff::image_t *img, coff::section_header_t *scn, std::vector&lt; std::uint8_t &gt; &amp;fn, sym_type_t dcmp_type)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#a5bb350cf3511fd82d7f0c21f50834bb0">scn</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,239 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::decomp::routine_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html">routine_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1decomp_1_1routine__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::decomp::routine_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>the routine class which is responsible for creating symbols for routines. if the routine is located inside a section with the name ".split" it will break functions into instruction symbols.
<a href="classtheo_1_1decomp_1_1routine__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="routine_8hpp_source.html">routine.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab9f0693c5ec50954d953b28bebe4426b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b">routine_t</a> (coff::symbol_t *sym, coff::image_t *img, coff::section_header_t *<a class="el" href="classtheo_1_1decomp_1_1routine__t.html#a5bb350cf3511fd82d7f0c21f50834bb0">scn</a>, std::vector&lt; std::uint8_t &gt; &amp;fn, <a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a> dcmp_type)</td></tr>
<tr class="memdesc:ab9f0693c5ec50954d953b28bebe4426b"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor for <a class="el" href="classtheo_1_1decomp_1_1routine__t.html" title="the routine class which is responsible for creating symbols for routines. if the routine is located i...">routine_t</a>. <a href="classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b">More...</a><br /></td></tr>
<tr class="separator:ab9f0693c5ec50954d953b28bebe4426b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61f63c3d5c101172da9fb7657f7c16f6"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#a61f63c3d5c101172da9fb7657f7c16f6">decompose</a> ()</td></tr>
<tr class="memdesc:a61f63c3d5c101172da9fb7657f7c16f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">decompose the function into symbol(s). <a href="classtheo_1_1decomp_1_1routine__t.html#a61f63c3d5c101172da9fb7657f7c16f6">More...</a><br /></td></tr>
<tr class="separator:a61f63c3d5c101172da9fb7657f7c16f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bb350cf3511fd82d7f0c21f50834bb0"><td class="memItemLeft" align="right" valign="top">coff::section_header_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#a5bb350cf3511fd82d7f0c21f50834bb0">scn</a> ()</td></tr>
<tr class="memdesc:a5bb350cf3511fd82d7f0c21f50834bb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the section header of the section in which the symbol is located in. <a href="classtheo_1_1decomp_1_1routine__t.html#a5bb350cf3511fd82d7f0c21f50834bb0">More...</a><br /></td></tr>
<tr class="separator:a5bb350cf3511fd82d7f0c21f50834bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae75762b8cb7080c432edb36c3fdcafbc"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1routine__t.html#ae75762b8cb7080c432edb36c3fdcafbc">data</a> ()</td></tr>
<tr class="memdesc:ae75762b8cb7080c432edb36c3fdcafbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the function bytes. <a href="classtheo_1_1decomp_1_1routine__t.html#ae75762b8cb7080c432edb36c3fdcafbc">More...</a><br /></td></tr>
<tr class="separator:ae75762b8cb7080c432edb36c3fdcafbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>the routine class which is responsible for creating symbols for routines. if the routine is located inside a section with the name ".split" it will break functions into instruction symbols. </p>
<p class="definition">Definition at line <a class="el" href="routine_8hpp_source.html#l00053">53</a> of file <a class="el" href="routine_8hpp_source.html">routine.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab9f0693c5ec50954d953b28bebe4426b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9f0693c5ec50954d953b28bebe4426b">&#9670;&nbsp;</a></span>routine_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::decomp::routine_t::routine_t </td>
<td>(</td>
<td class="paramtype">coff::symbol_t *&#160;</td>
<td class="paramname"><em>sym</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">coff::image_t *&#160;</td>
<td class="paramname"><em>img</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">coff::section_header_t *&#160;</td>
<td class="paramname"><em>scn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>fn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a>&#160;</td>
<td class="paramname"><em>dcmp_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the explicit constructor for <a class="el" href="classtheo_1_1decomp_1_1routine__t.html" title="the routine class which is responsible for creating symbols for routines. if the routine is located i...">routine_t</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>the coff symbol for the routine.</td></tr>
<tr><td class="paramname">img</td><td>the coff image which contains the symbol.</td></tr>
<tr><td class="paramname">scn</td><td>the section header of the section that contains the symbol.</td></tr>
<tr><td class="paramname">fn</td><td>the data (bytes) of the function.</td></tr>
<tr><td class="paramname">dcmp_type</td><td>the type of decomp to do. if this is sym_type_t::function then this class wont split the function up into individual instructions.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae75762b8cb7080c432edb36c3fdcafbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae75762b8cb7080c432edb36c3fdcafbc">&#9670;&nbsp;</a></span>data()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::uint8_t&gt; theo::decomp::routine_t::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the function bytes. </p>
<dl class="section return"><dt>Returns</dt><dd>the function bytes.</dd></dl>
</div>
</div>
<a id="a61f63c3d5c101172da9fb7657f7c16f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61f63c3d5c101172da9fb7657f7c16f6">&#9670;&nbsp;</a></span>decompose()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>&gt; theo::decomp::routine_t::decompose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>decompose the function into symbol(s). </p>
<dl class="section return"><dt>Returns</dt><dd>symbol(s) of the function.</dd></dl>
</div>
</div>
<a id="a5bb350cf3511fd82d7f0c21f50834bb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5bb350cf3511fd82d7f0c21f50834bb0">&#9670;&nbsp;</a></span>scn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">coff::section_header_t* theo::decomp::routine_t::scn </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the section header of the section in which the symbol is located in. </p>
<dl class="section return"><dt>Returns</dt><dd>the section header of the section in which the symbol is located in.</dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/decomp/<a class="el" href="routine_8hpp_source.html">routine.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,98 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">symbol_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::symbol_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b">allocated_at</a>(std::uintptr_t allocated_at)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a746f85f6e5e2ca3d3f668827c57f4bed">data</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">hash</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a91aacee75f75cf036c050722054133a7">hash</a>(const std::string &amp;sym)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a039830946b5f1a9babe206be4d99f59a">img</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#abe24e605dc37a5bd9e93368693d955b8">name</a>(const coff::image_t *img, coff::symbol_t *sym)</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a075308b305865bf9c67d803c5e4d447f">relocs</a>()</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a75776d2aff3d363e841047260f834a6d">scn</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">size</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">sym</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215">symbol_t</a>(coff::image_t *img, std::string name, std::uintptr_t offset, std::vector&lt; std::uint8_t &gt; data, coff::section_header_t *scn={}, coff::symbol_t *sym={}, std::vector&lt; recomp::reloc_t &gt; relocs={}, sym_type_t dcmp_type={})</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a>() const</td><td class="entry"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,569 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::decomp::symbol_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1decomp.html">decomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">symbol_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1decomp_1_1symbol__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::decomp::symbol_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">symbol_t</a> is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol. symbols can be different things, sections, functions, and even instructions (when functions are broken down).
<a href="classtheo_1_1decomp_1_1symbol__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="symbol_8hpp_source.html">symbol.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa7247dcb735176b6ed9246d035e7a215"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215">symbol_t</a> (coff::image_t *<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a039830946b5f1a9babe206be4d99f59a">img</a>, std::string <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>, std::uintptr_t <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a>, std::vector&lt; std::uint8_t &gt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a746f85f6e5e2ca3d3f668827c57f4bed">data</a>, coff::section_header_t *<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a75776d2aff3d363e841047260f834a6d">scn</a>={}, coff::symbol_t *<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">sym</a>={}, std::vector&lt; <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> &gt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a075308b305865bf9c67d803c5e4d447f">relocs</a>={}, <a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a> dcmp_type={})</td></tr>
<tr class="memdesc:aa7247dcb735176b6ed9246d035e7a215"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor of this symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215">More...</a><br /></td></tr>
<tr class="separator:aa7247dcb735176b6ed9246d035e7a215"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c6dee036291ded334aa10d89293fc2a"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a> () const</td></tr>
<tr class="memdesc:a7c6dee036291ded334aa10d89293fc2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the name of the symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">More...</a><br /></td></tr>
<tr class="separator:a7c6dee036291ded334aa10d89293fc2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79759d343ddb6a62e4149aef92e2d70b"><td class="memItemLeft" align="right" valign="top">std::uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a> () const</td></tr>
<tr class="memdesc:a79759d343ddb6a62e4149aef92e2d70b"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the offset into the section where the symbol is located. <a href="classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">More...</a><br /></td></tr>
<tr class="separator:a79759d343ddb6a62e4149aef92e2d70b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae92f3e35fba82a1d16a58ad09b39fb47"><td class="memItemLeft" align="right" valign="top">std::uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a> () const</td></tr>
<tr class="memdesc:ae92f3e35fba82a1d16a58ad09b39fb47"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the address where the symbol is allocated. <a href="classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">More...</a><br /></td></tr>
<tr class="separator:ae92f3e35fba82a1d16a58ad09b39fb47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae33f1452b01fe80f9c384241b9fe6286"><td class="memItemLeft" align="right" valign="top">std::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">size</a> () const</td></tr>
<tr class="memdesc:ae33f1452b01fe80f9c384241b9fe6286"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the size of the symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">More...</a><br /></td></tr>
<tr class="separator:ae33f1452b01fe80f9c384241b9fe6286"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75776d2aff3d363e841047260f834a6d"><td class="memItemLeft" align="right" valign="top">coff::section_header_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a75776d2aff3d363e841047260f834a6d">scn</a> () const</td></tr>
<tr class="memdesc:a75776d2aff3d363e841047260f834a6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the section header of the section in which the symbol is contained. <a href="classtheo_1_1decomp_1_1symbol__t.html#a75776d2aff3d363e841047260f834a6d">More...</a><br /></td></tr>
<tr class="separator:a75776d2aff3d363e841047260f834a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a039830946b5f1a9babe206be4d99f59a"><td class="memItemLeft" align="right" valign="top">coff::image_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a039830946b5f1a9babe206be4d99f59a">img</a> () const</td></tr>
<tr class="memdesc:a039830946b5f1a9babe206be4d99f59a"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the imagine in which the symbol is located inside of. <a href="classtheo_1_1decomp_1_1symbol__t.html#a039830946b5f1a9babe206be4d99f59a">More...</a><br /></td></tr>
<tr class="separator:a039830946b5f1a9babe206be4d99f59a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746f85f6e5e2ca3d3f668827c57f4bed"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a746f85f6e5e2ca3d3f668827c57f4bed">data</a> ()</td></tr>
<tr class="memdesc:a746f85f6e5e2ca3d3f668827c57f4bed"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a vector by reference of bytes containing the data of the symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#a746f85f6e5e2ca3d3f668827c57f4bed">More...</a><br /></td></tr>
<tr class="separator:a746f85f6e5e2ca3d3f668827c57f4bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a265bfb106d9e71587fc2e1c0ad1bc5"><td class="memItemLeft" align="right" valign="top">coff::symbol_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">sym</a> () const</td></tr>
<tr class="memdesc:a5a265bfb106d9e71587fc2e1c0ad1bc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a pointer to the coff symbol object. <a href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">More...</a><br /></td></tr>
<tr class="separator:a5a265bfb106d9e71587fc2e1c0ad1bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16587cddd37cd45d9ec6cd25c229e8d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a> () const</td></tr>
<tr class="memdesc:a16587cddd37cd45d9ec6cd25c229e8d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the type of the symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">More...</a><br /></td></tr>
<tr class="separator:a16587cddd37cd45d9ec6cd25c229e8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a075308b305865bf9c67d803c5e4d447f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a075308b305865bf9c67d803c5e4d447f">relocs</a> ()</td></tr>
<tr class="memdesc:a075308b305865bf9c67d803c5e4d447f"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a vector of relocations. <a href="classtheo_1_1decomp_1_1symbol__t.html#a075308b305865bf9c67d803c5e4d447f">More...</a><br /></td></tr>
<tr class="separator:a075308b305865bf9c67d803c5e4d447f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79bec0c7338f2c08739ea6547745cc3b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b">allocated_at</a> (std::uintptr_t allocated_at)</td></tr>
<tr class="memdesc:a79bec0c7338f2c08739ea6547745cc3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the address where the symbol is allocated at. <a href="classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b">More...</a><br /></td></tr>
<tr class="separator:a79bec0c7338f2c08739ea6547745cc3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8695d75670cc4d61d275464e9109ff06"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">hash</a> ()</td></tr>
<tr class="memdesc:a8695d75670cc4d61d275464e9109ff06"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the hash of the symbol name. <a href="classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">More...</a><br /></td></tr>
<tr class="separator:a8695d75670cc4d61d275464e9109ff06"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a91aacee75f75cf036c050722054133a7"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a91aacee75f75cf036c050722054133a7">hash</a> (const std::string &amp;<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">sym</a>)</td></tr>
<tr class="memdesc:a91aacee75f75cf036c050722054133a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a hash given the name of the symbol. <a href="classtheo_1_1decomp_1_1symbol__t.html#a91aacee75f75cf036c050722054133a7">More...</a><br /></td></tr>
<tr class="separator:a91aacee75f75cf036c050722054133a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe24e605dc37a5bd9e93368693d955b8"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#abe24e605dc37a5bd9e93368693d955b8">name</a> (const coff::image_t *<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a039830946b5f1a9babe206be4d99f59a">img</a>, coff::symbol_t *<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a5a265bfb106d9e71587fc2e1c0ad1bc5">sym</a>)</td></tr>
<tr class="memdesc:abe24e605dc37a5bd9e93368693d955b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the name of a symbol. this function will create a symbol name if the symbol is opaquely named. <a href="classtheo_1_1decomp_1_1symbol__t.html#abe24e605dc37a5bd9e93368693d955b8">More...</a><br /></td></tr>
<tr class="separator:abe24e605dc37a5bd9e93368693d955b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">symbol_t</a> is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol. symbols can be different things, sections, functions, and even instructions (when functions are broken down). </p>
<p>this class is used throughout theodosius and is a keystone of the project. ensure you understand how this class works and what it contains.</p>
<p class="definition">Definition at line <a class="el" href="symbol_8hpp_source.html#l00053">53</a> of file <a class="el" href="symbol_8hpp_source.html">symbol.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa7247dcb735176b6ed9246d035e7a215"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7247dcb735176b6ed9246d035e7a215">&#9670;&nbsp;</a></span>symbol_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::decomp::symbol_t::symbol_t </td>
<td>(</td>
<td class="paramtype">coff::image_t *&#160;</td>
<td class="paramname"><em>img</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::uintptr_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; std::uint8_t &gt;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">coff::section_header_t *&#160;</td>
<td class="paramname"><em>scn</em> = <code>{}</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">coff::symbol_t *&#160;</td>
<td class="paramname"><em>sym</em> = <code>{}</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> &gt;&#160;</td>
<td class="paramname"><em>relocs</em> = <code>{}</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a>&#160;</td>
<td class="paramname"><em>dcmp_type</em> = <code>{}</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the explicit constructor of this symbol. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">img</td><td>the image in which the symbol is located in.</td></tr>
<tr><td class="paramname">name</td><td>the name of the symbol.</td></tr>
<tr><td class="paramname">offset</td><td>offset into the section where this symbol is located.</td></tr>
<tr><td class="paramname">data</td><td>the data of the symbol. there can be no data.</td></tr>
<tr><td class="paramname">scn</td><td>the section header describing the section which contains the symbol.</td></tr>
<tr><td class="paramname">sym</td><td>the coff symbol itself.</td></tr>
<tr><td class="paramname">relocs</td><td>a vector of relocations this symbol has (if any).</td></tr>
<tr><td class="paramname">dcmp_type</td><td>the type of symbol</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae92f3e35fba82a1d16a58ad09b39fb47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae92f3e35fba82a1d16a58ad09b39fb47">&#9670;&nbsp;</a></span>allocated_at() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uintptr_t theo::decomp::symbol_t::allocated_at </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the address where the symbol is allocated. </p>
<dl class="section return"><dt>Returns</dt><dd>the address where the symbol is allocated.</dd></dl>
</div>
</div>
<a id="a79bec0c7338f2c08739ea6547745cc3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79bec0c7338f2c08739ea6547745cc3b">&#9670;&nbsp;</a></span>allocated_at() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::decomp::symbol_t::allocated_at </td>
<td>(</td>
<td class="paramtype">std::uintptr_t&#160;</td>
<td class="paramname"><em>allocated_at</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>set the address where the symbol is allocated at. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">allocated_at</td><td>where the symbol is allocated at.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a746f85f6e5e2ca3d3f668827c57f4bed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746f85f6e5e2ca3d3f668827c57f4bed">&#9670;&nbsp;</a></span>data()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::uint8_t&gt;&amp; theo::decomp::symbol_t::data </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns a vector by reference of bytes containing the data of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>a vector by reference of bytes containing the data of the symbol.</dd></dl>
</div>
</div>
<a id="a8695d75670cc4d61d275464e9109ff06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8695d75670cc4d61d275464e9109ff06">&#9670;&nbsp;</a></span>hash() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::size_t theo::decomp::symbol_t::hash </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the hash of the symbol name. </p>
<dl class="section return"><dt>Returns</dt><dd>the hash of the symbol name.</dd></dl>
</div>
</div>
<a id="a91aacee75f75cf036c050722054133a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91aacee75f75cf036c050722054133a7">&#9670;&nbsp;</a></span>hash() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::size_t theo::decomp::symbol_t::hash </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>generate a hash given the name of the symbol. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>the symbol name to create a hash from.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the symbol name hash</dd></dl>
</div>
</div>
<a id="a039830946b5f1a9babe206be4d99f59a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a039830946b5f1a9babe206be4d99f59a">&#9670;&nbsp;</a></span>img()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">coff::image_t* theo::decomp::symbol_t::img </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the imagine in which the symbol is located inside of. </p>
<dl class="section return"><dt>Returns</dt><dd>the imagine in which the symbol is located inside of.</dd></dl>
</div>
</div>
<a id="a7c6dee036291ded334aa10d89293fc2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c6dee036291ded334aa10d89293fc2a">&#9670;&nbsp;</a></span>name() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string theo::decomp::symbol_t::name </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the name of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the name of the symbol.</dd></dl>
</div>
</div>
<a id="abe24e605dc37a5bd9e93368693d955b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe24e605dc37a5bd9e93368693d955b8">&#9670;&nbsp;</a></span>name() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::string theo::decomp::symbol_t::name </td>
<td>(</td>
<td class="paramtype">const coff::image_t *&#160;</td>
<td class="paramname"><em>img</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">coff::symbol_t *&#160;</td>
<td class="paramname"><em>sym</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>get the name of a symbol. this function will create a symbol name if the symbol is opaquely named. </p>
<p>for example in c++ if you define something like this:</p>
<p>some_struct_t val = { value_one, value_two };</p>
<p>"val" will be stored in the .data section of the coff file. however the symbol name will be opaque (the name of the symbol will be ".data"). this causes issues with theo since each symbol needs its own unqiue name to generate a unique symbol name hash. for symbols like this, theo will create a name for it with the following format:</p>
<p>.data::section_index!coff_file_timestamp+offset_into_section</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">img</td><td>the coff file containing the symbol.</td></tr>
<tr><td class="paramname">sym</td><td>the coff symbol itself.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the name of the symbol, or a created one.</dd></dl>
</div>
</div>
<a id="a79759d343ddb6a62e4149aef92e2d70b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79759d343ddb6a62e4149aef92e2d70b">&#9670;&nbsp;</a></span>offset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uintptr_t theo::decomp::symbol_t::offset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the offset into the section where the symbol is located. </p>
<dl class="section return"><dt>Returns</dt><dd>the offset into the section where the symbol is located.</dd></dl>
</div>
</div>
<a id="a075308b305865bf9c67d803c5e4d447f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a075308b305865bf9c67d803c5e4d447f">&#9670;&nbsp;</a></span>relocs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a>&gt;&amp; theo::decomp::symbol_t::relocs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns a vector of relocations. </p>
<dl class="section return"><dt>Returns</dt><dd>a vector of relocations.</dd></dl>
</div>
</div>
<a id="a75776d2aff3d363e841047260f834a6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75776d2aff3d363e841047260f834a6d">&#9670;&nbsp;</a></span>scn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">coff::section_header_t* theo::decomp::symbol_t::scn </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the section header of the section in which the symbol is contained. </p>
<dl class="section return"><dt>Returns</dt><dd>the section header of the section in which the symbol is contained.</dd></dl>
</div>
</div>
<a id="ae33f1452b01fe80f9c384241b9fe6286"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae33f1452b01fe80f9c384241b9fe6286">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uint32_t theo::decomp::symbol_t::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the size of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the size of the symbol.</dd></dl>
</div>
</div>
<a id="a5a265bfb106d9e71587fc2e1c0ad1bc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a265bfb106d9e71587fc2e1c0ad1bc5">&#9670;&nbsp;</a></span>sym()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">coff::symbol_t* theo::decomp::symbol_t::sym </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>returns a pointer to the coff symbol object. </p>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the coff symbol object.</dd></dl>
</div>
</div>
<a id="a16587cddd37cd45d9ec6cd25c229e8d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16587cddd37cd45d9ec6cd25c229e8d1">&#9670;&nbsp;</a></span>type()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a> theo::decomp::symbol_t::type </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the type of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the type of the symbol.</dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/decomp/<a class="el" href="symbol_8hpp_source.html">symbol.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1engine__t.html">engine_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::engine_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1engine__t.html">theo::obf::engine_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">add_pass</a>(pass_t *pass)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html">theo::obf::engine_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a545af3868f9037dbbfefb02e03e60f8a">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html">theo::obf::engine_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1engine__t.html">theo::obf::engine_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,193 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::engine_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1engine__t.html">engine_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1engine__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::engine_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>singleton obfuscation engine class. this class is responsible for keeping track of the registered passes and the order in which to execute them.
<a href="classtheo_1_1obf_1_1engine__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="engine_8hpp_source.html">engine.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8ffc963a133653fa3a0875798d0d3426"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">add_pass</a> (<a class="el" href="classtheo_1_1obf_1_1pass__t.html">pass_t</a> *pass)</td></tr>
<tr class="memdesc:a8ffc963a133653fa3a0875798d0d3426"><td class="mdescLeft">&#160;</td><td class="mdescRight">add a pass to the engine. the order in which you call this function matters as the underlying data structure that contains the passes is a vector. <a href="classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">More...</a><br /></td></tr>
<tr class="separator:a8ffc963a133653fa3a0875798d0d3426"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7acfdbe9c229cf1f351cec610ab193d3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3">run</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)</td></tr>
<tr class="memdesc:a7acfdbe9c229cf1f351cec610ab193d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">run all the passes on the symbol. this function will only run a pass if the symbol is the same type as the pass requires. <a href="classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3">More...</a><br /></td></tr>
<tr class="separator:a7acfdbe9c229cf1f351cec610ab193d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a545af3868f9037dbbfefb02e03e60f8a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1engine__t.html">engine_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1engine__t.html#a545af3868f9037dbbfefb02e03e60f8a">get</a> ()</td></tr>
<tr class="memdesc:a545af3868f9037dbbfefb02e03e60f8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the singleton object of this class. <a href="classtheo_1_1obf_1_1engine__t.html#a545af3868f9037dbbfefb02e03e60f8a">More...</a><br /></td></tr>
<tr class="separator:a545af3868f9037dbbfefb02e03e60f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>singleton obfuscation engine class. this class is responsible for keeping track of the registered passes and the order in which to execute them. </p>
<p class="definition">Definition at line <a class="el" href="engine_8hpp_source.html#l00042">42</a> of file <a class="el" href="engine_8hpp_source.html">engine.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a8ffc963a133653fa3a0875798d0d3426"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ffc963a133653fa3a0875798d0d3426">&#9670;&nbsp;</a></span>add_pass()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::obf::engine_t::add_pass </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">pass_t</a> *&#160;</td>
<td class="paramname"><em>pass</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>add a pass to the engine. the order in which you call this function matters as the underlying data structure that contains the passes is a vector. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pass</td><td>a pointer to the pass in which to add to the engine.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a545af3868f9037dbbfefb02e03e60f8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a545af3868f9037dbbfefb02e03e60f8a">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1engine__t.html">engine_t</a>* theo::obf::engine_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>get the singleton object of this class. </p>
<dl class="section return"><dt>Returns</dt><dd>the singleton object of this class.</dd></dl>
</div>
</div>
<a id="a7acfdbe9c229cf1f351cec610ab193d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7acfdbe9c229cf1f351cec610ab193d3">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::obf::engine_t::run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>run all the passes on the symbol. this function will only run a pass if the symbol is the same type as the pass requires. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>symbol to run all passes on.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/<a class="el" href="engine_8hpp_source.html">engine.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,87 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::jcc_rewrite_pass_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">theo::obf::jcc_rewrite_pass_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a1b119e0ee8c6b11d677169d7974e55b7">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">theo::obf::jcc_rewrite_pass_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a>(decomp::sym_type_t sym_type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">theo::obf::jcc_rewrite_pass_t</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,193 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::jcc_rewrite_pass_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1jcc__rewrite__pass__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::jcc_rewrite_pass_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>jcc rewrite pass which rewrites rip relative jcc's so that they are position independent.
<a href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::jcc_rewrite_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1jcc__rewrite__pass__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1jcc__rewrite__pass__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::jcc_rewrite_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1jcc__rewrite__pass__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1jcc__rewrite__pass__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5a93eb0945025ef3caefed8c63b65b23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">run</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)</td></tr>
<tr class="memdesc:a5a93eb0945025ef3caefed8c63b65b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">More...</a><br /></td></tr>
<tr class="separator:a5a93eb0945025ef3caefed8c63b65b23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1pass__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1pass__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td></tr>
<tr class="memitem:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>)</td></tr>
<tr class="memdesc:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor of the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> base class. <a href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">More...</a><br /></td></tr>
<tr class="separator:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a> ()</td></tr>
<tr class="memdesc:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the passes symbol type. <a href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">More...</a><br /></td></tr>
<tr class="separator:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a1b119e0ee8c6b11d677169d7974e55b7"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a1b119e0ee8c6b11d677169d7974e55b7">get</a> ()</td></tr>
<tr class="separator:a1b119e0ee8c6b11d677169d7974e55b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>jcc rewrite pass which rewrites rip relative jcc's so that they are position independent. </p>
<p>given the following code: </p><pre class="fragment">jnz label1
; other code goes here
</pre><p> label1: ; more code here</p>
<p>the jnz instruction will be rewritten so that the following code is generated: </p><pre class="fragment">jnz br2
</pre><p> br1: jmp [rip] ; address after this instruction contains the address ; of the instruction after the jcc. br2: jmp [rip] ; address after this instruction contains the address of where ; branch 2 is located.</p>
<p>its important to note that other passes will encrypt (transform) the address of the next instruction. There is actually no jmp [rip] either, push/ret is used.</p>
<p class="definition">Definition at line <a class="el" href="jcc__rewrite__pass_8hpp_source.html#l00061">61</a> of file <a class="el" href="jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1b119e0ee8c6b11d677169d7974e55b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b119e0ee8c6b11d677169d7974e55b7">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a>* theo::obf::jcc_rewrite_pass_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5a93eb0945025ef3caefed8c63b65b23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a93eb0945025ef3caefed8c63b65b23">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void theo::obf::jcc_rewrite_pass_t::run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual method which must be implimented by the pass that inherits this class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>a symbol of the same type of m_sym_type.</td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/passes/<a class="el" href="jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::jcc_rewrite_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::jcc_rewrite\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="jcc rewrite pass which rewrites rip relative jcc's so that they are position independent."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::jcc_rewrite_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::jcc_rewrite\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="jcc rewrite pass which rewrites rip relative jcc's so that they are position independent."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,87 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::next_inst_pass_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">theo::obf::next_inst_pass_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html#a267f1fee5cbe3d7bc6d173af499a6f9d">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">theo::obf::next_inst_pass_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a>(decomp::sym_type_t sym_type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">theo::obf::next_inst_pass_t</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,194 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::next_inst_pass_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1next__inst__pass__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::next_inst_pass_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This pass is used to generate transformations and jmp code to change RIP to the next instruction.
<a href="classtheo_1_1obf_1_1next__inst__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::next_inst_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1next__inst__pass__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1next__inst__pass__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::next_inst_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1next__inst__pass__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1next__inst__pass__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae4cbba78b14c2b9da794386e4d92f40f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">run</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)</td></tr>
<tr class="memdesc:ae4cbba78b14c2b9da794386e4d92f40f"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">More...</a><br /></td></tr>
<tr class="separator:ae4cbba78b14c2b9da794386e4d92f40f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1pass__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1pass__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td></tr>
<tr class="memitem:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>)</td></tr>
<tr class="memdesc:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor of the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> base class. <a href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">More...</a><br /></td></tr>
<tr class="separator:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a> ()</td></tr>
<tr class="memdesc:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the passes symbol type. <a href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">More...</a><br /></td></tr>
<tr class="separator:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a267f1fee5cbe3d7bc6d173af499a6f9d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html#a267f1fee5cbe3d7bc6d173af499a6f9d">get</a> ()</td></tr>
<tr class="separator:a267f1fee5cbe3d7bc6d173af499a6f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This pass is used to generate transformations and jmp code to change RIP to the next instruction. </p>
<p>given the following code (get pml4 address from cr3):</p>
<p>get_pml4: 0: 48 c7 c0 ff 0f 00 00 mov rax,0xfff 7: 48 f7 d0 not rax a: 0f 20 da mov rdx,cr3 d: 48 21 c2 and rdx,rax 10: b1 00 mov cl,0x0 12: 48 d3 e2 shl rdx,cl 15: 48 89 d0 mov rax,rdx 18: c3 ret</p>
<p>this pass will break up each instruction so that it can be anywhere in a linear virtual address space. this pass will not work on rip relative code, however clang will not generate such code when compiled with "-mcmodel=large"</p>
<p>get_pml4@0: mov rax, 0xFFF push [next_inst_addr_enc] xor [rsp], 0x3243342 ; a random number of transformations here... ret next_inst_addr_enc: ; encrypted address of the next instruction goes here.</p>
<p>get_pml4@7: not rax push [next_inst_addr_enc] xor [rsp], 0x93983498 ; a random number of transformations here... ret next_inst_addr_enc: ; encrypted address of the next instruction goes here.</p>
<p>this process is continued for each instruction in the function. the last instruction "ret" will have no code generated for it as there is no next instruction.</p>
<p>this pass also only runs at the instruction level, theodosius internally breaks up functions inside of the ".split" section into individual instruction symbols. this process also creates a psuedo relocation which simply tells this pass that there needs to be a relocation to the next symbol. the offset for these psuedo relocations is zero.</p>
<p class="definition">Definition at line <a class="el" href="next__inst__pass_8hpp_source.html#l00085">85</a> of file <a class="el" href="next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a267f1fee5cbe3d7bc6d173af499a6f9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a267f1fee5cbe3d7bc6d173af499a6f9d">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a>* theo::obf::next_inst_pass_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae4cbba78b14c2b9da794386e4d92f40f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4cbba78b14c2b9da794386e4d92f40f">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void theo::obf::next_inst_pass_t::run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual method which must be implimented by the pass that inherits this class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>a symbol of the same type of m_sym_type.</td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/passes/<a class="el" href="next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::next_inst_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::next_inst\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="This pass is used to generate transformations and jmp code to change RIP to the next instruction."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::next_inst_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::next_inst\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="This pass is used to generate transformations and jmp code to change RIP to the next instruction."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,86 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::pass_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a>(decomp::sym_type_t sym_type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a>(decomp::symbol_t *sym)=0</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,218 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::pass_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1pass__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::pass_t Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> class is a base clase for all passes made. you must override the <a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1" title="virtual method which must be implimented by the pass that inherits this class.">pass_t::run</a> virtual function and declare the logic of your pass there.
<a href="classtheo_1_1obf_1_1pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="pass_8hpp_source.html">pass.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1pass__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1pass__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abd4ab22cc2822b968267be7f8397d611"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>)</td></tr>
<tr class="memdesc:abd4ab22cc2822b968267be7f8397d611"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor of the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> base class. <a href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">More...</a><br /></td></tr>
<tr class="separator:abd4ab22cc2822b968267be7f8397d611"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfadc013ff0754d66a18baffdb1a61d1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)=0</td></tr>
<tr class="memdesc:acfadc013ff0754d66a18baffdb1a61d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">More...</a><br /></td></tr>
<tr class="separator:acfadc013ff0754d66a18baffdb1a61d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46608a6c2dfb8ff657e44be9b50e0dfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a> ()</td></tr>
<tr class="memdesc:a46608a6c2dfb8ff657e44be9b50e0dfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the passes symbol type. <a href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">More...</a><br /></td></tr>
<tr class="separator:a46608a6c2dfb8ff657e44be9b50e0dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> class is a base clase for all passes made. you must override the <a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1" title="virtual method which must be implimented by the pass that inherits this class.">pass_t::run</a> virtual function and declare the logic of your pass there. </p>
<p>in the constructor of your pass you must call the super constructor (the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> constructor) and pass it the type of symbol which you are interesting in receiving.</p>
<p class="definition">Definition at line <a class="el" href="pass_8hpp_source.html#l00055">55</a> of file <a class="el" href="pass_8hpp_source.html">pass.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abd4ab22cc2822b968267be7f8397d611"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd4ab22cc2822b968267be7f8397d611">&#9670;&nbsp;</a></span>pass_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::obf::pass_t::pass_t </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td>
<td class="paramname"><em>sym_type</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the explicit constructor of the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> base class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym_type</td><td>the type of symbol in which the pass will run on. every symbol passed to the virtual "run" instruction will be of this type.</td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="pass_8hpp_source.html#l00063">63</a> of file <a class="el" href="pass_8hpp_source.html">pass.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acfadc013ff0754d66a18baffdb1a61d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfadc013ff0754d66a18baffdb1a61d1">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void theo::obf::pass_t::run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual method which must be implimented by the pass that inherits this class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>a symbol of the same type of m_sym_type.</td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">theo::obf::reloc_transform_pass_t</a>, <a class="el" href="classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">theo::obf::next_inst_pass_t</a>, and <a class="el" href="classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">theo::obf::jcc_rewrite_pass_t</a>.</p>
</div>
</div>
<a id="a46608a6c2dfb8ff657e44be9b50e0dfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46608a6c2dfb8ff657e44be9b50e0dfb">&#9670;&nbsp;</a></span>sym_type()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> theo::obf::pass_t::sym_type </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the passes symbol type. </p>
<dl class="section return"><dt>Returns</dt><dd>the passes symbol type.</dd></dl>
<p class="definition">Definition at line <a class="el" href="pass_8hpp_source.html#l00076">76</a> of file <a class="el" href="pass_8hpp_source.html">pass.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/<a class="el" href="pass_8hpp_source.html">pass.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,14 +0,0 @@
digraph "theo::obf::pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node1 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::jcc_rewrite\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1jcc__rewrite__pass__t.html",tooltip="jcc rewrite pass which rewrites rip relative jcc's so that they are position independent."];
Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="theo::obf::next_inst\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1next__inst__pass__t.html",tooltip="This pass is used to generate transformations and jmp code to change RIP to the next instruction."];
Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="theo::obf::reloc_transform\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1reloc__transform__pass__t.html",tooltip="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead..."];
}

@ -1,87 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::reloc_transform_pass_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">theo::obf::reloc_transform_pass_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#aebee9ed0c75d1f9a0b0b8af1c6a75aca">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">theo::obf::reloc_transform_pass_t</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a>(decomp::sym_type_t sym_type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">theo::obf::reloc_transform_pass_t</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,192 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::reloc_transform_pass_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1reloc__transform__pass__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::reloc_transform_pass_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead of the address of the next instruction. this pass only runs at the instruction level and appends transformations into the reloc_t object of the instruction symbol.
<a href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::reloc_transform_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1reloc__transform__pass__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1reloc__transform__pass__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::reloc_transform_pass_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1reloc__transform__pass__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1reloc__transform__pass__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a24e122f6be18a88ea1809252ab3ec0b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">run</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)</td></tr>
<tr class="memdesc:a24e122f6be18a88ea1809252ab3ec0b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">More...</a><br /></td></tr>
<tr class="separator:a24e122f6be18a88ea1809252ab3ec0b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1pass__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1pass__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td></tr>
<tr class="memitem:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>)</td></tr>
<tr class="memdesc:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor of the <a class="el" href="classtheo_1_1obf_1_1pass__t.html" title="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...">pass_t</a> base class. <a href="classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">More...</a><br /></td></tr>
<tr class="separator:abd4ab22cc2822b968267be7f8397d611 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a> ()</td></tr>
<tr class="memdesc:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the passes symbol type. <a href="classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">More...</a><br /></td></tr>
<tr class="separator:a46608a6c2dfb8ff657e44be9b50e0dfb inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aebee9ed0c75d1f9a0b0b8af1c6a75aca"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html#aebee9ed0c75d1f9a0b0b8af1c6a75aca">get</a> ()</td></tr>
<tr class="separator:aebee9ed0c75d1f9a0b0b8af1c6a75aca"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead of the address of the next instruction. this pass only runs at the instruction level and appends transformations into the reloc_t object of the instruction symbol. </p>
<p>given the following code: </p><pre class="fragment">mov rax, &amp;MessageBoxA
</pre><p> this pass will generate a random number of transformations to encrypt the address of "MessageBoxA". These transformations will then be applied by theodosius internally when resolving relocations. </p><pre class="fragment">mov rax, enc_MessageBoxA
xor rax, 0x389284324
add rax, 0x345332567
ror rax, 0x5353
</pre>
<p class="definition">Definition at line <a class="el" href="reloc__transform__pass_8hpp_source.html#l00056">56</a> of file <a class="el" href="reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aebee9ed0c75d1f9a0b0b8af1c6a75aca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebee9ed0c75d1f9a0b0b8af1c6a75aca">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a>* theo::obf::reloc_transform_pass_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a24e122f6be18a88ea1809252ab3ec0b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24e122f6be18a88ea1809252ab3ec0b9">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void theo::obf::reloc_transform_pass_t::run </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual method which must be implimented by the pass that inherits this class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>a symbol of the same type of m_sym_type.</td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/passes/<a class="el" href="reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::reloc_transform_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::reloc_transform\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead..."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::reloc_transform_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::reloc_transform\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead..."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::add_op_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">theo::obf::transform::add_op_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">theo::obf::transform::add_op_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,158 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::add_op_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1add__op__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::add_op_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="add__op_8hpp_source.html">add_op.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::add_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1add__op__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1add__op__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::transform::add_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1add__op__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1add__op__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a6edc3dd58a94709b395cd928edc47fbb"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">get</a> ()</td></tr>
<tr class="separator:a6edc3dd58a94709b395cd928edc47fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="add__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="add__op_8hpp_source.html">add_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a6edc3dd58a94709b395cd928edc47fbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6edc3dd58a94709b395cd928edc47fbb">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>* theo::obf::transform::add_op_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="add__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="add__op_8hpp_source.html">add_op.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="add__op_8hpp_source.html">add_op.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::add_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::add_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::add_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::add_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,89 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::operation_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,369 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::operation_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1operation__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::operation_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> is the base class for all types of transformations. classes that inherit this class are singleton and simply call the super constructor (<a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>).
<a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="operation_8hpp_source.html">operation.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::operation_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1operation__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1operation__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> is the base class for all types of transformations. classes that inherit this class are singleton and simply call the super constructor (<a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>). </p>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00061">61</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3876ca1c7904aed54940e1519fc9fdf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3876ca1c7904aed54940e1519fc9fdf4">&#9670;&nbsp;</a></span>operation_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::obf::transform::operation_t::operation_t </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a>&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">xed_iclass_enum_t&#160;</td>
<td class="paramname"><em>type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>lambda function when executed applies transformations.</td></tr>
<tr><td class="paramname">type</td><td>type of transformation, such as XOR, ADD, SUB, etc...</td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00069">69</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a307c6d7d48319d28d39d93c1df18680a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a307c6d7d48319d28d39d93c1df18680a">&#9670;&nbsp;</a></span>get_transform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a>* theo::obf::transform::operation_t::get_transform </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets a pointer to the lambda function which contains the transform logic. </p>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the lambda function which contains the transform logic.</dd></dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00133">133</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<a id="a91f9b94436d49659aaabb291786b3c7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91f9b94436d49659aaabb291786b3c7b">&#9670;&nbsp;</a></span>inverse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">xed_iclass_enum_t theo::obf::transform::operation_t::inverse </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the inverse operation of the current operation. </p>
<dl class="section return"><dt>Returns</dt><dd>the inverse operation of the current operation.</dd></dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00126">126</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<a id="a414b1716ec527c26bfcbd5262c21a7a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a414b1716ec527c26bfcbd5262c21a7a8">&#9670;&nbsp;</a></span>native()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::uint8_t&gt; theo::obf::transform::operation_t::native </td>
<td>(</td>
<td class="paramtype">const xed_decoded_inst_t *&#160;</td>
<td class="paramname"><em>inst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::uint32_t&#160;</td>
<td class="paramname"><em>imm</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>generates a native transform instruction given an existing instruction. it works like so: </p>
<p>mov rax, &amp;MessageBoxA ; original instruction with relocation</p>
<p>; this function takes the first operand and out of the original ; instruction and uses it to generate a transformation.</p>
<p>xor rax, 0x39280928 ; this would be an example output for the xor ;operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inst</td><td>instruction with a relocation to generate a transformation for.</td></tr>
<tr><td class="paramname">imm</td><td>random 32bit number used in the generate transform.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns the bytes of the native instruction that was encoded.</dd></dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00089">89</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<a id="aaa5859bc3c7f95d99d4d726289593488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa5859bc3c7f95d99d4d726289593488">&#9670;&nbsp;</a></span>random()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::size_t theo::obf::transform::operation_t::random </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>lowest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>largest</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>generate a random number in a range. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lowest</td><td>lowest value of the range.</td></tr>
<tr><td class="paramname">largest</td><td>highest value of the range.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a random value in a range.</dd></dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00148">148</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1operation__t_aaa5859bc3c7f95d99d4d726289593488_icgraph.png" border="0" usemap="#aclasstheo_1_1obf_1_1transform_1_1operation__t_aaa5859bc3c7f95d99d4d726289593488_icgraph" alt=""/></div>
</div>
</div>
</div>
<a id="a8558c2a8e78ef8da59674396bc76157f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8558c2a8e78ef8da59674396bc76157f">&#9670;&nbsp;</a></span>type()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">xed_iclass_enum_t theo::obf::transform::operation_t::type </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... </p>
<dl class="section return"><dt>Returns</dt><dd>the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...</dd></dl>
<p class="definition">Definition at line <a class="el" href="operation_8hpp_source.html#l00140">140</a> of file <a class="el" href="operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="operation_8hpp_source.html">operation.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,18 +0,0 @@
digraph "theo::obf::transform::operation_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node1 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::add_op_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1add__op__t.html",tooltip=" "];
Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="theo::obf::transform\l::rol_op_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1rol__op__t.html",tooltip=" "];
Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="theo::obf::transform\l::ror_op_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1ror__op__t.html",tooltip=" "];
Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="theo::obf::transform\l::sub_op_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1sub__op__t.html",tooltip=" "];
Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="theo::obf::transform\l::xor_op_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1xor__op__t.html",tooltip=" "];
}

@ -1,10 +0,0 @@
digraph "theo::obf::transform::operation_t::random"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="RL";
Node1 [label="theo::obf::transform\l::operation_t::random",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="generate a random number in a range."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::generate",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704",tooltip="generate a sequence of transformations given an instruction that has a relocation in it."];
}

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::rol_op_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">theo::obf::transform::rol_op_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html#a181d7dd50ca76d37706773fe94814c70">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">theo::obf::transform::rol_op_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,158 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::rol_op_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1rol__op__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::rol_op_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="rol__op_8hpp_source.html">rol_op.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::rol_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1rol__op__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1rol__op__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::transform::rol_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1rol__op__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1rol__op__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a181d7dd50ca76d37706773fe94814c70"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html#a181d7dd50ca76d37706773fe94814c70">get</a> ()</td></tr>
<tr class="separator:a181d7dd50ca76d37706773fe94814c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="rol__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="rol__op_8hpp_source.html">rol_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a181d7dd50ca76d37706773fe94814c70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a181d7dd50ca76d37706773fe94814c70">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a>* theo::obf::transform::rol_op_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="rol__op_8hpp_source.html#l00044">44</a> of file <a class="el" href="rol__op_8hpp_source.html">rol_op.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="rol__op_8hpp_source.html">rol_op.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::rol_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::rol_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::rol_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::rol_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::ror_op_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">theo::obf::transform::ror_op_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html#aef4141ba913fd1ad18132674c7aaf009">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">theo::obf::transform::ror_op_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,158 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::ror_op_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1ror__op__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::ror_op_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="ror__op_8hpp_source.html">ror_op.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::ror_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1ror__op__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1ror__op__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::transform::ror_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1ror__op__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1ror__op__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aef4141ba913fd1ad18132674c7aaf009"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html#aef4141ba913fd1ad18132674c7aaf009">get</a> ()</td></tr>
<tr class="separator:aef4141ba913fd1ad18132674c7aaf009"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="ror__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="ror__op_8hpp_source.html">ror_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aef4141ba913fd1ad18132674c7aaf009"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef4141ba913fd1ad18132674c7aaf009">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a>* theo::obf::transform::ror_op_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="ror__op_8hpp_source.html#l00044">44</a> of file <a class="el" href="ror__op_8hpp_source.html">ror_op.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="ror__op_8hpp_source.html">ror_op.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::ror_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::ror_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::ror_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::ror_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::sub_op_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">theo::obf::transform::sub_op_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a5ce235a70eaf19fbf17fb0786e2dba05">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">theo::obf::transform::sub_op_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,158 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::sub_op_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1sub__op__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::sub_op_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="sub__op_8hpp_source.html">sub_op.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::sub_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1sub__op__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1sub__op__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::transform::sub_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1sub__op__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1sub__op__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a5ce235a70eaf19fbf17fb0786e2dba05"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a5ce235a70eaf19fbf17fb0786e2dba05">get</a> ()</td></tr>
<tr class="separator:a5ce235a70eaf19fbf17fb0786e2dba05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="sub__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="sub__op_8hpp_source.html">sub_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a5ce235a70eaf19fbf17fb0786e2dba05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ce235a70eaf19fbf17fb0786e2dba05">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a>* theo::obf::transform::sub_op_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="sub__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="sub__op_8hpp_source.html">sub_op.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="sub__op_8hpp_source.html">sub_op.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::sub_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::sub_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::sub_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::sub_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::xor_op_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">theo::obf::transform::xor_op_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff">get</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">theo::obf::transform::xor_op_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>(transform_t op, xed_iclass_enum_t type)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a>(std::size_t lowest, std::size_t largest)</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,158 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform::xor_op_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf.html">obf</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1obf_1_1transform.html">transform</a></li><li class="navelem"><a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classtheo_1_1obf_1_1transform_1_1xor__op__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform::xor_op_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="xor__op_8hpp_source.html">xor_op.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::xor_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1xor__op__t__inherit__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1xor__op__t_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for theo::obf::transform::xor_op_t:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1obf_1_1transform_1_1xor__op__t__coll__graph.png" border="0" usemap="#atheo_1_1obf_1_1transform_1_1xor__op__t_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a0b6fa0329ed132c090d72feb77a0ffff"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff">get</a> ()</td></tr>
<tr class="separator:a0b6fa0329ed132c090d72feb77a0ffff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">random</a> (std::size_t lowest, std::size_t largest)</td></tr>
<tr class="memdesc:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a random number in a range. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488">More...</a><br /></td></tr>
<tr class="separator:aaa5859bc3c7f95d99d4d726289593488 inherit pub_static_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memitem:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>)</td></tr>
<tr class="memdesc:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for <a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html" title="operation_t is the base class for all types of transformations. classes that inherit this class are s...">operation_t</a> <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">More...</a><br /></td></tr>
<tr class="separator:a3876ca1c7904aed54940e1519fc9fdf4 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a414b1716ec527c26bfcbd5262c21a7a8">More...</a><br /></td></tr>
<tr class="separator:a414b1716ec527c26bfcbd5262c21a7a8 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a> ()</td></tr>
<tr class="memdesc:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the inverse operation of the current operation. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">More...</a><br /></td></tr>
<tr class="separator:a91f9b94436d49659aaabb291786b3c7b inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a> ()</td></tr>
<tr class="memdesc:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">More...</a><br /></td></tr>
<tr class="separator:a307c6d7d48319d28d39d93c1df18680a inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top">xed_iclass_enum_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a> ()</td></tr>
<tr class="memdesc:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc... <a href="classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">More...</a><br /></td></tr>
<tr class="separator:a8558c2a8e78ef8da59674396bc76157f inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="xor__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="xor__op_8hpp_source.html">xor_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a0b6fa0329ed132c090d72feb77a0ffff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b6fa0329ed132c090d72feb77a0ffff">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>* theo::obf::transform::xor_op_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="xor__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="xor__op_8hpp_source.html">xor_op.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="xor__op_8hpp_source.html">xor_op.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::xor_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::xor_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::xor_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::xor_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,91 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">recomp_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::recomp_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">allocate</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">allocator</a>(allocator_t alloc)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">copier</a>(copier_t copy)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">copy_syms</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589">recomp_t</a>(decomp::decomp_t *dcmp, allocator_t alloc, copier_t copy, resolver_t resolve)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#ae0c56f0f8af33b390e4123509523602c">resolve</a>(const std::string &amp;&amp;sym)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">resolver</a>(resolver_t resolve)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,346 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::recomp::recomp_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html">recomp_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1recomp_1_1recomp__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::recomp::recomp_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>the main class responsible for recomposition
<a href="classtheo_1_1recomp_1_1recomp__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="recomp_8hpp_source.html">recomp.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac5f04297153c2e445330e5cc103e8589"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589">recomp_t</a> (<a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">decomp::decomp_t</a> *dcmp, <a class="el" href="namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">allocator_t</a> alloc, <a class="el" href="namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">copier_t</a> copy, <a class="el" href="namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a> <a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>)</td></tr>
<tr class="memdesc:ac5f04297153c2e445330e5cc103e8589"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor for the <a class="el" href="classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> class. <a href="classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589">More...</a><br /></td></tr>
<tr class="separator:ac5f04297153c2e445330e5cc103e8589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78502665e218d3addca9b1e5e3875f39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">allocate</a> ()</td></tr>
<tr class="memdesc:a78502665e218d3addca9b1e5e3875f39"><td class="mdescLeft">&#160;</td><td class="mdescRight">when called, this function allocates space for every symbol. <a href="classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">More...</a><br /></td></tr>
<tr class="separator:a78502665e218d3addca9b1e5e3875f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a299fbede378f04991df2e39293307094"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a> ()</td></tr>
<tr class="memdesc:a299fbede378f04991df2e39293307094"><td class="mdescLeft">&#160;</td><td class="mdescRight">when called, this function resolves all relocations in every symbol. <a href="classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">More...</a><br /></td></tr>
<tr class="separator:a299fbede378f04991df2e39293307094"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a080d88f122d12faf2e328c9bdd10be6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">copy_syms</a> ()</td></tr>
<tr class="memdesc:a080d88f122d12faf2e328c9bdd10be6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">when called, this function copies symbols into allocations. <a href="classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">More...</a><br /></td></tr>
<tr class="separator:a080d88f122d12faf2e328c9bdd10be6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0da9a904b0057c14190218592aff0f07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">allocator</a> (<a class="el" href="namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">allocator_t</a> alloc)</td></tr>
<tr class="memdesc:a0da9a904b0057c14190218592aff0f07"><td class="mdescLeft">&#160;</td><td class="mdescRight">setter for the allocater lambda function. <a href="classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">More...</a><br /></td></tr>
<tr class="separator:a0da9a904b0057c14190218592aff0f07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6fecf752d4c5bc211e164d8496724b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">copier</a> (<a class="el" href="namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">copier_t</a> copy)</td></tr>
<tr class="memdesc:aa6fecf752d4c5bc211e164d8496724b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">setter for the copier lambda function. <a href="classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">More...</a><br /></td></tr>
<tr class="separator:aa6fecf752d4c5bc211e164d8496724b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1be6d0cdb57565c31b138248c8b2d470"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">resolver</a> (<a class="el" href="namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a> <a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>)</td></tr>
<tr class="memdesc:a1be6d0cdb57565c31b138248c8b2d470"><td class="mdescLeft">&#160;</td><td class="mdescRight">setter for the resolve lambda function. <a href="classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">More...</a><br /></td></tr>
<tr class="separator:a1be6d0cdb57565c31b138248c8b2d470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0c56f0f8af33b390e4123509523602c"><td class="memItemLeft" align="right" valign="top">std::uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1recomp__t.html#ae0c56f0f8af33b390e4123509523602c">resolve</a> (const std::string &amp;&amp;sym)</td></tr>
<tr class="memdesc:ae0c56f0f8af33b390e4123509523602c"><td class="mdescLeft">&#160;</td><td class="mdescRight">resolves the address of a function given its name. <a href="classtheo_1_1recomp_1_1recomp__t.html#ae0c56f0f8af33b390e4123509523602c">More...</a><br /></td></tr>
<tr class="separator:ae0c56f0f8af33b390e4123509523602c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>the main class responsible for recomposition </p>
<p class="definition">Definition at line <a class="el" href="recomp_8hpp_source.html#l00064">64</a> of file <a class="el" href="recomp_8hpp_source.html">recomp.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac5f04297153c2e445330e5cc103e8589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5f04297153c2e445330e5cc103e8589">&#9670;&nbsp;</a></span>recomp_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::recomp::recomp_t::recomp_t </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1decomp__t.html">decomp::decomp_t</a> *&#160;</td>
<td class="paramname"><em>dcmp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">allocator_t</a>&#160;</td>
<td class="paramname"><em>alloc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">copier_t</a>&#160;</td>
<td class="paramname"><em>copy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a>&#160;</td>
<td class="paramname"><em>resolve</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the explicit constructor for the <a class="el" href="classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dcmp</td><td>pointer to a decomp_t class.</td></tr>
<tr><td class="paramname">alloc</td><td>lambda function which is used to allocate memory for symbols.</td></tr>
<tr><td class="paramname">copy</td><td>lambda function used to copy bytes into allocations.</td></tr>
<tr><td class="paramname">resolve</td><td>lambda function used to resolve external symbols.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a78502665e218d3addca9b1e5e3875f39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78502665e218d3addca9b1e5e3875f39">&#9670;&nbsp;</a></span>allocate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::allocate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>when called, this function allocates space for every symbol. </p>
</div>
</div>
<a id="a0da9a904b0057c14190218592aff0f07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0da9a904b0057c14190218592aff0f07">&#9670;&nbsp;</a></span>allocator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::allocator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">allocator_t</a>&#160;</td>
<td class="paramname"><em>alloc</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>setter for the allocater lambda function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">alloc</td><td>lambda function which allocates memory for symbols.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa6fecf752d4c5bc211e164d8496724b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6fecf752d4c5bc211e164d8496724b1">&#9670;&nbsp;</a></span>copier()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::copier </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">copier_t</a>&#160;</td>
<td class="paramname"><em>copy</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>setter for the copier lambda function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">copy</td><td>copier lambda function used to copy bytes into allocations made by the allocator.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a080d88f122d12faf2e328c9bdd10be6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a080d88f122d12faf2e328c9bdd10be6e">&#9670;&nbsp;</a></span>copy_syms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::copy_syms </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>when called, this function copies symbols into allocations. </p>
</div>
</div>
<a id="a299fbede378f04991df2e39293307094"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a299fbede378f04991df2e39293307094">&#9670;&nbsp;</a></span>resolve() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::resolve </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>when called, this function resolves all relocations in every symbol. </p>
</div>
</div>
<a id="ae0c56f0f8af33b390e4123509523602c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0c56f0f8af33b390e4123509523602c">&#9670;&nbsp;</a></span>resolve() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uintptr_t theo::recomp::recomp_t::resolve </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&amp;&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>resolves the address of a function given its name. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>the name of the symbol to resolve the location of.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the address of the symbol.</dd></dl>
</div>
</div>
<a id="a1be6d0cdb57565c31b138248c8b2d470"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1be6d0cdb57565c31b138248c8b2d470">&#9670;&nbsp;</a></span>resolver()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::recomp_t::resolver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a>&#160;</td>
<td class="paramname"><em>resolve</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>setter for the resolve lambda function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">resolve</td><td>lambda function to resolve external symbols.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/recomp/<a class="el" href="recomp_8hpp_source.html">recomp.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">reloc_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::reloc_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">add_transform</a>(std::pair&lt; obf::transform::transform_t *, std::uint32_t &gt; entry)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">get_transforms</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">name</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a>(std::uint32_t offset)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">reloc_t</a>(std::uint32_t offset, std::size_t hash, const std::string &amp;&amp;sym_name)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,388 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::recomp::reloc_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html">reloc_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1recomp_1_1reloc__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::recomp::reloc_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>meta data about a relocation for a symbol
<a href="classtheo_1_1recomp_1_1reloc__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7cb1cf1c58a6f3cdf7ae326d65948548"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">reloc_t</a> (std::uint32_t <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>, std::size_t <a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>, const std::string &amp;&amp;sym_name)</td></tr>
<tr class="memdesc:a7cb1cf1c58a6f3cdf7ae326d65948548"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for this class. <a href="classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">More...</a><br /></td></tr>
<tr class="separator:a7cb1cf1c58a6f3cdf7ae326d65948548"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa340b2c2d5d1ac7f96a1dbee39f25461"><td class="memItemLeft" align="right" valign="top">std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a> ()</td></tr>
<tr class="memdesc:aa340b2c2d5d1ac7f96a1dbee39f25461"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the hash of the relocation symbol. <a href="classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">More...</a><br /></td></tr>
<tr class="separator:aa340b2c2d5d1ac7f96a1dbee39f25461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa181755df50bc566b164072b21788fec"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">name</a> ()</td></tr>
<tr class="memdesc:aa181755df50bc566b164072b21788fec"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the name of the relocation symbol. <a href="classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">More...</a><br /></td></tr>
<tr class="separator:aa181755df50bc566b164072b21788fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a537836fcea3326e4269375a1486f0323"><td class="memItemLeft" align="right" valign="top">std::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a> ()</td></tr>
<tr class="memdesc:a537836fcea3326e4269375a1486f0323"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the offset into the symbol to which the relocation will be applied. the offset is in bytes. zero based. <a href="classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">More...</a><br /></td></tr>
<tr class="separator:a537836fcea3326e4269375a1486f0323"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99e65270ace1ff4f080bd4040c8a43dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a> (std::uint32_t offset)</td></tr>
<tr class="memdesc:a99e65270ace1ff4f080bd4040c8a43dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets the offset to which the relocation gets applied too. <a href="classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">More...</a><br /></td></tr>
<tr class="separator:a99e65270ace1ff4f080bd4040c8a43dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5214a9ff9135672e25f40406c37fb10"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">add_transform</a> (std::pair&lt; <a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">obf::transform::transform_t</a> *, std::uint32_t &gt; entry)</td></tr>
<tr class="memdesc:ab5214a9ff9135672e25f40406c37fb10"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds a transformation to be applied to the relocation prior to writing it into the symbol. <a href="classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">More...</a><br /></td></tr>
<tr class="separator:ab5214a9ff9135672e25f40406c37fb10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad49901bf8b6b0e3963e64d17d4b51aec"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::pair&lt; <a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">obf::transform::transform_t</a> *, std::uint32_t &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">get_transforms</a> ()</td></tr>
<tr class="memdesc:ad49901bf8b6b0e3963e64d17d4b51aec"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the vector of transformation. <a href="classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">More...</a><br /></td></tr>
<tr class="separator:ad49901bf8b6b0e3963e64d17d4b51aec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>meta data about a relocation for a symbol </p>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00041">41</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7cb1cf1c58a6f3cdf7ae326d65948548"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cb1cf1c58a6f3cdf7ae326d65948548">&#9670;&nbsp;</a></span>reloc_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::recomp::reloc_t::reloc_t </td>
<td>(</td>
<td class="paramtype">std::uint32_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&amp;&#160;</td>
<td class="paramname"><em>sym_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>explicit constructor for this class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">offset</td><td>offset into the symbol data where the relocation is at. all relocations are assumed to be linear virtual addresses of the symbol.</td></tr>
<tr><td class="paramname">hash</td><td>hash of the symbol to which the relocation is of.</td></tr>
<tr><td class="paramname">sym_name</td><td>the name of the symbol to which the relocation is of.</td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00052">52</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ab5214a9ff9135672e25f40406c37fb10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5214a9ff9135672e25f40406c37fb10">&#9670;&nbsp;</a></span>add_transform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::reloc_t::add_transform </td>
<td>(</td>
<td class="paramtype">std::pair&lt; <a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">obf::transform::transform_t</a> *, std::uint32_t &gt;&#160;</td>
<td class="paramname"><em>entry</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>adds a transformation to be applied to the relocation prior to writing it into the symbol. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">entry</td><td>a pair containing a lambda function that when executed transforms a relocation. the second value in the pair is a random value which is passed to the lambda.</td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00091">91</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1recomp_1_1reloc__t_ab5214a9ff9135672e25f40406c37fb10_icgraph.png" border="0" usemap="#aclasstheo_1_1recomp_1_1reloc__t_ab5214a9ff9135672e25f40406c37fb10_icgraph" alt=""/></div>
</div>
</div>
</div>
<a id="ad49901bf8b6b0e3963e64d17d4b51aec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad49901bf8b6b0e3963e64d17d4b51aec">&#9670;&nbsp;</a></span>get_transforms()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::pair&lt;<a class="el" href="namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">obf::transform::transform_t</a>*, std::uint32_t&gt; &gt;&amp; theo::recomp::reloc_t::get_transforms </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the vector of transformation. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the vector of transformations.</dd></dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00101">101</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1recomp_1_1reloc__t_ad49901bf8b6b0e3963e64d17d4b51aec_icgraph.png" border="0" usemap="#aclasstheo_1_1recomp_1_1reloc__t_ad49901bf8b6b0e3963e64d17d4b51aec_icgraph" alt=""/></div>
</div>
</div>
</div>
<a id="aa340b2c2d5d1ac7f96a1dbee39f25461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa340b2c2d5d1ac7f96a1dbee39f25461">&#9670;&nbsp;</a></span>hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::size_t theo::recomp::reloc_t::hash </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the hash of the relocation symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>hash of the relocation symbol</dd></dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00061">61</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div>
</div>
<a id="aa181755df50bc566b164072b21788fec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa181755df50bc566b164072b21788fec">&#9670;&nbsp;</a></span>name()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string theo::recomp::reloc_t::name </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the name of the relocation symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the name of the relocation symbol.</dd></dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00067">67</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div>
</div>
<a id="a537836fcea3326e4269375a1486f0323"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a537836fcea3326e4269375a1486f0323">&#9670;&nbsp;</a></span>offset() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::uint32_t theo::recomp::reloc_t::offset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the offset into the symbol to which the relocation will be applied. the offset is in bytes. zero based. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the offset into the symbol to which the relocation will be applied. the offset is in bytes. zero based.</dd></dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00075">75</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div>
</div>
<a id="a99e65270ace1ff4f080bd4040c8a43dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99e65270ace1ff4f080bd4040c8a43dd">&#9670;&nbsp;</a></span>offset() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::reloc_t::offset </td>
<td>(</td>
<td class="paramtype">std::uint32_t&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>sets the offset to which the relocation gets applied too. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">offset</td><td>offset to which the relocation gets applied too.</td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="reloc_8hpp_source.html#l00082">82</a> of file <a class="el" href="reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1recomp_1_1reloc__t_a99e65270ace1ff4f080bd4040c8a43dd_cgraph.png" border="0" usemap="#aclasstheo_1_1recomp_1_1reloc__t_a99e65270ace1ff4f080bd4040c8a43dd_cgraph" alt=""/></div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classtheo_1_1recomp_1_1reloc__t_a99e65270ace1ff4f080bd4040c8a43dd_icgraph.png" border="0" usemap="#aclasstheo_1_1recomp_1_1reloc__t_a99e65270ace1ff4f080bd4040c8a43dd_icgraph" alt=""/></div>
</div>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/recomp/<a class="el" href="reloc_8hpp_source.html">reloc.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::recomp::reloc_t::offset"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node1 [label="theo::recomp::reloc\l_t::offset",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="sets the offset to which the relocation gets applied too."];
Node1 -> Node1 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,9 +0,0 @@
digraph "theo::recomp::reloc_t::offset"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="RL";
Node1 [label="theo::recomp::reloc\l_t::offset",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="sets the offset to which the relocation gets applied too."];
Node1 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,10 +0,0 @@
digraph "theo::recomp::reloc_t::add_transform"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="RL";
Node1 [label="theo::recomp::reloc\l_t::add_transform",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="adds a transformation to be applied to the relocation prior to writing it into the symbol."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::generate",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704",tooltip="generate a sequence of transformations given an instruction that has a relocation in it."];
}

@ -1,10 +0,0 @@
digraph "theo::recomp::reloc_t::get_transforms"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="RL";
Node1 [label="theo::recomp::reloc\l_t::get_transforms",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="gets the vector of transformation."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::generate",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704",tooltip="generate a sequence of transformations given an instruction that has a relocation in it."];
}

@ -1,91 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">symbol_table_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::symbol_table_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">for_each</a>(std::function&lt; void(decomp::symbol_t &amp;sym)&gt; fn)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">put_symbol</a>(decomp::symbol_t &amp;sym)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e">put_symbols</a>(std::vector&lt; decomp::symbol_t &gt; &amp;syms)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">size</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a29da1a640ee4e23e4f376db21e88c209">sym_from_alloc</a>(std::uintptr_t allocated_at)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a445ac3810ffd42e95416488384998528">sym_from_hash</a>(std::size_t hash)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">symbol_table_t</a>()</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ab7dfbb8369463ce3d74ad656115cf4d5">symbol_table_t</a>(const std::vector&lt; decomp::symbol_t &gt; &amp;&amp;syms)</td><td class="entry"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,332 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::recomp::symbol_table_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="namespacetheo_1_1recomp.html">recomp</a></li><li class="navelem"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html">symbol_table_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1recomp_1_1symbol__table__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::recomp::symbol_table_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>this class is a high level wrapper for a hashmap that contains <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">decomp::symbol_t</a> values. the symbol values are references by a hashcode.
<a href="classtheo_1_1recomp_1_1symbol__table__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="symbol__table_8hpp_source.html">symbol_table.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad06d4004c0cb454b1ffe7e2ae2ccedf5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">symbol_table_t</a> ()</td></tr>
<tr class="memdesc:ad06d4004c0cb454b1ffe7e2ae2ccedf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">default constructor. does nothing. <a href="classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">More...</a><br /></td></tr>
<tr class="separator:ad06d4004c0cb454b1ffe7e2ae2ccedf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7dfbb8369463ce3d74ad656115cf4d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ab7dfbb8369463ce3d74ad656115cf4d5">symbol_table_t</a> (const std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &gt; &amp;&amp;syms)</td></tr>
<tr class="memdesc:ab7dfbb8369463ce3d74ad656115cf4d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">this constructor will populate the m_table private field with symbols. <a href="classtheo_1_1recomp_1_1symbol__table__t.html#ab7dfbb8369463ce3d74ad656115cf4d5">More...</a><br /></td></tr>
<tr class="separator:ab7dfbb8369463ce3d74ad656115cf4d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9caf2d4d97b2498aa624c3750a7a601"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">put_symbol</a> (<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &amp;sym)</td></tr>
<tr class="memdesc:af9caf2d4d97b2498aa624c3750a7a601"><td class="mdescLeft">&#160;</td><td class="mdescRight">add symbol to m_table <a href="classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">More...</a><br /></td></tr>
<tr class="separator:af9caf2d4d97b2498aa624c3750a7a601"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7c35d9336f67d3175910c028e0b9b3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e">put_symbols</a> (std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &gt; &amp;syms)</td></tr>
<tr class="memdesc:ae7c35d9336f67d3175910c028e0b9b3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">add a vector of symbol to m_table <a href="classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e">More...</a><br /></td></tr>
<tr class="separator:ae7c35d9336f67d3175910c028e0b9b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a445ac3810ffd42e95416488384998528"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a445ac3810ffd42e95416488384998528">sym_from_hash</a> (std::size_t hash)</td></tr>
<tr class="memdesc:a445ac3810ffd42e95416488384998528"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its name) the hash is produced by <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">theo::decomp::symbol_t::hash</a> <a href="classtheo_1_1recomp_1_1symbol__table__t.html#a445ac3810ffd42e95416488384998528">More...</a><br /></td></tr>
<tr class="separator:a445ac3810ffd42e95416488384998528"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29da1a640ee4e23e4f376db21e88c209"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a29da1a640ee4e23e4f376db21e88c209">sym_from_alloc</a> (std::uintptr_t allocated_at)</td></tr>
<tr class="memdesc:a29da1a640ee4e23e4f376db21e88c209"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns an optional pointer to a symbol given its allocation location. <a href="classtheo_1_1recomp_1_1symbol__table__t.html#a29da1a640ee4e23e4f376db21e88c209">More...</a><br /></td></tr>
<tr class="separator:a29da1a640ee4e23e4f376db21e88c209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35008ba37814a94209cf979302e13e6d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">for_each</a> (std::function&lt; void(<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &amp;sym)&gt; fn)</td></tr>
<tr class="memdesc:a35008ba37814a94209cf979302e13e6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">this function is a wrapper function that allows you to get at each entry in the symbol table by reference. <a href="classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">More...</a><br /></td></tr>
<tr class="separator:a35008ba37814a94209cf979302e13e6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af57c0495a442ea86af0f9cca4521631e"><td class="memItemLeft" align="right" valign="top">std::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">size</a> ()</td></tr>
<tr class="memdesc:af57c0495a442ea86af0f9cca4521631e"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the size of the symbol table. <a href="classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">More...</a><br /></td></tr>
<tr class="separator:af57c0495a442ea86af0f9cca4521631e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>this class is a high level wrapper for a hashmap that contains <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">decomp::symbol_t</a> values. the symbol values are references by a hashcode. </p>
<p class="definition">Definition at line <a class="el" href="symbol__table_8hpp_source.html#l00045">45</a> of file <a class="el" href="symbol__table_8hpp_source.html">symbol_table.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad06d4004c0cb454b1ffe7e2ae2ccedf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad06d4004c0cb454b1ffe7e2ae2ccedf5">&#9670;&nbsp;</a></span>symbol_table_t() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::recomp::symbol_table_t::symbol_table_t </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>default constructor. does nothing. </p>
<p class="definition">Definition at line <a class="el" href="symbol__table_8hpp_source.html#l00050">50</a> of file <a class="el" href="symbol__table_8hpp_source.html">symbol_table.hpp</a>.</p>
</div>
</div>
<a id="ab7dfbb8369463ce3d74ad656115cf4d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7dfbb8369463ce3d74ad656115cf4d5">&#9670;&nbsp;</a></span>symbol_table_t() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">theo::recomp::symbol_table_t::symbol_table_t </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>syms</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>this constructor will populate the m_table private field with symbols. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">syms</td><td>vector of <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">decomp::symbol_t</a></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a35008ba37814a94209cf979302e13e6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35008ba37814a94209cf979302e13e6d">&#9670;&nbsp;</a></span>for_each()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::symbol_table_t::for_each </td>
<td>(</td>
<td class="paramtype">std::function&lt; void(<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &amp;sym)&gt;&#160;</td>
<td class="paramname"><em>fn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>this function is a wrapper function that allows you to get at each entry in the symbol table by reference. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fn</td><td>a callback function that will be called for each symbol</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af9caf2d4d97b2498aa624c3750a7a601"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9caf2d4d97b2498aa624c3750a7a601">&#9670;&nbsp;</a></span>put_symbol()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::symbol_table_t::put_symbol </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &amp;&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>add symbol to m_table </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>symbol to be added.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae7c35d9336f67d3175910c028e0b9b3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7c35d9336f67d3175910c028e0b9b3e">&#9670;&nbsp;</a></span>put_symbols()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void theo::recomp::symbol_table_t::put_symbols </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>syms</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>add a vector of symbol to m_table </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">syms</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af57c0495a442ea86af0f9cca4521631e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af57c0495a442ea86af0f9cca4521631e">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uint32_t theo::recomp::symbol_table_t::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the size of the symbol table. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the size of the symbol table.</dd></dl>
</div>
</div>
<a id="a29da1a640ee4e23e4f376db21e88c209"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29da1a640ee4e23e4f376db21e88c209">&#9670;&nbsp;</a></span>sym_from_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::optional&lt;<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>*&gt; theo::recomp::symbol_table_t::sym_from_alloc </td>
<td>(</td>
<td class="paramtype">std::uintptr_t&#160;</td>
<td class="paramname"><em>allocated_at</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns an optional pointer to a symbol given its allocation location. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">allocated_at</td><td>the address where the symbol is allocated at.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns an optional pointer to a <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">theo::decomp::symbol_t</a></dd></dl>
</div>
</div>
<a id="a445ac3810ffd42e95416488384998528"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a445ac3810ffd42e95416488384998528">&#9670;&nbsp;</a></span>sym_from_hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::optional&lt;<a class="el" href="classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>*&gt; theo::recomp::symbol_table_t::sym_from_hash </td>
<td>(</td>
<td class="paramtype">std::size_t&#160;</td>
<td class="paramname"><em>hash</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its name) the hash is produced by <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">theo::decomp::symbol_t::hash</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hash</td><td>hashcode of the symbol to get from the symbol table...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns an optional pointer to a <a class="el" href="classtheo_1_1decomp_1_1symbol__t.html" title="symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....">theo::decomp::symbol_t</a></dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/recomp/<a class="el" href="symbol__table_8hpp_source.html">symbol_table.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,87 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="classtheo_1_1theo__t.html">theo_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::theo_t Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classtheo_1_1theo__t.html">theo::theo_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">compose</a>()</td><td class="entry"><a class="el" href="classtheo_1_1theo__t.html">theo::theo_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1theo__t.html#a4987a745a15df0609d437c6af8c057ea">decompose</a>()</td><td class="entry"><a class="el" href="classtheo_1_1theo__t.html">theo::theo_t</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">resolve</a>(const std::string &amp;&amp;sym)</td><td class="entry"><a class="el" href="classtheo_1_1theo__t.html">theo::theo_t</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo_t</a>(std::vector&lt; std::uint8_t &gt; &amp;lib, lnk_fns_t lnkr_fns, const std::string &amp;&amp;entry_sym)</td><td class="entry"><a class="el" href="classtheo_1_1theo__t.html">theo::theo_t</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,233 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::theo_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetheo.html">theo</a></li><li class="navelem"><a class="el" href="classtheo_1_1theo__t.html">theo_t</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classtheo_1_1theo__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::theo_t Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge that connects all three: decomp, obf, recomp.
<a href="classtheo_1_1theo__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="theo_8hpp_source.html">theo.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0a9ae3322261b97cf1dc47c908ef3c6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo_t</a> (std::vector&lt; std::uint8_t &gt; &amp;lib, <a class="el" href="namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a> lnkr_fns, const std::string &amp;&amp;entry_sym)</td></tr>
<tr class="memdesc:a0a9ae3322261b97cf1dc47c908ef3c6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">explicit constructor for theo class. <a href="classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">More...</a><br /></td></tr>
<tr class="separator:a0a9ae3322261b97cf1dc47c908ef3c6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4987a745a15df0609d437c6af8c057ea"><td class="memItemLeft" align="right" valign="top">std::optional&lt; std::uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1theo__t.html#a4987a745a15df0609d437c6af8c057ea">decompose</a> ()</td></tr>
<tr class="memdesc:a4987a745a15df0609d437c6af8c057ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">decomposes the lib file and return the number of symbols that are used. <a href="classtheo_1_1theo__t.html#a4987a745a15df0609d437c6af8c057ea">More...</a><br /></td></tr>
<tr class="separator:a4987a745a15df0609d437c6af8c057ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39e067dd71f82b437c6a418d41e38b27"><td class="memItemLeft" align="right" valign="top">std::uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">compose</a> ()</td></tr>
<tr class="memdesc:a39e067dd71f82b437c6a418d41e38b27"><td class="mdescLeft">&#160;</td><td class="mdescRight">compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each other. <a href="classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">More...</a><br /></td></tr>
<tr class="separator:a39e067dd71f82b437c6a418d41e38b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97c52bda4b07a456ff1ea6f3c1cdbe24"><td class="memItemLeft" align="right" valign="top">std::uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">resolve</a> (const std::string &amp;&amp;sym)</td></tr>
<tr class="memdesc:a97c52bda4b07a456ff1ea6f3c1cdbe24"><td class="mdescLeft">&#160;</td><td class="mdescRight">given the name of a symbol, it returns the address of where its mapped. <a href="classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">More...</a><br /></td></tr>
<tr class="separator:a97c52bda4b07a456ff1ea6f3c1cdbe24"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge that connects all three: decomp, obf, recomp. </p>
<p>You will create an object of this type when using theo.</p>
<p class="definition">Definition at line <a class="el" href="theo_8hpp_source.html#l00070">70</a> of file <a class="el" href="theo_8hpp_source.html">theo.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0a9ae3322261b97cf1dc47c908ef3c6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a9ae3322261b97cf1dc47c908ef3c6d">&#9670;&nbsp;</a></span>theo_t()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">theo::theo_t::theo_t </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::uint8_t &gt; &amp;&#160;</td>
<td class="paramname"><em>lib</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a>&#160;</td>
<td class="paramname"><em>lnkr_fns</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&amp;&#160;</td>
<td class="paramname"><em>entry_sym</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>explicit constructor for theo class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lib</td><td>a vector of bytes consisting of a lib</td></tr>
<tr><td class="paramname">lnkr_fns</td><td></td></tr>
<tr><td class="paramname">entry_sym</td><td>the name of the function which will be used as the entry point</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a39e067dd71f82b437c6a418d41e38b27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39e067dd71f82b437c6a418d41e38b27">&#9670;&nbsp;</a></span>compose()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uintptr_t theo::theo_t::compose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each other. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the address of the entry point symbol</dd></dl>
</div>
</div>
<a id="a4987a745a15df0609d437c6af8c057ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4987a745a15df0609d437c6af8c057ea">&#9670;&nbsp;</a></span>decompose()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::optional&lt;std::uint32_t&gt; theo::theo_t::decompose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>decomposes the lib file and return the number of symbols that are used. </p>
<dl class="section return"><dt>Returns</dt><dd>optional amount of symbols that are used. no value if decomposition fails.</dd></dl>
</div>
</div>
<a id="a97c52bda4b07a456ff1ea6f3c1cdbe24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97c52bda4b07a456ff1ea6f3c1cdbe24">&#9670;&nbsp;</a></span>resolve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::uintptr_t theo::theo_t::resolve </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&amp;&#160;</td>
<td class="paramname"><em>sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>given the name of a symbol, it returns the address of where its mapped. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sym</td><td>the name of the symbol</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the address of the symbol</dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/<a class="el" href="theo_8hpp_source.html">theo.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -5,14 +5,14 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform -&gt; recomp Relation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<title>Theodosius: examples/demo/Demo Example Using Theo.md File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
@ -34,15 +34,15 @@
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
@ -61,16 +61,16 @@ $(function() {
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="dir_fa1ee7704f0ab8e5fd961a68bf21be50.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">examples/demo/Demo Example Using Theo.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
<h3>transform &rarr; recomp Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in include/obf/transform</th><th class="dirtab">Includes file in include/recomp</th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="d5/d18/gen_8hpp.html">gen.hpp</a></td><td class="dirtab"><a class="el" href="d1/d82/reloc_8hpp.html">reloc.hpp</a></td></tr></table></div><!-- contents -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::jcc_rewrite_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::jcc_rewrite\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="jcc rewrite pass which rewrites rip relative jcc's so that they are position independent."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/dad/classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,67 +0,0 @@
digraph "include/obf/passes/reloc_transform_pass.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/passes\l/reloc_transform_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5a/pass_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d62/symbol_8hpp.html",tooltip=" "];
Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="coff/image.hpp",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="cstdint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/d82/reloc_8hpp.html",tooltip=" "];
Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="cstddef",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node7 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="obf/transform/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="obf/transform/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node11 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node11 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node9 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 [label="obf/transform/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node19 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 [label="obf/transform/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node20 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 [label="obf/transform/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node21 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node22 [label="obf/transform/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node22 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 [label="string",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node4 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node25 [label="obf/transform/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d18/gen_8hpp.html",tooltip=" "];
Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node25 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,154 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/symbol_table.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_d92462d752f7a277bbc0245a347b2579.html">recomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">symbol_table.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d0/d5e/symbol__table_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d6/d62/symbol_8hpp.html">decomp/symbol.hpp</a>&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a> {</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">symbol_table_t</a> {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5"> 50</a></span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">symbol_table_t</a>() {}</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">symbol_table_t</a>(<span class="keyword">const</span> std::vector&lt;decomp::symbol_t&gt;&amp;&amp; syms);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">put_symbol</a>(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>&amp; sym);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e">put_symbols</a>(std::vector&lt;decomp::symbol_t&gt;&amp; syms);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::optional&lt;decomp::symbol_t*&gt; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(std::size_t hash);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::optional&lt;decomp::symbol_t*&gt; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#abaea9fd899d87b09d60c2b815624e2d2">sym_from_alloc</a>(std::uintptr_t allocated_at);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">for_each</a>(<a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>&amp; sym)&gt; fn);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::uint32_t <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">size</a>();</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::map&lt;std::size_t, decomp::symbol_t&gt; m_table;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;};</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;} <span class="comment">// namespace theo::recomp</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></div><div class="ttdoc">symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00053">symbol.hpp:53</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></div><div class="ttdoc">this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d5e/symbol__table_8hpp_source.html#l00045">symbol_table.hpp:45</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_a308c0dbcc4d569467e0986b32ef30db5"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">theo::recomp::symbol_table_t::sym_from_hash</a></div><div class="ttdeci">std::optional&lt; decomp::symbol_t * &gt; sym_from_hash(std::size_t hash)</div><div class="ttdoc">returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00054">symbol_table.cpp:54</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_a35008ba37814a94209cf979302e13e6d"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">theo::recomp::symbol_table_t::for_each</a></div><div class="ttdeci">void for_each(std::function&lt; void(decomp::symbol_t &amp;sym)&gt; fn)</div><div class="ttdoc">this function is a wrapper function that allows you to get at each entry in the symbol table by refer...</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00049">symbol_table.cpp:49</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_abaea9fd899d87b09d60c2b815624e2d2"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#abaea9fd899d87b09d60c2b815624e2d2">theo::recomp::symbol_table_t::sym_from_alloc</a></div><div class="ttdeci">std::optional&lt; decomp::symbol_t * &gt; sym_from_alloc(std::uintptr_t allocated_at)</div><div class="ttdoc">returns an optional pointer to a symbol given its allocation location.</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00060">symbol_table.cpp:60</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_ad06d4004c0cb454b1ffe7e2ae2ccedf5"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">theo::recomp::symbol_table_t::symbol_table_t</a></div><div class="ttdeci">symbol_table_t()</div><div class="ttdoc">default constructor. does nothing.</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d5e/symbol__table_8hpp_source.html#l00050">symbol_table.hpp:50</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_ae7c35d9336f67d3175910c028e0b9b3e"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e">theo::recomp::symbol_table_t::put_symbols</a></div><div class="ttdeci">void put_symbols(std::vector&lt; decomp::symbol_t &gt; &amp;syms)</div><div class="ttdoc">add a vector of symbol to m_table</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00044">symbol_table.cpp:44</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_af57c0495a442ea86af0f9cca4521631e"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">theo::recomp::symbol_table_t::size</a></div><div class="ttdeci">std::uint32_t size()</div><div class="ttdoc">returns the size of the symbol table.</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00072">symbol_table.cpp:72</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_af9caf2d4d97b2498aa624c3750a7a601"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">theo::recomp::symbol_table_t::put_symbol</a></div><div class="ttdeci">void put_symbol(decomp::symbol_t &amp;sym)</div><div class="ttdoc">add symbol to m_table</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00040">symbol_table.cpp:40</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">theo::decomp::function</a></div><div class="ttdeci">@ function</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00043">symbol.hpp:43</a></div></div>
<div class="ttc" id="anamespacetheo_1_1recomp_html"><div class="ttname"><a href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></div><div class="ttdoc">this namespace encompasses all recomposition related code.</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/d4a/recomp_8hpp_source.html#l00039">recomp.hpp:39</a></div></div>
<div class="ttc" id="asymbol_8hpp_html"><div class="ttname"><a href="../../d6/d62/symbol_8hpp.html">symbol.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,39 +0,0 @@
digraph "include/obf/transform/transform.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/transform/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="obf/transform/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node12 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="obf/transform/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node13 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="obf/transform/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node14 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="obf/transform/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node15 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,133 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/xor_op.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="../../dir_fa1ee7704f0ab8e5fd961a68bf21be50.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">xor_op.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d0/da4/xor__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/da4/operation_8hpp.html">obf/transform/operation.hpp</a>&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a> {</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a> : <span class="keyword">public</span> <a class="code" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a> {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>()</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; : <a class="code" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val ^ imm; },</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; XED_ICLASS_XOR) {}</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff"> 42</a></span>&#160; <span class="keyword">static</span> <a class="code" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>* <a class="code" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff">get</a>() {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">static</span> <a class="code" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a> obj;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;} <span class="comment">// namespace theo::obf::transform</span></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html"><div class="ttname"><a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></div><div class="ttdoc">operation_t is the base class for all types of transformations. classes that inherit this class are s...</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/da4/operation_8hpp_source.html#l00061">operation.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html_a3876ca1c7904aed54940e1519fc9fdf4"><div class="ttname"><a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">theo::obf::transform::operation_t::operation_t</a></div><div class="ttdeci">operation_t(transform_t op, xed_iclass_enum_t type)</div><div class="ttdoc">explicit constructor for operation_t</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/da4/operation_8hpp_source.html#l00069">operation.hpp:69</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1xor__op__t_html"><div class="ttname"><a href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">theo::obf::transform::xor_op_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/da4/xor__op_8hpp_source.html#l00035">xor_op.hpp:35</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1xor__op__t_html_a0b6fa0329ed132c090d72feb77a0ffff"><div class="ttname"><a href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff">theo::obf::transform::xor_op_t::get</a></div><div class="ttdeci">static xor_op_t * get()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/da4/xor__op_8hpp_source.html#l00042">xor_op.hpp:42</a></div></div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html"><div class="ttname"><a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></div><div class="ttdoc">this namespace encompasses the code for transforming relocations.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/def/add__op_8hpp_source.html#l00034">add_op.hpp:34</a></div></div>
<div class="ttc" id="aoperation_8hpp_html"><div class="ttname"><a href="../../d5/da4/operation_8hpp.html">operation.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::xor_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::xor_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,25 +0,0 @@
digraph "include/obf/transform/xor_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
}

@ -1,9 +0,0 @@
digraph "include/theo.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/theo.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="src/theo.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d26/theo_8cpp.html",tooltip=" "];
}

@ -1,160 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/reloc.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_d92462d752f7a277bbc0245a347b2579.html">recomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">reloc.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d1/d82/reloc_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d6/deb/transform_8hpp.html">obf/transform/transform.hpp</a>&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a> {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">reloc_t</a> {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548"> 52</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">reloc_t</a>(std::uint32_t <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::size_t <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> std::string&amp;&amp; sym_name)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; : m_offset(<a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>), m_hash(<a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>), m_sym_name(sym_name) {}</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461"> 61</a></span>&#160; std::size_t <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>() { <span class="keywordflow">return</span> m_hash; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec"> 67</a></span>&#160; std::string <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">name</a>() { <span class="keywordflow">return</span> m_sym_name; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323"> 75</a></span>&#160; std::uint32_t <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>() { <span class="keywordflow">return</span> m_offset; }</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd"> 82</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a>(std::uint32_t <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>) { m_offset = <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a>; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10"> 91</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">add_transform</a>(</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt; entry) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; m_transforms.push_back(entry);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&gt;&amp;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec"> 101</a></span>&#160; <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">get_transforms</a>() {</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> m_transforms;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; std::vector&lt;std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&gt;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; m_transforms;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; std::string m_sym_name;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; std::size_t m_hash;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; std::uint32_t m_offset;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;} <span class="comment">// namespace theo::recomp</span></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></div><div class="ttdoc">meta data about a relocation for a symbol</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00041">reloc.hpp:41</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_a537836fcea3326e4269375a1486f0323"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">theo::recomp::reloc_t::offset</a></div><div class="ttdeci">std::uint32_t offset()</div><div class="ttdoc">returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00075">reloc.hpp:75</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_a7cb1cf1c58a6f3cdf7ae326d65948548"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">theo::recomp::reloc_t::reloc_t</a></div><div class="ttdeci">reloc_t(std::uint32_t offset, std::size_t hash, const std::string &amp;&amp;sym_name)</div><div class="ttdoc">explicit constructor for this class.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00052">reloc.hpp:52</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_a99e65270ace1ff4f080bd4040c8a43dd"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">theo::recomp::reloc_t::offset</a></div><div class="ttdeci">void offset(std::uint32_t offset)</div><div class="ttdoc">sets the offset to which the relocation gets applied too.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00082">reloc.hpp:82</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_aa181755df50bc566b164072b21788fec"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">theo::recomp::reloc_t::name</a></div><div class="ttdeci">std::string name()</div><div class="ttdoc">returns the name of the relocation symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00067">reloc.hpp:67</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_aa340b2c2d5d1ac7f96a1dbee39f25461"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">theo::recomp::reloc_t::hash</a></div><div class="ttdeci">std::size_t hash()</div><div class="ttdoc">returns the hash of the relocation symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00061">reloc.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_ab5214a9ff9135672e25f40406c37fb10"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">theo::recomp::reloc_t::add_transform</a></div><div class="ttdeci">void add_transform(std::pair&lt; obf::transform::transform_t *, std::uint32_t &gt; entry)</div><div class="ttdoc">adds a transformation to be applied to the relocation prior to writing it into the symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00091">reloc.hpp:91</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html_ad49901bf8b6b0e3963e64d17d4b51aec"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">theo::recomp::reloc_t::get_transforms</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; obf::transform::transform_t *, std::uint32_t &gt; &gt; &amp; get_transforms()</div><div class="ttdoc">gets the vector of transformation.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00101">reloc.hpp:101</a></div></div>
<div class="ttc" id="anamespacetheo_1_1recomp_html"><div class="ttname"><a href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></div><div class="ttdoc">this namespace encompasses all recomposition related code.</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/d4a/recomp_8hpp_source.html#l00039">recomp.hpp:39</a></div></div>
<div class="ttc" id="atransform_8hpp_html"><div class="ttname"><a href="../../d6/deb/transform_8hpp.html">transform.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::rol_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::rol_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,25 +0,0 @@
digraph "include/obf/transform/rol_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
}

@ -1,25 +0,0 @@
digraph "include/obf/transform/ror_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
}

@ -1,68 +0,0 @@
digraph "include/obf/engine.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/engine.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="algorithm",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5a/pass_8hpp.html",tooltip=" "];
Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d62/symbol_8hpp.html",tooltip=" "];
Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="coff/image.hpp",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="cstdint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/d82/reloc_8hpp.html",tooltip=" "];
Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="cstddef",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node8 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="obf/transform/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="obf/transform/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node12 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node10 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 [label="obf/transform/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node20 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 [label="obf/transform/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node21 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node22 [label="obf/transform/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node22 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 [label="obf/transform/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 [label="string",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node5 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node25 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node3 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node26 [label="obf/transform/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d18/gen_8hpp.html",tooltip=" "];
Node26 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node26 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,83 +0,0 @@
digraph "include/obf/transform/operation.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="include/obf/passes\l/reloc_transform_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d64/reloc__transform__pass_8hpp.html",tooltip=" "];
Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="include/theo.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d24/theo_8hpp.html",tooltip=" "];
Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="src/theo.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d26/theo_8cpp.html",tooltip=" "];
Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="src/obf/passes/reloc\l_transform_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/da4/reloc__transform__pass_8cpp.html",tooltip=" "];
Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="include/obf/transform\l/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="include/obf/transform\l/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node7 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="include/obf/transform\l/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d18/gen_8hpp.html",tooltip=" "];
Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="include/obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5a/pass_8hpp.html",tooltip=" "];
Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="include/obf/engine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d46/engine_8hpp.html",tooltip=" "];
Node10 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="include/recomp/recomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/d4a/recomp_8hpp.html",tooltip=" "];
Node11 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="src/recomp/recomp.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$db/d55/recomp_8cpp.html",tooltip=" "];
Node10 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="src/obf/engine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d5c/engine_8cpp.html",tooltip=" "];
Node9 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="include/obf/passes\l/jcc_rewrite_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/df9/jcc__rewrite__pass_8hpp.html",tooltip=" "];
Node14 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="src/obf/passes/jcc\l_rewrite_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/db4/jcc__rewrite__pass_8cpp.html",tooltip=" "];
Node9 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="include/obf/passes\l/next_inst_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d54/next__inst__pass_8hpp.html",tooltip=" "];
Node16 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="src/obf/passes/next\l_inst_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d7d/next__inst__pass_8cpp.html",tooltip=" "];
Node9 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="include/recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/d82/reloc_8hpp.html",tooltip=" "];
Node18 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 [label="include/decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d62/symbol_8hpp.html",tooltip=" "];
Node19 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 [label="include/decomp/routine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/df5/routine_8hpp.html",tooltip=" "];
Node20 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 [label="include/decomp/decomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d96/decomp_8hpp.html",tooltip=" "];
Node21 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node22 [label="src/decomp/decomp.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d83/decomp_8cpp.html",tooltip=" "];
Node20 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 [label="src/decomp/routine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/dbb/routine_8cpp.html",tooltip=" "];
Node19 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 [label="include/recomp/symbol\l_table.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/d5e/symbol__table_8hpp.html",tooltip=" "];
Node24 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node25 [label="src/recomp/symbol_table.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d0c/symbol__table_8cpp.html",tooltip=" "];
Node19 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node26 [label="src/decomp/symbol.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d67/symbol_8cpp.html",tooltip=" "];
Node18 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node27 [label="include/obf/transform\l/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node27 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node28 [label="include/obf/transform\l/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node28 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node29 [label="include/obf/transform\l/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node29 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node1 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node30 [label="include/obf/transform\l/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node30 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,133 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/add_op.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="../../dir_fa1ee7704f0ab8e5fd961a68bf21be50.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">add_op.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d1/def/add__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/da4/operation_8hpp.html">obf/transform/operation.hpp</a>&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html"> 34</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a> {</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> : <span class="keyword">public</span> <a class="code" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a> {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>()</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; : <a class="code" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val + imm; },</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; XED_ICLASS_ADD) {}</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb"> 42</a></span>&#160; <span class="keyword">static</span> <a class="code" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>* <a class="code" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">get</a>() {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> obj;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;} <span class="comment">// namespace theo::obf::transform</span></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1add__op__t_html"><div class="ttname"><a href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">theo::obf::transform::add_op_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d1/def/add__op_8hpp_source.html#l00035">add_op.hpp:35</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1add__op__t_html_a6edc3dd58a94709b395cd928edc47fbb"><div class="ttname"><a href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">theo::obf::transform::add_op_t::get</a></div><div class="ttdeci">static add_op_t * get()</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/def/add__op_8hpp_source.html#l00042">add_op.hpp:42</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html"><div class="ttname"><a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></div><div class="ttdoc">operation_t is the base class for all types of transformations. classes that inherit this class are s...</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/da4/operation_8hpp_source.html#l00061">operation.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html_a3876ca1c7904aed54940e1519fc9fdf4"><div class="ttname"><a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">theo::obf::transform::operation_t::operation_t</a></div><div class="ttdeci">operation_t(transform_t op, xed_iclass_enum_t type)</div><div class="ttdoc">explicit constructor for operation_t</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/da4/operation_8hpp_source.html#l00069">operation.hpp:69</a></div></div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html"><div class="ttname"><a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></div><div class="ttdoc">this namespace encompasses the code for transforming relocations.</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/def/add__op_8hpp_source.html#l00034">add_op.hpp:34</a></div></div>
<div class="ttc" id="aoperation_8hpp_html"><div class="ttname"><a href="../../d5/da4/operation_8hpp.html">operation.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::rol_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::rol_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,172 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/theo.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d2/d24/theo_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d2/d96/decomp_8hpp.html">decomp/decomp.hpp</a>&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../de/d46/engine_8hpp.html">obf/engine.hpp</a>&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d4/d4a/recomp_8hpp.html">recomp/recomp.hpp</a>&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d0/d5e/symbol__table_8hpp.html">recomp/symbol_table.hpp</a>&gt;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d2/df9/jcc__rewrite__pass_8hpp.html">obf/passes/jcc_rewrite_pass.hpp</a>&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d5/d54/next__inst__pass_8hpp.html">obf/passes/next_inst_pass.hpp</a>&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../de/d64/reloc__transform__pass_8hpp.html">obf/passes/reloc_transform_pass.hpp</a>&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;tuple&gt;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="../../d2/d24/theo_8hpp.html#a3925943d185a09ad9e32ed8637ccb533"> 46</a></span>&#160;<span class="preprocessor">#define XED_ENCODER</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;xed-decode.h&gt;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;xed-interface.h&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../da/de6/namespacetheo.html">theo</a> {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680"> 60</a></span>&#160;<span class="keyword">using</span> <a class="code" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a> =</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; std::tuple&lt;recomp::allocator_t, recomp::copier_t, recomp::resolver_t&gt;;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html">theo_t</a> {</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo_t</a>(std::vector&lt;std::uint8_t&gt;&amp; lib,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a> lnkr_fns,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> std::string&amp;&amp; entry_sym);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; std::optional&lt;std::uint32_t&gt; <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a">decompose</a>();</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; std::uintptr_t <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">compose</a>();</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; std::uintptr_t <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">resolve</a>(<span class="keyword">const</span> std::string&amp;&amp; sym);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; std::string m_entry_sym;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">decomp::decomp_t</a> m_dcmp;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">recomp::recomp_t</a> m_recmp;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> m_sym_tbl;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;};</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;} <span class="comment">// namespace theo</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></div><div class="ttdoc">the main decomposition class which is responsible for breaking down lib file into coff files,...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00061">decomp.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></div><div class="ttdoc">the main class responsible for recomposition</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/d4a/recomp_8hpp_source.html#l00064">recomp.hpp:64</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></div><div class="ttdoc">this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d5e/symbol__table_8hpp_source.html#l00045">symbol_table.hpp:45</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html">theo::theo_t</a></div><div class="ttdoc">the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge ...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d24/theo_8hpp_source.html#l00070">theo.hpp:70</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a0a9ae3322261b97cf1dc47c908ef3c6d"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo::theo_t::theo_t</a></div><div class="ttdeci">theo_t(std::vector&lt; std::uint8_t &gt; &amp;lib, lnk_fns_t lnkr_fns, const std::string &amp;&amp;entry_sym)</div><div class="ttdoc">explicit constructor for theo class.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00034">theo.cpp:34</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a39e067dd71f82b437c6a418d41e38b27"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">theo::theo_t::compose</a></div><div class="ttdeci">std::uintptr_t compose()</div><div class="ttdoc">compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each ...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00056">theo.cpp:56</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a66257ff5d9825483d85e58384a12760a"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a">theo::theo_t::decompose</a></div><div class="ttdeci">std::optional&lt; std::uint32_t &gt; decompose()</div><div class="ttdoc">decomposes the lib file and return the number of symbols that are used.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00045">theo.cpp:45</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a97c52bda4b07a456ff1ea6f3c1cdbe24"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">theo::theo_t::resolve</a></div><div class="ttdeci">std::uintptr_t resolve(const std::string &amp;&amp;sym)</div><div class="ttdoc">given the name of a symbol, it returns the address of where its mapped.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00068">theo.cpp:68</a></div></div>
<div class="ttc" id="adecomp_8hpp_html"><div class="ttname"><a href="../../d2/d96/decomp_8hpp.html">decomp.hpp</a></div></div>
<div class="ttc" id="aengine_8hpp_html"><div class="ttname"><a href="../../de/d46/engine_8hpp.html">engine.hpp</a></div></div>
<div class="ttc" id="ajcc__rewrite__pass_8hpp_html"><div class="ttname"><a href="../../d2/df9/jcc__rewrite__pass_8hpp.html">jcc_rewrite_pass.hpp</a></div></div>
<div class="ttc" id="anamespacetheo_html"><div class="ttname"><a href="../../da/de6/namespacetheo.html">theo</a></div><div class="ttdoc">The outer most encompassing namespace of this project.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00049">decomp.hpp:49</a></div></div>
<div class="ttc" id="anamespacetheo_html_a66efe2c63e06764fb2d9a378c688c680"><div class="ttname"><a href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">theo::lnk_fns_t</a></div><div class="ttdeci">std::tuple&lt; recomp::allocator_t, recomp::copier_t, recomp::resolver_t &gt; lnk_fns_t</div><div class="ttdoc">tuple of functions used by theo to allocate, copy, and resolve symbols.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d24/theo_8hpp_source.html#l00060">theo.hpp:61</a></div></div>
<div class="ttc" id="anext__inst__pass_8hpp_html"><div class="ttname"><a href="../../d5/d54/next__inst__pass_8hpp.html">next_inst_pass.hpp</a></div></div>
<div class="ttc" id="arecomp_8hpp_html"><div class="ttname"><a href="../../d4/d4a/recomp_8hpp.html">recomp.hpp</a></div></div>
<div class="ttc" id="areloc__transform__pass_8hpp_html"><div class="ttname"><a href="../../de/d64/reloc__transform__pass_8hpp.html">reloc_transform_pass.hpp</a></div></div>
<div class="ttc" id="asymbol__table_8hpp_html"><div class="ttname"><a href="../../d0/d5e/symbol__table_8hpp.html">symbol_table.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,174 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/theo.cpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d2/d26/theo_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d2/d24/theo_8hpp.html">theo.hpp</a>&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../da/de6/namespacetheo.html">theo</a> {</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d"> 34</a></span>&#160;<a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo_t::theo_t</a>(std::vector&lt;std::uint8_t&gt;&amp; lib,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a> lnkr_fns,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> std::string&amp;&amp; entry_sym)</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; : m_dcmp(lib, &amp;m_sym_tbl),</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; m_recmp(&amp;m_dcmp, {}, {}, {}),</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; m_entry_sym(entry_sym) {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">allocator</a>(std::get&lt;0&gt;(lnkr_fns));</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">copier</a>(std::get&lt;1&gt;(lnkr_fns));</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">resolver</a>(std::get&lt;2&gt;(lnkr_fns));</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a"> 45</a></span>&#160;std::optional&lt;std::uint32_t&gt; <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a">theo_t::decompose</a>() {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">auto</span> res = m_dcmp.<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">decompose</a>(m_entry_sym);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (!res.has_value()) {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; spdlog::error(<span class="stringliteral">&quot;failed to decompose...\n&quot;</span>);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; spdlog::info(<span class="stringliteral">&quot;decompose successful... {} symbols&quot;</span>, res.value()-&gt;size());</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> res.value()-&gt;size();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27"> 56</a></span>&#160;std::uintptr_t <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">theo_t::compose</a>() {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// run obfuscation engine on all symbols...</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">auto</span> engine = <a class="code" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">obf::engine_t::get</a>();</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; m_sym_tbl.<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">for_each</a>([&amp;](<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>&amp; sym) { engine-&gt;run(&amp;sym); });</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">allocate</a>();</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>();</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">copy_syms</a>();</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> m_recmp.<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>(m_entry_sym.data());</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24"> 68</a></span>&#160;std::uintptr_t <a class="code" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">theo_t::resolve</a>(<span class="keyword">const</span> std::string&amp;&amp; sym) {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">auto</span> val = m_sym_tbl.<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">decomp::symbol_t::hash</a>(sym));</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> (!val.has_value())</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> {};</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> val.value()-&gt;allocated_at();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;} <span class="comment">// namespace theo</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_ae23353a4293aa30969b6d3fa37359469"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">theo::decomp::decomp_t::decompose</a></div><div class="ttdeci">std::optional&lt; recomp::symbol_table_t * &gt; decompose(std::string &amp;entry_sym)</div><div class="ttdoc">decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00037">decomp.cpp:37</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></div><div class="ttdoc">symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00053">symbol.hpp:53</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a8695d75670cc4d61d275464e9109ff06"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">theo::decomp::symbol_t::hash</a></div><div class="ttdeci">std::size_t hash()</div><div class="ttdoc">gets the hash of the symbol name.</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d67/symbol_8cpp_source.html#l00088">symbol.cpp:88</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1engine__t_html_a58715f5c3ade824a65e602aba570040e"><div class="ttname"><a href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">theo::obf::engine_t::get</a></div><div class="ttdeci">static engine_t * get()</div><div class="ttdoc">get the singleton object of this class.</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d5c/engine_8cpp_source.html#l00034">engine.cpp:34</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_a080d88f122d12faf2e328c9bdd10be6e"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">theo::recomp::recomp_t::copy_syms</a></div><div class="ttdeci">void copy_syms()</div><div class="ttdoc">when called, this function copies symbols into allocations.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00155">recomp.cpp:155</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_a0da9a904b0057c14190218592aff0f07"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">theo::recomp::recomp_t::allocator</a></div><div class="ttdeci">void allocator(allocator_t alloc)</div><div class="ttdoc">setter for the allocater lambda function.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00163">recomp.cpp:163</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_a1be6d0cdb57565c31b138248c8b2d470"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">theo::recomp::recomp_t::resolver</a></div><div class="ttdeci">void resolver(resolver_t resolve)</div><div class="ttdoc">setter for the resolve lambda function.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00171">recomp.cpp:171</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_a299fbede378f04991df2e39293307094"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">theo::recomp::recomp_t::resolve</a></div><div class="ttdeci">void resolve()</div><div class="ttdoc">when called, this function resolves all relocations in every symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00092">recomp.cpp:92</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_a78502665e218d3addca9b1e5e3875f39"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">theo::recomp::recomp_t::allocate</a></div><div class="ttdeci">void allocate()</div><div class="ttdoc">when called, this function allocates space for every symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00040">recomp.cpp:40</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1recomp__t_html_aa6fecf752d4c5bc211e164d8496724b1"><div class="ttname"><a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">theo::recomp::recomp_t::copier</a></div><div class="ttdeci">void copier(copier_t copy)</div><div class="ttdoc">setter for the copier lambda function.</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d55/recomp_8cpp_source.html#l00167">recomp.cpp:167</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_a308c0dbcc4d569467e0986b32ef30db5"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">theo::recomp::symbol_table_t::sym_from_hash</a></div><div class="ttdeci">std::optional&lt; decomp::symbol_t * &gt; sym_from_hash(std::size_t hash)</div><div class="ttdoc">returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00054">symbol_table.cpp:54</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html_a35008ba37814a94209cf979302e13e6d"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d">theo::recomp::symbol_table_t::for_each</a></div><div class="ttdeci">void for_each(std::function&lt; void(decomp::symbol_t &amp;sym)&gt; fn)</div><div class="ttdoc">this function is a wrapper function that allows you to get at each entry in the symbol table by refer...</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d0c/symbol__table_8cpp_source.html#l00049">symbol_table.cpp:49</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a0a9ae3322261b97cf1dc47c908ef3c6d"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo::theo_t::theo_t</a></div><div class="ttdeci">theo_t(std::vector&lt; std::uint8_t &gt; &amp;lib, lnk_fns_t lnkr_fns, const std::string &amp;&amp;entry_sym)</div><div class="ttdoc">explicit constructor for theo class.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00034">theo.cpp:34</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a39e067dd71f82b437c6a418d41e38b27"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27">theo::theo_t::compose</a></div><div class="ttdeci">std::uintptr_t compose()</div><div class="ttdoc">compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each ...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00056">theo.cpp:56</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a66257ff5d9825483d85e58384a12760a"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a">theo::theo_t::decompose</a></div><div class="ttdeci">std::optional&lt; std::uint32_t &gt; decompose()</div><div class="ttdoc">decomposes the lib file and return the number of symbols that are used.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00045">theo.cpp:45</a></div></div>
<div class="ttc" id="aclasstheo_1_1theo__t_html_a97c52bda4b07a456ff1ea6f3c1cdbe24"><div class="ttname"><a href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24">theo::theo_t::resolve</a></div><div class="ttdeci">std::uintptr_t resolve(const std::string &amp;&amp;sym)</div><div class="ttdoc">given the name of a symbol, it returns the address of where its mapped.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d26/theo_8cpp_source.html#l00068">theo.cpp:68</a></div></div>
<div class="ttc" id="anamespacetheo_html"><div class="ttname"><a href="../../da/de6/namespacetheo.html">theo</a></div><div class="ttdoc">The outer most encompassing namespace of this project.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00049">decomp.hpp:49</a></div></div>
<div class="ttc" id="anamespacetheo_html_a66efe2c63e06764fb2d9a378c688c680"><div class="ttname"><a href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">theo::lnk_fns_t</a></div><div class="ttdeci">std::tuple&lt; recomp::allocator_t, recomp::copier_t, recomp::resolver_t &gt; lnk_fns_t</div><div class="ttdoc">tuple of functions used by theo to allocate, copy, and resolve symbols.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d24/theo_8hpp_source.html#l00060">theo.hpp:61</a></div></div>
<div class="ttc" id="atheo_8hpp_html"><div class="ttname"><a href="../../d2/d24/theo_8hpp.html">theo.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,45 +0,0 @@
digraph "include/recomp/reloc.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="cstddef",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="cstdint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="obf/transform/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="obf/transform/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node6 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="obf/transform/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node15 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="obf/transform/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node16 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="obf/transform/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node17 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="obf/transform/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node18 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,64 +0,0 @@
digraph "src/decomp/routine.cpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="src/decomp/routine.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="decomp/routine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/df5/routine_8hpp.html",tooltip=" "];
Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="string",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d62/symbol_8hpp.html",tooltip=" "];
Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="coff/image.hpp",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="cstdint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/d82/reloc_8hpp.html",tooltip=" "];
Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="cstddef",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node10 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="obf/transform/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="obf/transform/add_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/def/add__op_8hpp.html",tooltip=" "];
Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="obf/transform/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/da4/operation_8hpp.html",tooltip=" "];
Node14 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node14 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node12 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 [label="obf/transform/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d8a/rol__op_8hpp.html",tooltip=" "];
Node21 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node22 [label="obf/transform/ror_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d34/ror__op_8hpp.html",tooltip=" "];
Node22 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 [label="obf/transform/sub_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da9/sub__op_8hpp.html",tooltip=" "];
Node23 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 [label="obf/transform/xor_op.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/da4/xor__op_8hpp.html",tooltip=" "];
Node24 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,178 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/decomp/decomp.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_2ff93ba14c434dbcd5d31be832ec37b1.html">decomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">decomp.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d2/d96/decomp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;linuxpe&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;tuple&gt;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../de/df5/routine_8hpp.html">decomp/routine.hpp</a>&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d0/d5e/symbol__table_8hpp.html">recomp/symbol_table.hpp</a>&gt;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;coff/archive.hpp&gt;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;coff/image.hpp&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../da/de6/namespacetheo.html"> 49</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a> {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266"> 55</a></span>&#160;<span class="keyword">using</span> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">sym_data_t</a> = std::tuple&lt;coff::image_t*, coff::symbol_t*, std::uint32_t&gt;;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html"> 61</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">decomp_t</a> {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">decomp_t</a>(std::vector&lt;std::uint8_t&gt;&amp; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a>* <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::vector&lt;routine_t&gt; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a79c965ec0a996a936faae7f54b0e055e">rtns</a>();</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; std::vector&lt;std::uint8_t&gt; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>();</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; std::vector&lt;std::vector&lt;std::uint8_t&gt;&gt; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef">objs</a>();</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a>* <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>();</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; std::map&lt;coff::section_header_t*, std::size_t&gt;&amp; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06">scn_hash_tbl</a>();</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::optional&lt;recomp::symbol_table_t*&gt; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">decompose</a>(std::string&amp; entry_sym);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::uint32_t ext_used_syms(<span class="keyword">const</span> std::string&amp;&amp; entry_sym);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; std::optional&lt;sym_data_t&gt; get_symbol(<span class="keyword">const</span> std::string_view&amp; name);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::uint32_t next_sym(coff::image_t* img,</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; coff::section_header_t* hdr,</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; coff::symbol_t* s);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> std::vector&lt;std::uint8_t&gt; m_lib;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::vector&lt;std::vector&lt;std::uint8_t&gt;&gt; m_objs;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; std::vector&lt;routine_t&gt; m_rtns;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::set&lt;sym_data_t&gt; m_used_syms;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; std::set&lt;coff::image_t*&gt; m_processed_objs;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; std::map&lt;coff::section_header_t*, std::size_t&gt; m_scn_hash_tbl;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; std::map&lt;std::size_t, std::vector&lt;sym_data_t&gt;&gt; m_lookup_tbl;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a>* m_syms;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;};</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;} <span class="comment">// namespace theo::decomp</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></div><div class="ttdoc">the main decomposition class which is responsible for breaking down lib file into coff files,...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00061">decomp.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_a35cfac16bd918d576b29e04388690d68"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">theo::decomp::decomp_t::decomp_t</a></div><div class="ttdeci">decomp_t(std::vector&lt; std::uint8_t &gt; &amp;lib, recomp::symbol_table_t *syms)</div><div class="ttdoc">the explicit constructor for decomp_t</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00034">decomp.cpp:34</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_a79c965ec0a996a936faae7f54b0e055e"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a79c965ec0a996a936faae7f54b0e055e">theo::decomp::decomp_t::rtns</a></div><div class="ttdeci">std::vector&lt; routine_t &gt; rtns()</div><div class="ttdoc">gets all of the routine objects.</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00281">decomp.cpp:281</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_a81ae70b313a9ef24ea5d8f404699baef"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef">theo::decomp::decomp_t::objs</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; std::uint8_t &gt; &gt; objs()</div><div class="ttdoc">gets all the obj files as a vector of a vector of bytes.</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00289">decomp.cpp:289</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_a860dddc3a5d12231b685dbaa12a0db06"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06">theo::decomp::decomp_t::scn_hash_tbl</a></div><div class="ttdeci">std::map&lt; coff::section_header_t *, std::size_t &gt; &amp; scn_hash_tbl()</div><div class="ttdoc">gets the section hash table section header --&gt; hash of the section header ptr.</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00297">decomp.cpp:297</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_a8630f2ee0f4fb9516f5b20014e4c6120"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">theo::decomp::decomp_t::syms</a></div><div class="ttdeci">recomp::symbol_table_t * syms()</div><div class="ttdoc">gets the symbol table.</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00293">decomp.cpp:293</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_aa728bde8ec1c5c28ec09f86adf427ae2"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">theo::decomp::decomp_t::lib</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; lib()</div><div class="ttdoc">gets a vector of bytes consisting of the lib file.</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00285">decomp.cpp:285</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1decomp__t_html_ae23353a4293aa30969b6d3fa37359469"><div class="ttname"><a href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">theo::decomp::decomp_t::decompose</a></div><div class="ttdeci">std::optional&lt; recomp::symbol_table_t * &gt; decompose(std::string &amp;entry_sym)</div><div class="ttdoc">decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d83/decomp_8cpp_source.html#l00037">decomp.cpp:37</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1symbol__table__t_html"><div class="ttname"><a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></div><div class="ttdoc">this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d5e/symbol__table_8hpp_source.html#l00045">symbol_table.hpp:45</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></div><div class="ttdoc">the namespace that contains all of the decomposition related code.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00049">decomp.hpp:49</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_abbf09e1f7eb9e42057ff9c9e8be41266"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">theo::decomp::sym_data_t</a></div><div class="ttdeci">std::tuple&lt; coff::image_t *, coff::symbol_t *, std::uint32_t &gt; sym_data_t</div><div class="ttdoc">meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself,...</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00055">decomp.hpp:55</a></div></div>
<div class="ttc" id="aroutine_8hpp_html"><div class="ttname"><a href="../../de/df5/routine_8hpp.html">routine.hpp</a></div></div>
<div class="ttc" id="asymbol__table_8hpp_html"><div class="ttname"><a href="../../d0/d5e/symbol__table_8hpp.html">symbol_table.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,268 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/routine.cpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="../../dir_1a96c2bb8e6464c69de5f985611044b4.html">decomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">routine.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d2/dbb/routine_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../de/df5/routine_8hpp.html">decomp/routine.hpp</a>&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a> {</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b"> 34</a></span>&#160;<a class="code" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b">routine_t::routine_t</a>(coff::symbol_t* sym,</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; coff::image_t* img,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; coff::section_header_t* scn,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; std::vector&lt;std::uint8_t&gt;&amp; fn,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a> dcmp_type)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; : m_img(img), m_scn(scn), m_data(fn), m_dcmp_type(dcmp_type), m_sym(sym) {}</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8"> 41</a></span>&#160;std::vector&lt;decomp::symbol_t&gt; <a class="code" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8">routine_t::decompose</a>() {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;decomp::symbol_t&gt; result;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">switch</span> (m_dcmp_type) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <span class="keyword">function</span>: {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">auto</span> scn_relocs = <span class="keyword">reinterpret_cast&lt;</span>coff::reloc_t*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; m_scn-&gt;ptr_relocs + <span class="keyword">reinterpret_cast&lt;</span>std::uint8_t*<span class="keyword">&gt;</span>(m_img));</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> idx = 0u; idx &lt; m_scn-&gt;num_relocs; ++idx) {</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">auto</span> scn_reloc = &amp;scn_relocs[idx];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// if the reloc is in the current function...</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (scn_reloc-&gt;virtual_address &gt;= m_sym-&gt;value &amp;&amp;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; scn_reloc-&gt;virtual_address &lt; m_sym-&gt;value + m_data.size()) {</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">auto</span> sym_reloc = m_img-&gt;get_symbol(scn_relocs[idx].symbol_index);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">auto</span> sym_name = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(m_img, sym_reloc);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">auto</span> sym_hash = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">decomp::symbol_t::hash</a>(sym_name.data());</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; relocs.push_back(</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a>(scn_reloc-&gt;virtual_address - m_sym-&gt;value,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; sym_hash, sym_name.data()));</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; result.push_back(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>(</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; m_img, <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(m_img, m_sym).<a class="code" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a">data</a>(), m_sym-&gt;value, m_data,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; m_scn, m_sym, relocs, <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">sym_type_t::function</a>));</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a>: {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; std::uint32_t offset = {};</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; xed_error_enum_t err;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; xed_decoded_inst_t instr;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; xed_decoded_inst_zero_set_mode(&amp;instr, &amp;istate);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// keep looping over the section, lower the number of bytes each time...</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">while</span> ((err = xed_decode(&amp;instr, m_data.data() + offset,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; m_data.size() - offset)) == XED_ERROR_NONE) {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// symbol name is of the format: symbol@instroffset, I.E: main@11...</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">auto</span> new_sym_name = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(m_img, m_sym);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// first instruction doesnt need the @offset...</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (offset)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; new_sym_name.append(<span class="stringliteral">&quot;@&quot;</span>).append(std::to_string(offset));</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">auto</span> scn_relocs = <span class="keyword">reinterpret_cast&lt;</span>coff::reloc_t*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; m_scn-&gt;ptr_relocs + <span class="keyword">reinterpret_cast&lt;</span>std::uint8_t*<span class="keyword">&gt;</span>(m_img));</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// find if this instruction has a relocation or not...</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// if so, return the reloc_t...</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">auto</span> reloc = std::find_if(</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; scn_relocs, scn_relocs + m_scn-&gt;num_relocs,</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; [&amp;](coff::reloc_t reloc) {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; return reloc.virtual_address &gt;= m_sym-&gt;value + offset &amp;&amp;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; reloc.virtual_address &lt;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; m_sym-&gt;value + offset +</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; xed_decoded_inst_get_length(&amp;instr);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; });</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// if there is indeed a reloc for this instruction...</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (reloc != scn_relocs + m_scn-&gt;num_relocs) {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">auto</span> sym_reloc = m_img-&gt;get_symbol(reloc-&gt;symbol_index);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">auto</span> sym_name = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(m_img, sym_reloc);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">auto</span> sym_hash = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">decomp::symbol_t::hash</a>(sym_name.data());</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">auto</span> reloc_offset = reloc-&gt;virtual_address - m_sym-&gt;value - offset;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; relocs.push_back(</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a>(reloc_offset, sym_hash, sym_name.data()));</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// add a reloc to the next instruction...</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// note that the offset is ZERO... comp_t will understand that</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// relocs with offset ZERO means the next instructions...</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">auto</span> next_inst_sym =</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(m_img, m_sym)</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; .append(<span class="stringliteral">&quot;@&quot;</span>)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; .append(std::to_string(offset +</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; xed_decoded_inst_get_length(&amp;instr)));</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; relocs.push_back(<a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a>(</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; 0, <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">decomp::symbol_t::hash</a>(next_inst_sym), next_inst_sym.data()));</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// get the instructions bytes</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; std::vector&lt;std::uint8_t&gt; inst_bytes(</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; m_data.data() + offset,</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; m_data.data() + offset + xed_decoded_inst_get_length(&amp;instr));</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; result.push_back(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>(m_img, new_sym_name, offset,</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; inst_bytes, m_scn, m_sym, relocs,</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">sym_type_t::instruction</a>));</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// after creating the symbol and dealing with relocs then print the</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// information we have concluded...</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">char</span> buff[255];</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; offset += xed_decoded_inst_get_length(&amp;instr);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xed_format_context(XED_SYNTAX_INTEL, &amp;instr, buff, <span class="keyword">sizeof</span> buff, NULL,</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; NULL, NULL);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; spdlog::info(<span class="stringliteral">&quot;{}: {}&quot;</span>, new_sym_name, buff);</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// need to set this so that instr can be used to decode again...</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; xed_decoded_inst_zero_set_mode(&amp;instr, &amp;istate);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// remove the relocation to the next symbol from the last instruction</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">auto</span>&amp; last_inst = result.back();</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">auto</span>&amp; last_inst_relocs = last_inst.relocs();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; last_inst_relocs.erase(last_inst_relocs.end() - 1);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36"> 168</a></span>&#160;coff::section_header_t* <a class="code" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36">routine_t::scn</a>() {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> m_scn;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a"> 172</a></span>&#160;std::vector&lt;std::uint8_t&gt; <a class="code" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a">routine_t::data</a>() {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> m_data;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;}</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;} <span class="comment">// namespace theo::decomp</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1routine__t_html_a1f790bd144badc71d6c4942cac8fc4e8"><div class="ttname"><a href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8">theo::decomp::routine_t::decompose</a></div><div class="ttdeci">std::vector&lt; decomp::symbol_t &gt; decompose()</div><div class="ttdoc">decompose the function into symbol(s).</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dbb/routine_8cpp_source.html#l00041">routine.cpp:41</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1routine__t_html_a605a2be669a10a5a45325a5dca04401a"><div class="ttname"><a href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a">theo::decomp::routine_t::data</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; data()</div><div class="ttdoc">gets the function bytes.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dbb/routine_8cpp_source.html#l00172">routine.cpp:172</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1routine__t_html_ab9f0693c5ec50954d953b28bebe4426b"><div class="ttname"><a href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b">theo::decomp::routine_t::routine_t</a></div><div class="ttdeci">routine_t(coff::symbol_t *sym, coff::image_t *img, coff::section_header_t *scn, std::vector&lt; std::uint8_t &gt; &amp;fn, sym_type_t dcmp_type)</div><div class="ttdoc">the explicit constructor for routine_t.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dbb/routine_8cpp_source.html#l00034">routine.cpp:34</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1routine__t_html_ad3a75cb97abbcd9b282772401b256f36"><div class="ttname"><a href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36">theo::decomp::routine_t::scn</a></div><div class="ttdeci">coff::section_header_t * scn()</div><div class="ttdoc">gets the section header of the section in which the symbol is located in.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dbb/routine_8cpp_source.html#l00168">routine.cpp:168</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></div><div class="ttdoc">symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00053">symbol.hpp:53</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a7c6dee036291ded334aa10d89293fc2a"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">theo::decomp::symbol_t::name</a></div><div class="ttdeci">std::string name() const</div><div class="ttdoc">gets the name of the symbol.</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d67/symbol_8cpp_source.html#l00052">symbol.cpp:52</a></div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a8695d75670cc4d61d275464e9109ff06"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">theo::decomp::symbol_t::hash</a></div><div class="ttdeci">std::size_t hash()</div><div class="ttdoc">gets the hash of the symbol name.</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d67/symbol_8cpp_source.html#l00088">symbol.cpp:88</a></div></div>
<div class="ttc" id="aclasstheo_1_1recomp_1_1reloc__t_html"><div class="ttname"><a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></div><div class="ttdoc">meta data about a relocation for a symbol</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d82/reloc_8hpp_source.html#l00041">reloc.hpp:41</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></div><div class="ttdoc">the namespace that contains all of the decomposition related code.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d96/decomp_8hpp_source.html#l00049">decomp.hpp:49</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">theo::decomp::sym_type_t</a></div><div class="ttdeci">sym_type_t</div><div class="ttdoc">meta symbol type. this is an abstraction upon the coff symbol storage/class type.</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00043">symbol.hpp:43</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">theo::decomp::instruction</a></div><div class="ttdeci">@ instruction</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00043">symbol.hpp:43</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">theo::decomp::function</a></div><div class="ttdeci">@ function</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00043">symbol.hpp:43</a></div></div>
<div class="ttc" id="aroutine_8hpp_html"><div class="ttname"><a href="../../de/df5/routine_8hpp.html">routine.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,68 +0,0 @@
digraph "include/obf/transform/rol_op.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/rol_op.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="include/obf/transform\l/transform.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/deb/transform_8hpp.html",tooltip=" "];
Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="include/obf/passes\l/reloc_transform_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d64/reloc__transform__pass_8hpp.html",tooltip=" "];
Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="include/theo.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d24/theo_8hpp.html",tooltip=" "];
Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="src/theo.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d26/theo_8cpp.html",tooltip=" "];
Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="src/obf/passes/reloc\l_transform_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/da4/reloc__transform__pass_8cpp.html",tooltip=" "];
Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="include/obf/transform\l/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d18/gen_8hpp.html",tooltip=" "];
Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="include/obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5a/pass_8hpp.html",tooltip=" "];
Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="include/obf/engine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d46/engine_8hpp.html",tooltip=" "];
Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="include/recomp/recomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/d4a/recomp_8hpp.html",tooltip=" "];
Node10 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="src/recomp/recomp.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$db/d55/recomp_8cpp.html",tooltip=" "];
Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="src/obf/engine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d5c/engine_8cpp.html",tooltip=" "];
Node8 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="include/obf/passes\l/jcc_rewrite_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/df9/jcc__rewrite__pass_8hpp.html",tooltip=" "];
Node13 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="src/obf/passes/jcc\l_rewrite_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/db4/jcc__rewrite__pass_8cpp.html",tooltip=" "];
Node8 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 [label="include/obf/passes\l/next_inst_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d54/next__inst__pass_8hpp.html",tooltip=" "];
Node15 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node15 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node16 [label="src/obf/passes/next\l_inst_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d7d/next__inst__pass_8cpp.html",tooltip=" "];
Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node17 [label="include/recomp/reloc.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d1/d82/reloc_8hpp.html",tooltip=" "];
Node17 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 [label="include/decomp/symbol.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d62/symbol_8hpp.html",tooltip=" "];
Node18 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node19 [label="include/decomp/routine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/df5/routine_8hpp.html",tooltip=" "];
Node19 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 [label="include/decomp/decomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d96/decomp_8hpp.html",tooltip=" "];
Node20 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node20 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node21 [label="src/decomp/decomp.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d83/decomp_8cpp.html",tooltip=" "];
Node19 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node22 [label="src/decomp/routine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/dbb/routine_8cpp.html",tooltip=" "];
Node18 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node18 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 [label="include/recomp/symbol\l_table.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/d5e/symbol__table_8hpp.html",tooltip=" "];
Node23 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node23 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node24 [label="src/recomp/symbol_table.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d0c/symbol__table_8cpp.html",tooltip=" "];
Node18 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node25 [label="src/decomp/symbol.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d67/symbol_8cpp.html",tooltip=" "];
Node17 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
}

@ -1,131 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/passes/jcc_rewrite_pass.hpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Theodosius
&#160;<span id="projectnumber">v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_ef99456410776b930b88f5850437ce61.html">obf</a></li><li class="navelem"><a class="el" href="../../dir_13fb3109ea9f625158dab961edf6214d.html">passes</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">jcc_rewrite_pass.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../d2/df9/jcc__rewrite__pass_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// All rights reserved.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../d8/d5a/pass_8hpp.html">obf/pass.hpp</a>&gt;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a> {</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html"> 61</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a> : <span class="keyword">public</span> <a class="code" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">pass_t</a> {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">explicit</span> <a class="code" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a>() : <a class="code" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a>(<a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>){};</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a>* <a class="code" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">get</a>();</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">run</a>(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a>* sym);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;};</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;} <span class="comment">// namespace theo::obf</span></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></div><div class="ttdoc">symbol_t is an abstraction upon the coff symbol. this allows for easier manipulation of the symbol....</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00053">symbol.hpp:53</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1jcc__rewrite__pass__t_html"><div class="ttname"><a href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">theo::obf::jcc_rewrite_pass_t</a></div><div class="ttdoc">jcc rewrite pass which rewrites rip relative jcc's so that they are position independent.</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html#l00061">jcc_rewrite_pass.hpp:61</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1jcc__rewrite__pass__t_html_a5a93eb0945025ef3caefed8c63b65b23"><div class="ttname"><a href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">theo::obf::jcc_rewrite_pass_t::run</a></div><div class="ttdeci">void run(decomp::symbol_t *sym)</div><div class="ttdoc">virtual method which must be implimented by the pass that inherits this class.</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">jcc_rewrite_pass.cpp:40</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1jcc__rewrite__pass__t_html_afc17278f751fe3f5868c988faffb3c92"><div class="ttname"><a href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">theo::obf::jcc_rewrite_pass_t::get</a></div><div class="ttdeci">static jcc_rewrite_pass_t * get()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00035">jcc_rewrite_pass.cpp:35</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1pass__t_html"><div class="ttname"><a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></div><div class="ttdoc">the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct...</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d5a/pass_8hpp_source.html#l00055">pass.hpp:55</a></div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1pass__t_html_abd4ab22cc2822b968267be7f8397d611"><div class="ttname"><a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">theo::obf::pass_t::pass_t</a></div><div class="ttdeci">pass_t(decomp::sym_type_t sym_type)</div><div class="ttdoc">the explicit constructor of the pass_t base class.</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d5a/pass_8hpp_source.html#l00063">pass.hpp:63</a></div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">theo::decomp::instruction</a></div><div class="ttdeci">@ instruction</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/d62/symbol_8hpp_source.html#l00043">symbol.hpp:43</a></div></div>
<div class="ttc" id="anamespacetheo_1_1obf_html"><div class="ttname"><a href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></div><div class="ttdoc">this is the main namespace for obfuscation related things.</div><div class="ttdef"><b>Definition:</b> <a href="../../de/d46/engine_8hpp_source.html#l00036">engine.hpp:36</a></div></div>
<div class="ttc" id="apass_8hpp_html"><div class="ttname"><a href="../../d8/d5a/pass_8hpp.html">pass.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>

@ -1,9 +0,0 @@
digraph "theo::obf::transform::sub_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::sub_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,14 +0,0 @@
digraph "theo::obf::pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
rankdir="LR";
Node1 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::jcc_rewrite\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html",tooltip="jcc rewrite pass which rewrites rip relative jcc's so that they are position independent."];
Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="theo::obf::next_inst\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html",tooltip="This pass is used to generate transformations and jmp code to change RIP to the next instruction."];
Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="theo::obf::reloc_transform\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html",tooltip="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead..."];
}

@ -1,38 +0,0 @@
digraph "include/obf/transform/gen.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/gen.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="include/obf/pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5a/pass_8hpp.html",tooltip=" "];
Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="include/obf/engine.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d46/engine_8hpp.html",tooltip=" "];
Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="include/recomp/recomp.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/d4a/recomp_8hpp.html",tooltip=" "];
Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="include/theo.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d24/theo_8hpp.html",tooltip=" "];
Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="src/theo.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/d26/theo_8cpp.html",tooltip=" "];
Node4 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="src/recomp/recomp.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$db/d55/recomp_8cpp.html",tooltip=" "];
Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="src/obf/engine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d5c/engine_8cpp.html",tooltip=" "];
Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="include/obf/passes\l/jcc_rewrite_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d2/df9/jcc__rewrite__pass_8hpp.html",tooltip=" "];
Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node10 [label="src/obf/passes/jcc\l_rewrite_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/db4/jcc__rewrite__pass_8cpp.html",tooltip=" "];
Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 [label="include/obf/passes\l/next_inst_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d54/next__inst__pass_8hpp.html",tooltip=" "];
Node11 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node11 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node12 [label="src/obf/passes/next\l_inst_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d7d/next__inst__pass_8cpp.html",tooltip=" "];
Node2 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 [label="include/obf/passes\l/reloc_transform_pass.hpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/d64/reloc__transform__pass_8hpp.html",tooltip=" "];
Node13 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node13 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node14 [label="src/obf/passes/reloc\l_transform_pass.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/da4/reloc__transform__pass_8cpp.html",tooltip=" "];
}

@ -1,23 +0,0 @@
digraph "include/obf/transform/operation.hpp"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="include/obf/transform\l/operation.hpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="spdlog/spdlog.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node3 [label="bit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node4 [label="bitset",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node5 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node6 [label="map",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node7 [label="random",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node8 [label="xed-decode.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node9 [label="xed-interface.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "];
}

@ -1,9 +0,0 @@
digraph "theo::obf::next_inst_pass_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::next_inst\l_pass_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="This pass is used to generate transformations and jmp code to change RIP to the next instruction."];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::pass_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/dad/classtheo_1_1obf_1_1pass__t.html",tooltip="the pass_t class is a base clase for all passes made. you must override the pass_t::run virtual funct..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::add_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::add_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

@ -1,9 +0,0 @@
digraph "theo::obf::transform::ror_op_t"
{
// LATEX_PDF_SIZE
edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"];
node [fontname="Helvetica",fontsize="10",shape=record];
Node1 [label="theo::obf::transform\l::ror_op_t",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "];
Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"];
Node2 [label="theo::obf::transform\l::operation_t",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html",tooltip="operation_t is the base class for all types of transformations. classes that inherit this class are s..."];
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save