fixed up the doxygen, its good now.

master
_xeroxz 3 years ago
parent a26be3fd80
commit 05f0e6a239

@ -1,4 +1,4 @@
# Doxyfile 1.9.1
# Doxyfile 1.9.3
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@ -44,14 +44,14 @@ PROJECT_NUMBER = v3.0
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "Jit linker, mapper, obfuscator, and mutator"
PROJECT_BRIEF = "Jit linker, symbol mapper, and obfuscator"
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO =
PROJECT_LOGO = doxygen/icon.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
@ -93,14 +93,6 @@ ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all generated output in the proper direction.
# Possible values are: None, LTR, RTL and Context.
# The default value is: None.
OUTPUT_TEXT_DIRECTION = None
# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
@ -258,16 +250,16 @@ TAB_SIZE = 4
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:\n"
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines (in the resulting output). You can put ^^ in the value part of an
# alias to insert a newline as if a physical newline was in the original file.
# When you need a literal { or } or , in the value part of an alias you have to
# escape them by means of a backslash (\), this can lead to conflicts with the
# commands \{ and \} for these it is advised to use the version @{ and @} or use
# a double escape (\\{ and \\})
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})
ALIASES =
@ -277,7 +269,7 @@ ALIASES =
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
@ -312,8 +304,8 @@ OPTIMIZE_OUTPUT_SLICE = NO
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,
# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make doxygen treat .inc files
@ -466,7 +458,7 @@ LOOKUP_CACHE_SIZE = 0
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which efficively disables parallel processing. Please report any issues you
# which effectively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.
@ -610,6 +602,12 @@ HIDE_SCOPE_NAMES = NO
HIDE_COMPOUND_REFERENCE= NO
# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
# will show which file needs to be included to use the class.
# The default value is: YES.
SHOW_HEADERFILE = YES
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
@ -627,7 +625,7 @@ SHOW_GROUPED_MEMB_INC = NO
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
FORCE_LOCAL_INCLUDES = NO
FORCE_LOCAL_INCLUDES = YES
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
@ -767,7 +765,8 @@ FILE_VERSION_FILTER =
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file.
# will be used as the name of the layout file. See also section "Changing the
# layout of pages" for information.
#
# Note that if you run doxygen from a directory containing a file called
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
@ -813,18 +812,26 @@ WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some parameters
# in a documented function, or documenting parameters that don't exist or using
# markup commands wrongly.
# potential errors in the documentation, such as documenting some parameters in
# a documented function twice, or documenting parameters that don't exist or
# using markup commands wrongly.
# The default value is: YES.
WARN_IF_DOC_ERROR = YES
# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
# function parameter documentation. If set to NO, doxygen will accept that some
# parameters have no documentation without warning.
# The default value is: YES.
WARN_IF_INCOMPLETE_DOC = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, doxygen will only warn about wrong or incomplete
# parameter documentation, but not about the absence of documentation. If
# EXTRACT_ALL is set to YES then this flag will automatically be disabled.
# value. If set to NO, doxygen will only warn about wrong parameter
# documentation, but not about the absence of documentation. If EXTRACT_ALL is
# set to YES then this flag will automatically be disabled. See also
# WARN_IF_INCOMPLETE_DOC
# The default value is: NO.
WARN_NO_PARAMDOC = NO
@ -850,7 +857,10 @@ WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr).
# error (stderr). In case the file specified cannot be opened for writing the
# warning and error messages are written to standard error. When as file - is
# specified the warning and error messages are written to standard output
# (stdout).
WARN_LOGFILE =
@ -892,10 +902,10 @@ INPUT_ENCODING = UTF-8
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),
# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl,
# *.ucf, *.qsf and *.ice.
# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml,
# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C
# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
# *.vhdl, *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.c \
*.cc \
@ -978,7 +988,7 @@ EXCLUDE_PATTERNS =
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
# ANamespace::AClass, ANamespace::*Test
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
@ -1091,19 +1101,19 @@ INLINE_SOURCES = YES
# Fortran comments will always remain visible.
# The default value is: YES.
STRIP_CODE_COMMENTS = YES
STRIP_CODE_COMMENTS = NO
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# entity all documented functions referencing it will be listed.
# The default value is: NO.
REFERENCED_BY_RELATION = NO
REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.
REFERENCES_RELATION = NO
REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES then the hyperlinks from functions in REFERENCES_RELATION and
@ -1121,7 +1131,7 @@ REFERENCES_LINK_SOURCE = YES
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
SOURCE_TOOLTIPS = YES
SOURCE_TOOLTIPS = NO
# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
@ -1143,7 +1153,7 @@ SOURCE_TOOLTIPS = YES
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = YES
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
# verbatim copy of the header file for each class for which an include is
@ -1164,9 +1174,11 @@ VERBATIM_HEADERS = YES
CLANG_ASSISTED_PARSING = NO
# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to
# YES then doxygen will add the directory of each input to the include path.
# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
# tag is set to YES then doxygen will add the directory of each input to the
# include path.
# The default value is: YES.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
CLANG_ADD_INC_PATHS = YES
@ -1301,7 +1313,7 @@ HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a colorwheel, see
# this color. Hue is specified as an angle on a color-wheel, see
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
@ -1311,7 +1323,7 @@ HTML_EXTRA_FILES =
HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A
# in the HTML output. For a value of 0 the output will use gray-scales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
@ -1393,6 +1405,13 @@ GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
# This tag determines the URL of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDURL =
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
@ -1418,8 +1437,12 @@ DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# (see:
# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows.
# on Windows. In the beginning of 2021 Microsoft took the original page, with
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
@ -1578,16 +1601,28 @@ DISABLE_INDEX = NO
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine-tune the look of the index. As an example, the default style
# sheet generated by doxygen has an example that shows how to put an image at
# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
# the same information as the tab index, you could consider setting
# DISABLE_INDEX to YES when enabling this option.
# further fine tune the look of the index (see "Fine-tuning the output"). As an
# example, the default style sheet generated by doxygen has an example that
# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
# Since the tree basically has the same information as the tab index, you could
# consider setting DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = NO
# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
# area (value NO) or if it should extend to the full height of the window (value
# YES). Setting this to YES gives a layout similar to
# https://docs.readthedocs.io with more room for contents, but less room for the
# project logo, title, and description. If either GENERATE_TREEVIEW or
# DISABLE_INDEX is set to NO, this option has no effect.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
FULL_SIDEBAR = NO
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
#
@ -1612,6 +1647,13 @@ TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
# addresses.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
OBFUSCATE_EMAILS = YES
# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
@ -1660,11 +1702,29 @@ FORMULA_MACROFILE =
USE_MATHJAX = NO
# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
# Note that the different versions of MathJax have different requirements with
# regards to the different settings, so it is possible that also other MathJax
# settings have to be changed when switching between the different MathJax
# versions.
# Possible values are: MathJax_2 and MathJax_3.
# The default value is: MathJax_2.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_VERSION = MathJax_2
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. See the MathJax site (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details.
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility), NativeMML (i.e. MathML) and SVG.
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
# is the name for Mathjax version 3, for MathJax version 2 this will be
# translated into HTML-CSS) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.
@ -1677,15 +1737,21 @@ MATHJAX_FORMAT = HTML-CSS
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment.
# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.
# MathJax from https://www.mathjax.org before deployment. The default value is:
# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# for MathJax version 2 (see
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
@ -1865,29 +1931,31 @@ PAPER_TYPE = a4
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
# chapter. If it is left blank doxygen will generate a standard header. See
# section "Doxygen usage" for information on how to let doxygen write the
# default header to a separate file.
# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
# the generated LaTeX document. The header should contain everything until the
# first chapter. If it is left blank doxygen will generate a standard header. It
# is highly recommended to start with a default header using
# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
# and then modify the file new_header.tex. See also section "Doxygen usage" for
# information on how to generate the default header that doxygen normally uses.
#
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
# string, for the replacement values of the other commands the user is referred
# to HTML_HEADER.
# Note: Only use a user-defined header if you know what you are doing!
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. The following
# commands have a special meaning inside the header (and footer): For a
# description of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
# chapter. If it is left blank doxygen will generate a standard footer. See
# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
# the generated LaTeX document. The footer should contain everything after the
# last chapter. If it is left blank doxygen will generate a standard footer. See
# LATEX_HEADER for more information on how to generate a default footer and what
# special commands can be used inside the footer.
#
# Note: Only use a user-defined footer if you know what you are doing!
# special commands can be used inside the footer. See also section "Doxygen
# usage" for information on how to generate the default footer that doxygen
# normally uses. Note: Only use a user-defined footer if you know what you are
# doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
@ -1932,8 +2000,7 @@ USE_PDFLATEX = YES
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
# if errors occur, instead of asking the user for help. This option is also used
# when generating formulas in HTML.
# if errors occur, instead of asking the user for help.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@ -1946,16 +2013,6 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
# code with syntax highlighting in the LaTeX output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
@ -2036,16 +2093,6 @@ RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
# with syntax highlighting in the RTF output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_SOURCE_CODE = NO
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
@ -2142,15 +2189,6 @@ GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
# program listings (including syntax highlighting and cross-referencing
# information) to the DOCBOOK output. Note that enabling this will significantly
# increase the size of the DOCBOOK output.
# The default value is: NO.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
DOCBOOK_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
@ -2333,15 +2371,6 @@ EXTERNAL_PAGES = YES
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
# NO turns the diagrams off. Note that this option also works with HAVE_DOT
# disabled, but it is recommended to install and use dot, since it yields more
# powerful graphs.
# The default value is: YES.
CLASS_DIAGRAMS = YES
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
@ -2398,11 +2427,14 @@ DOT_FONTSIZE = 10
DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a
# graph for each documented class showing the direct and indirect inheritance
# relations. In case HAVE_DOT is set as well dot will be used to draw the graph,
# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set
# to TEXT the direct and indirect inheritance relations will be shown as texts /
# links.
# Possible values are: NO, YES, TEXT and GRAPH.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
CLASS_GRAPH = YES
@ -2531,6 +2563,13 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
# of child directories generated in directory dependency graphs by dot.
# Minimum value: 1, maximum value: 25, default value: 1.
# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
@ -2584,10 +2623,10 @@ MSCFILE_DIRS =
DIAFILE_DIRS =
# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
# path where java can find the plantuml.jar file. If left blank, it is assumed
# PlantUML is not used or called during a preprocessing step. Doxygen will
# generate a warning when it encounters a \startuml command in this case and
# will not generate output for the diagram.
# path where java can find the plantuml.jar file or to the filename of jar file
# to be used. If left blank, it is assumed PlantUML is not used or called during
# a preprocessing step. Doxygen will generate a warning when it encounters a
# \startuml command in this case and will not generate output for the diagram.
PLANTUML_JAR_PATH =
@ -2649,6 +2688,8 @@ DOT_MULTI_TARGETS = NO
# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal
# graphical representation for inheritance and collaboration diagrams is used.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
@ -2657,8 +2698,8 @@ GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc and
# plantuml temporary files.
# Note: This setting is not only used for dot files but also for msc temporary
# files.
# The default value is: YES.
DOT_CLEANUP = YES

@ -1,6 +1,7 @@
# Theodosius - Jit linker, Mapper, Mutator, and Obfuscator
Theodosius (Theo for short) is a jit linker created for obfuscation. The project is extremely modular in design and supports both kernel and usermode projects.
Theo works with static libraries rather than completely compiled binaries. This allows it to easily position, obfuscate, and scatter symbols anywhere as the project takes the place of the linker.
### Table Of Contents

@ -2,10 +2,10 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Class List</title>
<title>Theodosius: Data Structures</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>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,42 +64,41 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
<div class="headertitle"><div class="title">Data Structures</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="da/de6/namespacetheo.html" target="_self">theo</a></td><td class="desc">The outer most encompassing namespace of this project </td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d9/dbd/namespacetheo_1_1decomp.html" target="_self">decomp</a></td><td class="desc">the namespace that contains all of the decomposition related code </td></tr>
<tr id="row_0_0_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="d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" target="_self">decomp_t</a></td><td class="desc">the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files </td></tr>
<tr id="row_0_0_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="df/db4/classtheo_1_1decomp_1_1routine__t.html" target="_self">routine_t</a></td><td class="desc">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 </td></tr>
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="da/de6/namespacetheo.html" target="_self">theo</a></td><td class="desc">The outer most encompassing namespace of this project. </td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d9/dbd/namespacetheo_1_1decomp.html" target="_self">decomp</a></td><td class="desc">the namespace that contains all of the decomposition related code. </td></tr>
<tr id="row_0_0_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="d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" target="_self">decomp_t</a></td><td class="desc">the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files. </td></tr>
<tr id="row_0_0_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="df/db4/classtheo_1_1decomp_1_1routine__t.html" target="_self">routine_t</a></td><td class="desc">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. </td></tr>
<tr id="row_0_0_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="d9/dd5/classtheo_1_1decomp_1_1symbol__t.html" target="_self">symbol_t</a></td><td class="desc"><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....">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) </td></tr>
<tr id="row_0_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d5/da8/namespacetheo_1_1obf.html" target="_self">obf</a></td><td class="desc">this is the main namespace for obfuscation related things </td></tr>
<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html" target="_self">transform</a></td><td class="desc">this namespace encompasses the code for transforming relocations </td></tr>
<tr id="row_0_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d5/da8/namespacetheo_1_1obf.html" target="_self">obf</a></td><td class="desc">this is the main namespace for obfuscation related things. </td></tr>
<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html" target="_self">transform</a></td><td class="desc">this namespace encompasses the code for transforming relocations. </td></tr>
<tr id="row_0_1_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html" target="_self">add_op_t</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html" target="_self">operation_t</a></td><td class="desc"><a class="el" href="d7/de2/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="d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>) </td></tr>
<tr id="row_0_1_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html" target="_self">operation_t</a></td><td class="desc"><a class="el" href="d7/de2/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="d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>). </td></tr>
<tr id="row_0_1_0_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html" target="_self">rol_op_t</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html" target="_self">ror_op_t</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html" target="_self">sub_op_t</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html" target="_self">xor_op_t</a></td><td class="desc"></td></tr>
<tr id="row_0_1_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="d9/d18/classtheo_1_1obf_1_1engine__t.html" target="_self">engine_t</a></td><td class="desc">singleton obfuscation engine class. this class is responsible for keeping track of the registered passes and the order in which to execute them </td></tr>
<tr id="row_0_1_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="d4/dad/classtheo_1_1obf_1_1pass__t.html" target="_self">pass_t</a></td><td class="desc">the <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> class is a base clase for all passes made. you must override the <a class="el" href="d4/dad/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 </td></tr>
<tr id="row_0_1_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="d9/d18/classtheo_1_1obf_1_1engine__t.html" target="_self">engine_t</a></td><td class="desc">singleton obfuscation engine class. this class is responsible for keeping track of the registered passes and the order in which to execute them. </td></tr>
<tr id="row_0_1_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="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_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_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_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="d4/dad/classtheo_1_1obf_1_1pass__t.html" target="_self">pass_t</a></td><td class="desc">the <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> class is a base clase for all passes made. you must override the <a class="el" href="d4/dad/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 </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="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_"><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_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 -->
<!-- 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.3
</small></address>
</body>
</html>

@ -2,10 +2,10 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Class Index</title>
<title>Theodosius: Data Structure Index</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>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,53 +64,52 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
<div class="headertitle"><div class="title">Data Structure 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_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>
<dt class="alphachar"><a id="letter_A" name="letter_A">A</a></dt>
<dd><a class="el" href="d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> (<a class="el" href="d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_D">D</a></dt>
<dt class="alphachar"><a id="letter_D" name="letter_D">D</a></dt>
<dd><a class="el" href="d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">decomp_t</a> (<a class="el" href="d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_E">E</a></dt>
<dt class="alphachar"><a id="letter_E" 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>
<dt class="alphachar"><a id="letter_H" 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>
<dt class="alphachar"><a id="letter_J" 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 odd">
<dt class="alphachar"><a name="letter_N">N</a></dt>
<dt class="alphachar"><a id="letter_N" 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 even">
<dt class="alphachar"><a name="letter_O">O</a></dt>
<dt class="alphachar"><a id="letter_O" 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 odd">
<dt class="alphachar"><a name="letter_P">P</a></dt>
<dt class="alphachar"><a id="letter_P" 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 even">
<dt class="alphachar"><a name="letter_R">R</a></dt>
<dt class="alphachar"><a id="letter_R" 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 odd">
<dt class="alphachar"><a name="letter_S">S</a></dt>
<dt class="alphachar"><a id="letter_S" 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 even">
<dt class="alphachar"><a name="letter_T">T</a></dt>
<dt class="alphachar"><a id="letter_T" 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 odd">
<dt class="alphachar"><a name="letter_X">X</a></dt>
<dt class="alphachar"><a id="letter_X" 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>
</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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,20 +68,19 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::pass_t Member List</div> </div>
<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="../../d4/dad/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="../../d4/dad/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="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a>(decomp::symbol_t *sym)=0</td><td class="entry"><a class="el" href="../../d4/dad/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="odd"><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a>(decomp::symbol_t *sym)=0</td><td class="entry"><a class="el" href="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: examples/demo/Demo Example Using Theo.md File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -63,14 +64,13 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">examples/demo/Demo Example Using Theo.md File Reference</div> </div>
<div class="headertitle"><div class="title">examples/demo/Demo Example Using Theo.md File Reference</div></div>
</div><!--header-->
<div class="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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/symbol_table.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,10 +69,9 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">symbol_table.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">symbol_table.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
@ -79,29 +79,29 @@ $(function() {
<code>#include &lt;map&gt;</code><br />
<code>#include &lt;optional&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">decomp/symbol.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d6/d62/symbol_8hpp_source.html">decomp/symbol.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d0/d5e/symbol__table_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,185 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><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 id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/dbd/namespacetheo_1_1recomp.html" title="this namespace encompasses all recomposition related code.">theo::recomp</a> {<span class="comment"></span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// this class is a high level wrapper for a hashmap that contains</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// decomp::symbol_t values. the symbol values are references by a hashcode.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html"> 45</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">symbol_table_t</a> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> /// default constructor. does nothing.</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5"> 50</a></span><span class="comment"></span> <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5" title="default constructor. does nothing.">symbol_table_t</a>() {}</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"></span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"> /// this constructor will populate the m_table private field with symbols.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"> /// &lt;param name=&quot;syms&quot;&gt;vector of decomp::symbol_t&lt;/param&gt;</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"></span> <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5" title="default constructor. does nothing.">symbol_table_t</a>(<span class="keyword">const</span> std::vector&lt;decomp::symbol_t&gt;&amp;&amp; syms);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"></span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> /// add symbol to m_table</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;symbol to be added.&lt;/param&gt;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601" title="add symbol to m_table">put_symbol</a>(<a class="code hl_class" 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>&amp; sym);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"></span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// add a vector of symbol to m_table</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// &lt;param name=&quot;syms&quot;&gt;&lt;/param&gt;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e" title="add a vector of symbol to m_table">put_symbols</a>(std::vector&lt;decomp::symbol_t&gt;&amp; syms);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"></span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> /// returns an optional pointer to a symbol from the symbol table given the</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// symbols hash (hash of its name) the hash is produced by</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// theo::decomp::symbol_t::hash</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> /// &lt;param name=&quot;hash&quot;&gt;hashcode of the symbol to get from the symbol</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> /// table...&lt;/param&gt; &lt;returns&gt;returns an optional pointer to a</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> /// theo::decomp::symbol_t&lt;/returns&gt;</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"></span> std::optional&lt;decomp::symbol_t*&gt; <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(std::size_t hash);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"></span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> /// returns an optional pointer to a symbol given its allocation location.</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"> /// &lt;param name=&quot;allocated_at&quot;&gt;the address where the symbol is allocated</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// at.&lt;/param&gt; &lt;returns&gt;returns an optional pointer to a</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// theo::decomp::symbol_t&lt;/returns&gt;</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"></span> std::optional&lt;decomp::symbol_t*&gt; <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#abaea9fd899d87b09d60c2b815624e2d2" title="returns an optional pointer to a symbol given its allocation location.">sym_from_alloc</a>(std::uintptr_t allocated_at);</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"></span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> /// this function is a wrapper function that allows you to get at each entry</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> /// in the symbol table by reference.</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> /// &lt;param name=&quot;fn&quot;&gt;a callback function that will be called for each</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> /// symbol&lt;/param&gt;</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code hl_class" 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>&amp; sym)&gt; fn);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"></span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> /// returns the size of the symbol table.</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> /// &lt;returns&gt;returns the size of the symbol table.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"></span> std::uint32_t <a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e" title="returns the size of the symbol table.">size</a>();</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> std::map&lt;std::size_t, decomp::symbol_t&gt; m_table;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span>};</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>} <span class="comment">// namespace theo::recomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/xor_op.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">xor_op.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">xor_op.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/operation.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/da4/operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d0/da4/xor__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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">theo::obf::transform::xor_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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,127 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00035" 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><span class="keyword">class </span><a class="code hl_class" 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 hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val ^ imm; },</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> XED_ICLASS_XOR) {}</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#adaca6aff562bd3f37176b569a898f8b4"> 42</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>* <a class="code hl_function" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#adaca6aff562bd3f37176b569a898f8b4">get</a>() {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">static</span> <a class="code hl_class" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a> obj;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>};</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/reloc.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">reloc.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">reloc.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;cstddef&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/transform.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d6/deb/transform_8hpp_source.html">obf/transform/transform.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d1/d82/reloc_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">theo::recomp::reloc_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">meta data about a relocation for a symbol <a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,192 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><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 id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/dbd/namespacetheo_1_1recomp.html" title="this namespace encompasses all recomposition related code.">theo::recomp</a> {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"></span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// meta data about a relocation for a symbol</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html"> 41</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">reloc_t</a> {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> /// explicit constructor for this class.</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"> /// &lt;param name=&quot;offset&quot;&gt;offset into the symbol data where the relocation is</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment"> /// at. all relocations are assumed to be linear virtual addresses of the</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> /// symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> /// &lt;param name=&quot;hash&quot;&gt;hash of the symbol to which the relocation is</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"> /// of.&lt;/param&gt; &lt;param name=&quot;sym_name&quot;&gt;the name of the symbol to which the</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"> /// relocation is of.&lt;/param&gt;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548"> 52</a></span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548" title="explicit constructor for this class.">reloc_t</a>(std::uint32_t <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>,</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> std::size_t <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461" title="returns the hash of the relocation symbol.">hash</a>,</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">const</span> std::string&amp;&amp; sym_name)</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> : m_offset(<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>), m_hash(<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461" title="returns the hash of the relocation symbol.">hash</a>), m_sym_name(sym_name) {}</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"></span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> /// returns the hash of the relocation symbol.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> /// &lt;returns&gt;hash of the relocation symbol&lt;/returns&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461"> 61</a></span><span class="comment"></span> std::size_t <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461" title="returns the hash of the relocation symbol.">hash</a>() { <span class="keywordflow">return</span> m_hash; }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"></span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> /// returns the name of the relocation symbol.</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;returns&gt;returns the name of the relocation symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec"> 67</a></span><span class="comment"></span> std::string <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec" title="returns the name of the relocation symbol.">name</a>() { <span class="keywordflow">return</span> m_sym_name; }</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"></span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> /// returns the offset into the symbol to which the relocation will be</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> /// applied. the offset is in bytes. zero based.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// &lt;returns&gt;returns the offset into the symbol to which the relocation will</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// be applied. the offset is in bytes. zero based.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323"> 75</a></span><span class="comment"></span> std::uint32_t <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>() { <span class="keywordflow">return</span> m_offset; }</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"></span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> /// sets the offset to which the relocation gets applied too.</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> /// &lt;param name=&quot;offset&quot;&gt;offset to which the relocation gets applied</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> /// too.&lt;/param&gt;</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd"> 82</a></span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd" title="sets the offset to which the relocation gets applied too.">offset</a>(std::uint32_t <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>) { m_offset = <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd" title="sets the offset to which the relocation gets applied too.">offset</a>; }</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"></span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// adds a transformation to be applied to the relocation prior to writing it</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// into the symbol.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> /// &lt;param name=&quot;entry&quot;&gt;a pair containing a lambda function that when executed</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> /// transforms a relocation. the second value in the pair is a random value</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> /// which is passed to the lambda.&lt;/param&gt;</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10"> 91</a></span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10" title="adds a transformation to be applied to the relocation prior to writing it into the symbol.">add_transform</a>(</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt; entry) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> m_transforms.push_back(entry);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"></span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> /// gets the vector of transformation.</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> /// &lt;returns&gt;returns the vector of transformations.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"></span> std::vector&lt;std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&gt;&amp;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78"> 101</a></span> <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>() {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">return</span> m_transforms;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> }</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> std::vector&lt;std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&gt;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> m_transforms;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> std::string m_sym_name;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> std::size_t m_hash;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> std::uint32_t m_offset;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span>};</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span>} <span class="comment">// namespace theo::recomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,20 +68,19 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::engine_t Member List</div> </div>
<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="../../d9/d18/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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">add_pass</a>(pass_t *pass)</td><td class="entry"><a class="el" href="../../d9/d18/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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">get</a>()</td><td class="entry"><a class="el" href="../../d9/d18/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="odd"><td class="entry"><a class="el" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">get</a>()</td><td class="entry"><a class="el" href="../../d9/d18/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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d9/d18/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,21 +68,20 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::routine_t Member List</div> </div>
<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="../../df/db4/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="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a">data</a>()</td><td class="entry"><a class="el" href="../../df/db4/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="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8">decompose</a>()</td><td class="entry"><a class="el" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8">decompose</a>()</td><td class="entry"><a class="el" href="../../df/db4/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="../../df/db4/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="../../df/db4/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="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36">scn</a>()</td><td class="entry"><a class="el" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html">theo::decomp::routine_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36">scn</a>()</td><td class="entry"><a class="el" href="../../df/db4/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">add_op.hpp File Reference</div> </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="../../">obf/transform/operation.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/da4/operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d1/def/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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d9f/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,127 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html"> 34</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00035" 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><span class="keyword">class </span><a class="code hl_class" 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 hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val + imm; },</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> XED_ICLASS_ADD) {}</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a73d8d592c092482231fb5321ded6e83b"> 42</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>* <a class="code hl_function" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a73d8d592c092482231fb5321ded6e83b">get</a>() {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a> obj;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>};</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/theo.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,55 +69,54 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">theo.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">theo.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;spdlog/spdlog.h&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">decomp/decomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/engine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/recomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/symbol_table.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/passes/jcc_rewrite_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/passes/next_inst_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/passes/reloc_transform_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp/decomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../de/d46/engine_8hpp_source.html">obf/engine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp/recomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">recomp/symbol_table.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html">obf/passes/jcc_rewrite_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d5/d54/next__inst__pass_8hpp_source.html">obf/passes/next_inst_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html">obf/passes/reloc_transform_pass.hpp</a>&gt;</code><br />
<code>#include &lt;optional&gt;</code><br />
<code>#include &lt;tuple&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;xed-decode.h&gt;</code><br />
<code>#include &lt;xed-interface.h&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d2/d24/theo_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d9/dbc/classtheo_1_1theo__t.html">theo::theo_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../d9/dbc/classtheo_1_1theo__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a3925943d185a09ad9e32ed8637ccb533"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d24/theo_8hpp.html#a3925943d185a09ad9e32ed8637ccb533">XED_ENCODER</a></td></tr>
<tr class="separator:a3925943d185a09ad9e32ed8637ccb533"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a66efe2c63e06764fb2d9a378c688c680"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">theo::lnk_fns_t</a> = std::tuple&lt; recomp::allocator_t, recomp::copier_t, recomp::resolver_t &gt;</td></tr>
<tr class="memdesc:a66efe2c63e06764fb2d9a378c688c680"><td class="mdescLeft">&#160;</td><td class="mdescRight">tuple of functions used by theo to allocate, copy, and resolve symbols. <a href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">More...</a><br /></td></tr>
<tr class="separator:a66efe2c63e06764fb2d9a378c688c680"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a3925943d185a09ad9e32ed8637ccb533"></a>
<a id="a3925943d185a09ad9e32ed8637ccb533" name="a3925943d185a09ad9e32ed8637ccb533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3925943d185a09ad9e32ed8637ccb533">&#9670;&nbsp;</a></span>XED_ENCODER</h2>
<div class="memitem">
@ -128,12 +128,14 @@ Typedefs</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d2/d24/theo_8hpp_source.html#l00046">46</a> of file <a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,190 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><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 id="l00034" name="l00034"></a><span class="lineno"> 34</span><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 id="l00035" name="l00035"></a><span class="lineno"> 35</span><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 id="l00036" name="l00036"></a><span class="lineno"> 36</span><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 id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><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 id="l00039" name="l00039"></a><span class="lineno"> 39</span><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 id="l00040" name="l00040"></a><span class="lineno"> 40</span><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 id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#include &lt;tuple&gt;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="../../d2/d24/theo_8hpp.html#a3925943d185a09ad9e32ed8637ccb533"> 46</a></span><span class="preprocessor">#define XED_ENCODER</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#include &lt;xed-decode.h&gt;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#include &lt;xed-interface.h&gt;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>}</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"></span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// The outer most encompassing namespace of this project.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/de6/namespacetheo.html" title="The outer most encompassing namespace of this project.">theo</a> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"></span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// tuple of functions used by theo to allocate, copy, and resolve symbols.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680"> 60</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680" title="tuple of functions used by theo to allocate, copy, and resolve symbols.">lnk_fns_t</a> =</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> std::tuple&lt;recomp::allocator_t, recomp::copier_t, recomp::resolver_t&gt;;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"></span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment">/// the main class which encapsulates a symbol table, decomp, and recomp</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">/// objects. This class is a bridge that connects all three: decomp, obf,</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">/// recomp.</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment">///</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">/// You will create an object of this type when using theo.</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html"> 70</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d9/dbc/classtheo_1_1theo__t.html" title="the main class which encapsulates a symbol table, decomp, and recomp objects. This class is a bridge ...">theo_t</a> {</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// explicit constructor for theo class.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> /// &lt;param name=&quot;lib&quot;&gt;a vector of bytes consisting of a lib&lt;/param&gt;</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> /// &lt;param name=&quot;lnkr_fns&quot;&gt;&lt;/param&gt;</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> /// &lt;param name=&quot;entry_sym&quot;&gt;the name of the function which will be used as the</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> /// entry point&lt;/param&gt;</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d" title="explicit constructor for theo class.">theo_t</a>(std::vector&lt;std::uint8_t&gt;&amp; lib,</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_typedef" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680" title="tuple of functions used by theo to allocate, copy, and resolve symbols.">lnk_fns_t</a> lnkr_fns,</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">const</span> std::string&amp;&amp; entry_sym);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"></span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// decomposes the lib file and return the number of symbols that are used.</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// &lt;returns&gt;optional amount of symbols that are used. no value if</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> /// decomposition fails.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"></span> std::optional&lt;std::uint32_t&gt; <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a" title="decomposes the lib file and return the number of symbols that are used.">decompose</a>();</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"></span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> /// compose the decomposed module. This will run obfuscation passes, the map</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> /// and resolve symbols to each other.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> /// &lt;returns&gt;returns the address of the entry point symbol&lt;/returns&gt;</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"></span> std::uintptr_t <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27" title="compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each ...">compose</a>();</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"></span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// given the name of a symbol, it returns the address of where its mapped.</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;the name of the symbol&lt;/param&gt;</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> /// &lt;returns&gt;the address of the symbol&lt;/returns&gt;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"></span> std::uintptr_t <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24" title="given the name of a symbol, it returns the address of where its mapped.">resolve</a>(<span class="keyword">const</span> std::string&amp;&amp; sym);</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> std::string m_entry_sym;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_class" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp::decomp_t</a> m_dcmp;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_class" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp::recomp_t</a> m_recmp;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a> m_sym_tbl;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span>};</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span>} <span class="comment">// namespace theo</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/theo.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,24 +70,23 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">theo.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">theo.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">theo.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d2/d26/theo_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,155 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &lt;<a class="code" href="../../d2/d24/theo_8hpp.html">theo.hpp</a>&gt;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/de6/namespacetheo.html" title="The outer most encompassing namespace of this project.">theo</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d"> 34</a></span><a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d" title="explicit constructor for theo class.">theo_t::theo_t</a>(std::vector&lt;std::uint8_t&gt;&amp; lib,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_typedef" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680" title="tuple of functions used by theo to allocate, copy, and resolve symbols.">lnk_fns_t</a> lnkr_fns,</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">const</span> std::string&amp;&amp; entry_sym)</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : m_dcmp(lib, &amp;m_sym_tbl),</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> m_recmp(&amp;m_dcmp, {}, {}, {}),</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> m_entry_sym(entry_sym) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07" title="setter for the allocater lambda function.">allocator</a>(std::get&lt;0&gt;(lnkr_fns));</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1" title="setter for the copier lambda function.">copier</a>(std::get&lt;1&gt;(lnkr_fns));</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470" title="setter for the resolve lambda function.">resolver</a>(std::get&lt;2&gt;(lnkr_fns));</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>}</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a"> 45</a></span>std::optional&lt;std::uint32_t&gt; <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a66257ff5d9825483d85e58384a12760a" title="decomposes the lib file and return the number of symbols that are used.">theo_t::decompose</a>() {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">auto</span> res = m_dcmp.<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469" title="decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...">decompose</a>(m_entry_sym);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span> (!res.has_value()) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> spdlog::error(<span class="stringliteral">&quot;failed to decompose...\n&quot;</span>);</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> spdlog::info(<span class="stringliteral">&quot;decompose successful... {} symbols&quot;</span>, res.value()-&gt;size());</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> res.value()-&gt;size();</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>}</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27"> 56</a></span>std::uintptr_t <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a39e067dd71f82b437c6a418d41e38b27" title="compose the decomposed module. This will run obfuscation passes, the map and resolve symbols to each ...">theo_t::compose</a>() {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// run obfuscation engine on all symbols...</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">auto</span> engine = <a class="code hl_function" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e" title="get the singleton object of this class.">obf::engine_t::get</a>();</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> m_sym_tbl.<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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>&amp; sym) { engine-&gt;run(&amp;sym); });</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39" title="when called, this function allocates space for every symbol.">allocate</a>();</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>();</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e" title="when called, this function copies symbols into allocations.">copy_syms</a>();</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>(m_entry_sym.data());</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>}</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24"> 68</a></span>std::uintptr_t <a class="code hl_function" href="../../d9/dbc/classtheo_1_1theo__t.html#a97c52bda4b07a456ff1ea6f3c1cdbe24" title="given the name of a symbol, it returns the address of where its mapped.">theo_t::resolve</a>(<span class="keyword">const</span> std::string&amp;&amp; sym) {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">auto</span> val = m_sym_tbl.<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym));</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">if</span> (!val.has_value())</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> val.value()-&gt;allocated_at();</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>}</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>} <span class="comment">// namespace theo</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/decomp/decomp.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,11 +69,10 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">decomp.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">decomp.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;spdlog/spdlog.h&gt;</code><br />
@ -82,29 +82,29 @@ $(function() {
<code>#include &lt;set&gt;</code><br />
<code>#include &lt;tuple&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">decomp/routine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/symbol_table.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../de/df5/routine_8hpp_source.html">decomp/routine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">recomp/symbol_table.hpp</a>&gt;</code><br />
<code>#include &lt;coff/archive.hpp&gt;</code><br />
<code>#include &lt;coff/image.hpp&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d2/d96/decomp_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <br /></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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:abbf09e1f7eb9e42057ff9c9e8be41266"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">theo::decomp::sym_data_t</a> = std::tuple&lt; coff::image_t *, coff::symbol_t *, std::uint32_t &gt;</td></tr>
<tr class="memdesc:abbf09e1f7eb9e42057ff9c9e8be41266"><td class="mdescLeft">&#160;</td><td class="mdescRight">meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself, and the size (if any) of the symbol. <a href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">More...</a><br /></td></tr>
@ -113,7 +113,7 @@ Typedefs</h2></td></tr>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,229 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;linuxpe&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;optional&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;set&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &lt;tuple&gt;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><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 id="l00041" name="l00041"></a><span class="lineno"> 41</span><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 id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#include &lt;coff/archive.hpp&gt;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#include &lt;coff/image.hpp&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"></span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// the namespace that contains all of the decomposition related code.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="../../da/de6/namespacetheo.html"> 49</a></span><span class="comment"></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d9/dbd/namespacetheo_1_1decomp.html" title="the namespace that contains all of the decomposition related code.">theo::decomp</a> {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"></span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// meta symbol data. consists of the coff image which contains the coff symbol,</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// the coff symbol itself, and the size (if any) of the symbol.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266"> 55</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266" title="meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself,...">sym_data_t</a> = std::tuple&lt;coff::image_t*, coff::symbol_t*, std::uint32_t&gt;;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"></span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// the main decomposition class which is responsible for breaking down lib file</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">/// into coff files, and extracted used symbols from the coff files.</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html"> 61</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d6/d0e/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> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> /// the explicit constructor for decomp_t</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;param name=&quot;lib&quot;&gt;vector of bytes containing the lib file.&lt;/param&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// &lt;param name=&quot;syms&quot;&gt;symbol table that gets populated and managed by this</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> /// class.&lt;/param&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68" title="the explicit constructor for decomp_t">decomp_t</a>(std::vector&lt;std::uint8_t&gt;&amp; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>,</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a>* <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"></span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// gets all of the routine objects.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> /// &lt;returns&gt;vector of routine objects.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"></span> std::vector&lt;routine_t&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a79c965ec0a996a936faae7f54b0e055e" title="gets all of the routine objects.">rtns</a>();</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"></span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> /// gets a vector of bytes consisting of the lib file.</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> /// &lt;returns&gt;a vector of bytes consisting of the lib file.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"></span> std::vector&lt;std::uint8_t&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>();</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"></span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// gets all the obj files as a vector of a vector of bytes.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> /// &lt;returns&gt;all the obj files as a vector of a vector of bytes.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"></span> std::vector&lt;std::vector&lt;std::uint8_t&gt;&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef" title="gets all the obj files as a vector of a vector of bytes.">objs</a>();</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"></span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> /// gets the symbol table.</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> /// &lt;returns&gt;the symbol table.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"></span> <a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a>* <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>();</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"></span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> /// gets the section hash table section header --&gt; hash of the section header</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// ptr.</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> /// &lt;returns&gt;the section hash table section header --&gt; hash of the section</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> /// header ptr.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"></span> std::map&lt;coff::section_header_t*, std::size_t&gt;&amp; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06" title="gets the section hash table section header --&gt; hash of the section header ptr.">scn_hash_tbl</a>();</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"></span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> /// decomposes (extracts) the symbols used. this function determines all used</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> /// symbols given the entry point.</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment"> /// &lt;param name=&quot;entry_sym&quot;&gt;the entry point symbol name.&lt;/param&gt;</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment"> /// &lt;returns&gt;returns an optional pointer to the symbol table. no value in the</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> /// optional object on failure.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment"></span> std::optional&lt;recomp::symbol_table_t*&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469" title="decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...">decompose</a>(std::string&amp; entry_sym);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">private</span>:<span class="comment"></span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> /// extracts used symbols from coff files.</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment"> /// &lt;param name=&quot;entry_sym&quot;&gt;the entry point symbol name&lt;/param&gt;</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"> /// &lt;returns&gt;number of symbols used&lt;/returns&gt;</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"></span> std::uint32_t ext_used_syms(<span class="keyword">const</span> std::string&amp;&amp; entry_sym);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"></span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"> /// get symbol meta data by name.</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> /// &lt;param name=&quot;name&quot;&gt;symbol name&lt;/param&gt;</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> /// &lt;returns&gt;optional symbol meta data if it exists.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"></span> std::optional&lt;sym_data_t&gt; get_symbol(<span class="keyword">const</span> std::string_view&amp; name);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"></span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> /// the next symbol in the section.</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> /// &lt;param name=&quot;img&quot;&gt;coff image that contains the symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> /// &lt;param name=&quot;hdr&quot;&gt;coff section header of the section that contains the</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> /// symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"> /// &lt;param name=&quot;s&quot;&gt;symbol in which to get the next one of.&lt;/param&gt;</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> /// &lt;returns&gt;offset into the section where the next symbol is at.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"></span> std::uint32_t next_sym(coff::image_t* img,</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> coff::section_header_t* hdr,</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> coff::symbol_t* s);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">const</span> std::vector&lt;std::uint8_t&gt; m_lib;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> std::vector&lt;std::vector&lt;std::uint8_t&gt;&gt; m_objs;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> std::vector&lt;routine_t&gt; m_rtns;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> std::set&lt;sym_data_t&gt; m_used_syms;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> std::set&lt;coff::image_t*&gt; m_processed_objs;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> std::map&lt;coff::section_header_t*, std::size_t&gt; m_scn_hash_tbl;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> std::map&lt;std::size_t, std::vector&lt;sym_data_t&gt;&gt; m_lookup_tbl;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a>* m_syms;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span>};</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span>} <span class="comment">// namespace theo::decomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/routine.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">routine.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">routine.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">decomp/routine.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../de/df5/routine_8hpp_source.html">decomp/routine.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d2/dbb/routine_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,255 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d9/dbd/namespacetheo_1_1decomp.html" title="the namespace that contains all of the decomposition related code.">theo::decomp</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b"> 34</a></span><a class="code hl_function" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ab9f0693c5ec50954d953b28bebe4426b" title="the explicit constructor for routine_t.">routine_t::routine_t</a>(coff::symbol_t* sym,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> coff::image_t* img,</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> coff::section_header_t* scn,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> std::vector&lt;std::uint8_t&gt;&amp; fn,</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> dcmp_type)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> : m_img(img), m_scn(scn), m_data(fn), m_dcmp_type(dcmp_type), m_sym(sym) {}</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8"> 41</a></span>std::vector&lt;decomp::symbol_t&gt; <a class="code hl_function" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a1f790bd144badc71d6c4942cac8fc4e8" title="decompose the function into symbol(s).">routine_t::decompose</a>() {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> std::vector&lt;decomp::symbol_t&gt; result;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">switch</span> (m_dcmp_type) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a>: {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <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 id="l00048" name="l00048"></a><span class="lineno"> 48</span> 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 id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <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 id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">auto</span> scn_reloc = &amp;scn_relocs[idx];</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// if the reloc is in the current function...</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">if</span> (scn_reloc-&gt;virtual_address &gt;= m_sym-&gt;value &amp;&amp;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> scn_reloc-&gt;virtual_address &lt; m_sym-&gt;value + m_data.size()) {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">auto</span> sym_reloc = m_img-&gt;get_symbol(scn_relocs[idx].symbol_index);</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">auto</span> sym_name = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(m_img, sym_reloc);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">auto</span> sym_hash = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym_name.data());</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> relocs.push_back(</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>(scn_reloc-&gt;virtual_address - m_sym-&gt;value,</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> sym_hash, sym_name.data()));</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> result.push_back(<a class="code hl_class" 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>(</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> m_img, <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(m_img, m_sym).<a class="code hl_function" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a" title="gets the function bytes.">data</a>(), m_sym-&gt;value, m_data,</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> m_scn, m_sym, relocs, <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">sym_type_t::function</a>));</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> }</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a>: {</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> std::uint32_t offset = {};</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> xed_error_enum_t err;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> xed_decoded_inst_t instr;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> xed_decoded_inst_zero_set_mode(&amp;instr, &amp;istate);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// keep looping over the section, lower the number of bytes each time...</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">//</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">while</span> ((err = xed_decode(&amp;instr, m_data.data() + offset,</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> m_data.size() - offset)) == XED_ERROR_NONE) {</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// symbol name is of the format: symbol@instroffset, I.E: main@11...</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">//</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">auto</span> new_sym_name = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(m_img, m_sym);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// first instruction doesnt need the @offset...</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">//</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">if</span> (offset)</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> new_sym_name.append(<span class="stringliteral">&quot;@&quot;</span>).append(std::to_string(offset));</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <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 id="l00092" name="l00092"></a><span class="lineno"> 92</span> 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 id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// find if this instruction has a relocation or not...</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// if so, return the reloc_t...</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">//</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">auto</span> reloc = std::find_if(</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> scn_relocs, scn_relocs + m_scn-&gt;num_relocs,</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> [&amp;](coff::reloc_t reloc) {</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> return reloc.virtual_address &gt;= m_sym-&gt;value + offset &amp;&amp;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> reloc.virtual_address &lt;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> m_sym-&gt;value + offset +</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> xed_decoded_inst_get_length(&amp;instr);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> });</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// if there is indeed a reloc for this instruction...</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">//</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> (reloc != scn_relocs + m_scn-&gt;num_relocs) {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">auto</span> sym_reloc = m_img-&gt;get_symbol(reloc-&gt;symbol_index);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">auto</span> sym_name = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(m_img, sym_reloc);</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">auto</span> sym_hash = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym_name.data());</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">auto</span> reloc_offset = reloc-&gt;virtual_address - m_sym-&gt;value - offset;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> relocs.push_back(</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>(reloc_offset, sym_hash, sym_name.data()));</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// add a reloc to the next instruction...</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// note that the offset is ZERO... comp_t will understand that</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// relocs with offset ZERO means the next instructions...</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">//</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">auto</span> next_inst_sym =</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(m_img, m_sym)</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> .append(<span class="stringliteral">&quot;@&quot;</span>)</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> .append(std::to_string(offset +</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> xed_decoded_inst_get_length(&amp;instr)));</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> relocs.push_back(<a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>(</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> 0, <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(next_inst_sym), next_inst_sym.data()));</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// get the instructions bytes</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment">//</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> std::vector&lt;std::uint8_t&gt; inst_bytes(</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> m_data.data() + offset,</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> m_data.data() + offset + xed_decoded_inst_get_length(&amp;instr));</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> result.push_back(<a class="code hl_class" 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>(m_img, new_sym_name, offset,</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> inst_bytes, m_scn, m_sym, relocs,</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">sym_type_t::instruction</a>));</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// after creating the symbol and dealing with relocs then print the</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// information we have concluded...</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment">//</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordtype">char</span> buff[255];</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> offset += xed_decoded_inst_get_length(&amp;instr);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> xed_format_context(XED_SYNTAX_INTEL, &amp;instr, buff, <span class="keyword">sizeof</span> buff, NULL,</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> NULL, NULL);</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> spdlog::info(<span class="stringliteral">&quot;{}: {}&quot;</span>, new_sym_name, buff);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// need to set this so that instr can be used to decode again...</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> xed_decoded_inst_zero_set_mode(&amp;instr, &amp;istate);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> }</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// remove the relocation to the next symbol from the last instruction</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">//</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">auto</span>&amp; last_inst = result.back();</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keyword">auto</span>&amp; last_inst_relocs = last_inst.relocs();</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> last_inst_relocs.erase(last_inst_relocs.end() - 1);</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> }</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span>}</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36"> 168</a></span>coff::section_header_t* <a class="code hl_function" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#ad3a75cb97abbcd9b282772401b256f36" title="gets the section header of the section in which the symbol is located in.">routine_t::scn</a>() {</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">return</span> m_scn;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span>}</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a"> 172</a></span>std::vector&lt;std::uint8_t&gt; <a class="code hl_function" href="../../df/db4/classtheo_1_1decomp_1_1routine__t.html#a605a2be669a10a5a45325a5dca04401a" title="gets the function bytes.">routine_t::data</a>() {</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordflow">return</span> m_data;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>}</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span>} <span class="comment">// namespace theo::decomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,25 +68,24 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::symbol_table_t Member List</div> </div>
<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="../../db/d77/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="../../db/d77/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="../../db/d77/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="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/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="../../db/d77/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="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">size</a>()</td><td class="entry"><a class="el" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e">size</a>()</td><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#abaea9fd899d87b09d60c2b815624e2d2">sym_from_alloc</a>(std::uintptr_t allocated_at)</td><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(std::size_t hash)</td><td class="entry"><a class="el" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(std::size_t hash)</td><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">symbol_table_t</a>()</td><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">theo::recomp::symbol_table_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../db/d77/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="../../db/d77/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/passes/jcc_rewrite_pass.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,35 +69,34 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">jcc_rewrite_pass.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">jcc_rewrite_pass.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/pass.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d8/d5a/pass_8hpp_source.html">obf/pass.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d2/df9/jcc__rewrite__pass_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">theo::obf::jcc_rewrite_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">jcc rewrite pass which rewrites rip relative jcc's so that they are position independent. <a href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,148 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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 id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {<span class="comment"></span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/// jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// independent.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">///</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// given the following code:</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">///</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// jnz label1</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// ; other code goes here</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// label1:</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/// ; more code here</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">///</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">/// the jnz instruction will be rewritten so that the following code is</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// generated:</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">///</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">/// jnz br2</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">/// br1:</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// jmp [rip] ; address after this instruction contains the address</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// ; of the instruction after the jcc.</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// br2:</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// jmp [rip] ; address after this instruction contains the address of where</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">/// ; branch 2 is located.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">///</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// its important to note that other passes will encrypt (transform) the address</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// of the next instruction. There is actually no jmp [rip] either, push/ret is</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">/// used.</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html"> 61</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" title="jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position independent.">jcc_rewrite_pass_t</a> : <span class="keyword">public</span> <a class="code hl_class" 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> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" title="jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position independent.">jcc_rewrite_pass_t</a>() : <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611" title="the explicit constructor of the pass_t base class.">pass_t</a>(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>) {}</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" title="jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position independent.">jcc_rewrite_pass_t</a>* <a class="code hl_function" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">get</a>();</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(<a class="code hl_class" 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>* sym);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span>};</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,23 +68,22 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::operation_t Member List</div> </div>
<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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::reloc_t Member List</div> </div>
<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="../../dd/d37/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="../../dd/d37/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="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ad49901bf8b6b0e3963e64d17d4b51aec">get_transforms</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="odd"><td class="entry"><a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78">get_transforms</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461">hash</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">name</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="odd"><td class="entry"><a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec">name</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>()</td><td class="entry"><a class="el" href="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a>(std::uint32_t offset)</td><td class="entry"><a class="el" href="../../dd/d37/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="odd"><td class="entry"><a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a99e65270ace1ff4f080bd4040c8a43dd">offset</a>(std::uint32_t offset)</td><td class="entry"><a class="el" href="../../dd/d37/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="../../dd/d37/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="../../dd/d37/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,21 +68,20 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::reloc_transform_pass_t Member List</div> </div>
<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="../../dc/d39/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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a89aa46da5f721057cd8cf5189207d464">get</a>()</td><td class="entry"><a class="el" href="../../dc/d39/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="../../d4/dad/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="../../d4/dad/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="odd"><td class="entry"><a class="el" href="../../d4/dad/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="../../d4/dad/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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="../../dc/d39/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,21 +68,20 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::next_inst_pass_t Member List</div> </div>
<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="../../d5/d08/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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">get</a>()</td><td class="entry"><a class="el" href="../../d5/d08/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="../../d4/dad/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="../../d4/dad/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="odd"><td class="entry"><a class="el" href="../../d4/dad/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="../../d4/dad/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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d5/d08/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/recomp.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,35 +69,34 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">recomp.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">recomp.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">decomp/decomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/engine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/symbol_table.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp/decomp.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../de/d46/engine_8hpp_source.html">obf/engine.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">recomp/symbol_table.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d4/d4a/recomp_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the main class responsible for recomposition <a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <br /></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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a7364f8c94855a2a871a9d6e1057989f3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">theo::recomp::resolver_t</a> = std::function&lt; std::uintptr_t(std::string)&gt;</td></tr>
<tr class="memdesc:a7364f8c94855a2a871a9d6e1057989f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">a function which is called by <a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> to resolve external symbols <a href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">More...</a><br /></td></tr>
@ -111,7 +111,7 @@ Typedefs</h2></td></tr>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,207 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/recomp/recomp.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">recomp.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d4/d4a/recomp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span><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 id="l00034" name="l00034"></a><span class="lineno"> 34</span><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 id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"></span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// this namespace encompasses all recomposition related code.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../da/dbd/namespacetheo_1_1recomp.html"> 39</a></span><span class="comment"></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/dbd/namespacetheo_1_1recomp.html" title="this namespace encompasses all recomposition related code.">theo::recomp</a> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"></span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// a function which is called by recomp_t to resolve external symbols</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3"> 44</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> = <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;std::uintptr_t(std::string)&gt;;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"></span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// a function which is called by recomp_t to copy symbols into memory.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc"> 49</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> = <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;void(std::uintptr_t, <span class="keywordtype">void</span>*, std::uint32_t)&gt;;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"></span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// a function which is called to allocate space for a symbol.</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">///</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// the first param is the size of the symbol, the second param is the</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">/// characteristics of the section which the symbol is allocated in.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241"> 57</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> =</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;std::uintptr_t(std::uint32_t,</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> coff::section_characteristics_t)&gt;;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"></span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">/// the main class responsible for recomposition</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html"> 64</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// the explicit constructor for the recomp_t class.</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> /// &lt;param name=&quot;dcmp&quot;&gt;pointer to a decomp_t class.&lt;/param&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> /// &lt;param name=&quot;alloc&quot;&gt;lambda function which is used to allocate memory for</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> /// symbols.&lt;/param&gt; &lt;param name=&quot;copy&quot;&gt;lambda function used to copy bytes</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// into allocations.&lt;/param&gt; &lt;param name=&quot;resolve&quot;&gt;lambda function used to</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// resolve external symbols.&lt;/param&gt;</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589" title="the explicit constructor for the recomp_t class.">recomp_t</a>(<a class="code hl_class" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp::decomp_t</a>* dcmp,</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> alloc,</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> copy,</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>);</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"></span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> /// when called, this function allocates space for every symbol.</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39" title="when called, this function allocates space for every symbol.">allocate</a>();</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"></span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// when called, this function resolves all relocations in every symbol.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>();</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"></span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> /// when called, this function copies symbols into allocations.</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e" title="when called, this function copies symbols into allocations.">copy_syms</a>();</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"></span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> /// setter for the allocater lambda function.</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> /// &lt;param name=&quot;alloc&quot;&gt;lambda function which allocates memory for</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// symbols.&lt;/param&gt;</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07" title="setter for the allocater lambda function.">allocator</a>(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> alloc);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"></span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> /// setter for the copier lambda function.</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> /// &lt;param name=&quot;copy&quot;&gt;copier lambda function used to copy bytes into</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> /// allocations made by the allocator.&lt;/param&gt;</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1" title="setter for the copier lambda function.">copier</a>(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> copy);</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"></span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment"> /// setter for the resolve lambda function.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment"> /// &lt;param name=&quot;resolve&quot;&gt;lambda function to resolve external symbols.&lt;/param&gt;</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470" title="setter for the resolve lambda function.">resolver</a>(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment"></span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> /// resolves the address of a function given its name.</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;the name of the symbol to resolve the location</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"> /// of.&lt;/param&gt; &lt;returns&gt;the address of the symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"></span> std::uintptr_t <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>(<span class="keyword">const</span> std::string&amp;&amp; sym);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_class" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp::decomp_t</a>* m_dcmp;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> m_resolver;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> m_copier;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> m_allocator;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span>};</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span>} <span class="comment">// namespace theo::recomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::decomp_t Member List</div> </div>
<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="../../d6/d0e/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="../../d6/d0e/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="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">decompose</a>(std::string &amp;entry_sym)</td><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469">decompose</a>(std::string &amp;entry_sym)</td><td class="entry"><a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef">objs</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef">objs</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a79c965ec0a996a936faae7f54b0e055e">rtns</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06">scn_hash_tbl</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">theo::decomp::decomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06">scn_hash_tbl</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()</td><td class="entry"><a class="el" href="../../d6/d0e/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,17 +69,15 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d0/d08/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>
<a href="#pub-methods">Public Member Functions</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="../../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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">pass.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d8/d5a/pass_8hpp_source.html">pass.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::pass_t:</div>
<div class="dyncontent">
@ -92,7 +91,7 @@ Inheritance diagram for theo::obf::pass_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="../../d4/dad/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="../../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> base class. <a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">More...</a><br /></td></tr>
@ -105,10 +104,12 @@ Public Member Functions</h2></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="../../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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../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> constructor) and pass it the type of symbol which you are interesting in receiving.</p>
<div class="textblock"><p >the <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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../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> 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="../../d8/d5a/pass_8hpp_source.html#l00055">55</a> of file <a class="el" href="../../d8/d5a/pass_8hpp_source.html">pass.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abd4ab22cc2822b968267be7f8397d611"></a>
<a id="abd4ab22cc2822b968267be7f8397d611" name="abd4ab22cc2822b968267be7f8397d611"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd4ab22cc2822b968267be7f8397d611">&#9670;&nbsp;</a></span>pass_t()</h2>
<div class="memitem">
@ -139,13 +140,14 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;: m_sym_type(<a class="code" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>){};</div>
<div class="ttc" id="aclasstheo_1_1obf_1_1pass__t_html_a46608a6c2dfb8ff657e44be9b50e0dfb"><div class="ttname"><a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">theo::obf::pass_t::sym_type</a></div><div class="ttdeci">decomp::sym_type_t sym_type()</div><div class="ttdoc">gets the passes symbol type.</div><div class="ttdef"><b>Definition:</b> pass.hpp:76</div></div>
<p class="definition">Definition at line <a class="el" href="../../d8/d5a/pass_8hpp_source.html#l00063">63</a> of file <a class="el" href="../../d8/d5a/pass_8hpp_source.html">pass.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 63</span>: m_sym_type(<a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb" title="gets the passes symbol type.">sym_type</a>){};</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acfadc013ff0754d66a18baffdb1a61d1"></a>
<a id="acfadc013ff0754d66a18baffdb1a61d1" name="acfadc013ff0754d66a18baffdb1a61d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfadc013ff0754d66a18baffdb1a61d1">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -177,11 +179,11 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
<p>Implemented in <a class="el" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">theo::obf::reloc_transform_pass_t</a>, <a class="el" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">theo::obf::next_inst_pass_t</a>, <a class="el" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">theo::obf::jcc_rewrite_pass_t</a>, and <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df">theo::obf::hello_world_pass_t</a>.</p>
<p>Implemented in <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df">theo::obf::hello_world_pass_t</a>, <a class="el" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">theo::obf::jcc_rewrite_pass_t</a>, <a class="el" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">theo::obf::next_inst_pass_t</a>, and <a class="el" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">theo::obf::reloc_transform_pass_t</a>.</p>
</div>
</div>
<a id="a46608a6c2dfb8ff657e44be9b50e0dfb"></a>
<a id="a46608a6c2dfb8ff657e44be9b50e0dfb" name="a46608a6c2dfb8ff657e44be9b50e0dfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46608a6c2dfb8ff657e44be9b50e0dfb">&#9670;&nbsp;</a></span>sym_type()</h2>
<div class="memitem">
@ -206,17 +208,19 @@ Public Member Functions</h2></td></tr>
<p>gets the passes symbol type. </p>
<dl class="section return"><dt>Returns</dt><dd>the passes symbol type.</dd></dl>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{ <span class="keywordflow">return</span> m_sym_type; }</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d5a/pass_8hpp_source.html#l00076">76</a> of file <a class="el" href="../../d8/d5a/pass_8hpp_source.html">pass.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 76</span>{ <span class="keywordflow">return</span> m_sym_type; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/<a class="el" href="../../">pass.hpp</a></li>
<li>include/obf/<a class="el" href="../../d8/d5a/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d9/d27/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>
<a href="#pub-methods">Public Member Functions</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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">recomp.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589">recomp_t</a> (<a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">decomp::decomp_t</a> *dcmp, <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">allocator_t</a> alloc, <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">copier_t</a> copy, <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a> <a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> class. <a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589">More...</a><br /></td></tr>
@ -108,9 +107,11 @@ Public Member Functions</h2></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>
<div class="textblock"><p >the main class responsible for recomposition </p>
<p class="definition">Definition at line <a class="el" href="../../d4/d4a/recomp_8hpp_source.html#l00064">64</a> of file <a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac5f04297153c2e445330e5cc103e8589"></a>
<a id="ac5f04297153c2e445330e5cc103e8589" name="ac5f04297153c2e445330e5cc103e8589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5f04297153c2e445330e5cc103e8589">&#9670;&nbsp;</a></span>recomp_t()</h2>
<div class="memitem">
@ -166,13 +167,14 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; : m_dcmp(dcmp), m_allocator(alloc), m_copier(copy), m_resolver(<a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>) {}</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> recomp.cpp:92</div></div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> : m_dcmp(dcmp), m_allocator(alloc), m_copier(copy), m_resolver(<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>) {}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a78502665e218d3addca9b1e5e3875f39"></a>
<a id="a78502665e218d3addca9b1e5e3875f39" name="a78502665e218d3addca9b1e5e3875f39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78502665e218d3addca9b1e5e3875f39">&#9670;&nbsp;</a></span>allocate()</h2>
<div class="memitem">
@ -188,69 +190,67 @@ Public Member Functions</h2></td></tr>
</div><div class="memdoc">
<p>when called, this function allocates space for every symbol. </p>
<div class="fragment"><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="comment">// map code &amp; data/rdata/bss sections first...</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<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">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">switch</span> (sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a>()) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; case decomp::sym_type_t::section:</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; case decomp::sym_type_t::function:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; case decomp::sym_type_t::instruction: {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; sym.allocated_at(m_allocator(sym.size(), sym.scn()-&gt;characteristics));</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; break;</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; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</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"> 56</span>&#160; <span class="comment">// then map data/rdata/bss symbols to the allocated sections...</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<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">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a>() == <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">decomp::sym_type_t::data</a>) {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// if the symbol has a section then we will refer to the allocation made</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// for that section...</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; if (sym.scn()) {</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; auto scn_sym =</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; m_dcmp-&gt;syms()-&gt;sym_from_hash(m_dcmp-&gt;scn_hash_tbl()[sym.scn()]);</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; if (!scn_sym.has_value()) {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; spdlog::error(<span class="stringliteral">&quot;failed to locate section: {} for symbol: {}&quot;</span>,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; sym.scn()-&gt;name.to_string(), sym.name());</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; assert(scn_sym.has_value());</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; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; sym.allocated_at(scn_sym.value()-&gt;allocated_at() + sym.offset());</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">// else if there is no section then we allocate based upon the</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// size of the symbol... this is only done for symbols that are</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// bss...</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; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// bss is read write...</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; coff::section_characteristics_t prot = {};</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; prot.mem_read = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; prot.mem_write = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a>(m_allocator(sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">size</a>(), sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>()-&gt;characteristics));</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</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;}</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> decomp.cpp:293</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> symbol.hpp:59</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a16587cddd37cd45d9ec6cd25c229e8d1"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">theo::decomp::symbol_t::type</a></div><div class="ttdeci">sym_type_t type() const</div><div class="ttdoc">returns the type of the symbol.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:80</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a64d51dabe91687ed40c3942d106fd7dd"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">theo::decomp::symbol_t::scn</a></div><div class="ttdeci">coff::section_header_t * scn() const</div><div class="ttdoc">gets the section header of the section in which the symbol is contained.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:64</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_ae33f1452b01fe80f9c384241b9fe6286"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">theo::decomp::symbol_t::size</a></div><div class="ttdeci">std::uint32_t size() const</div><div class="ttdoc">returns the size of the symbol.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:72</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_ae92f3e35fba82a1d16a58ad09b39fb47"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">theo::decomp::symbol_t::allocated_at</a></div><div class="ttdeci">std::uintptr_t allocated_at() const</div><div class="ttdoc">returns the address where the symbol is allocated.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:60</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> symbol_table.cpp:49</div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">theo::decomp::data</a></div><div class="ttdeci">@ data</div><div class="ttdef"><b>Definition:</b> symbol.hpp:46</div></div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00040">40</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 40</span> {</div>
<div class="line"><span class="lineno"> 41</span> <span class="comment">// map code &amp; data/rdata/bss sections first...</span></div>
<div class="line"><span class="lineno"> 42</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 43</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">switch</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>()) {</div>
<div class="line"><span class="lineno"> 45</span> case decomp::sym_type_t::section:</div>
<div class="line"><span class="lineno"> 46</span> case decomp::sym_type_t::function:</div>
<div class="line"><span class="lineno"> 47</span> case decomp::sym_type_t::instruction: {</div>
<div class="line"><span class="lineno"> 48</span> sym.allocated_at(m_allocator(sym.size(), sym.scn()-&gt;characteristics));</div>
<div class="line"><span class="lineno"> 49</span> break;</div>
<div class="line"><span class="lineno"> 50</span> }</div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">default</span>:</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 53</span> }</div>
<div class="line"><span class="lineno"> 54</span> });</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> <span class="comment">// then map data/rdata/bss symbols to the allocated sections...</span></div>
<div class="line"><span class="lineno"> 57</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 58</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">if</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>() == <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">decomp::sym_type_t::data</a>) {</div>
<div class="line"><span class="lineno"> 60</span> <span class="comment">// if the symbol has a section then we will refer to the allocation made</span></div>
<div class="line"><span class="lineno"> 61</span> <span class="comment">// for that section...</span></div>
<div class="line"><span class="lineno"> 62</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 63</span> if (sym.scn()) {</div>
<div class="line"><span class="lineno"> 64</span> auto scn_sym =</div>
<div class="line"><span class="lineno"> 65</span> m_dcmp-&gt;syms()-&gt;sym_from_hash(m_dcmp-&gt;scn_hash_tbl()[sym.scn()]);</div>
<div class="line"><span class="lineno"> 66</span> </div>
<div class="line"><span class="lineno"> 67</span> if (!scn_sym.has_value()) {</div>
<div class="line"><span class="lineno"> 68</span> spdlog::error(<span class="stringliteral">&quot;failed to locate section: {} for symbol: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 69</span> sym.scn()-&gt;name.to_string(), sym.name());</div>
<div class="line"><span class="lineno"> 70</span> </div>
<div class="line"><span class="lineno"> 71</span> assert(scn_sym.has_value());</div>
<div class="line"><span class="lineno"> 72</span> }</div>
<div class="line"><span class="lineno"> 73</span> </div>
<div class="line"><span class="lineno"> 74</span> sym.allocated_at(scn_sym.value()-&gt;allocated_at() + sym.offset());</div>
<div class="line"><span class="lineno"> 75</span> } <span class="keywordflow">else</span> { <span class="comment">// else if there is no section then we allocate based upon the</span></div>
<div class="line"><span class="lineno"> 76</span> <span class="comment">// size of the symbol... this is only done for symbols that are</span></div>
<div class="line"><span class="lineno"> 77</span> <span class="comment">// bss...</span></div>
<div class="line"><span class="lineno"> 78</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 79</span> </div>
<div class="line"><span class="lineno"> 80</span> <span class="comment">// bss is read write...</span></div>
<div class="line"><span class="lineno"> 81</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 82</span> coff::section_characteristics_t prot = {};</div>
<div class="line"><span class="lineno"> 83</span> prot.mem_read = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 84</span> prot.mem_write = <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 85</span> </div>
<div class="line"><span class="lineno"> 86</span> sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>(m_allocator(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286" title="returns the size of the symbol.">size</a>(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>()-&gt;characteristics));</div>
<div class="line"><span class="lineno"> 87</span> }</div>
<div class="line"><span class="lineno"> 88</span> }</div>
<div class="line"><span class="lineno"> 89</span> });</div>
<div class="line"><span class="lineno"> 90</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00049">theo::recomp::symbol_table_t::for_each()</a>, <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00293">theo::decomp::decomp_t::syms()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00080">theo::decomp::symbol_t::type()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">theo::theo_t::compose()</a>.</p>
</div>
</div>
<a id="a0da9a904b0057c14190218592aff0f07"></a>
<a id="a0da9a904b0057c14190218592aff0f07" name="a0da9a904b0057c14190218592aff0f07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0da9a904b0057c14190218592aff0f07">&#9670;&nbsp;</a></span>allocator()</h2>
<div class="memitem">
@ -273,13 +273,15 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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; m_allocator = alloc;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00163">163</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 163</span> {</div>
<div class="line"><span class="lineno"> 164</span> m_allocator = alloc;</div>
<div class="line"><span class="lineno"> 165</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa6fecf752d4c5bc211e164d8496724b1"></a>
<a id="aa6fecf752d4c5bc211e164d8496724b1" name="aa6fecf752d4c5bc211e164d8496724b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6fecf752d4c5bc211e164d8496724b1">&#9670;&nbsp;</a></span>copier()</h2>
<div class="memitem">
@ -302,13 +304,15 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; m_copier = copy;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00167">167</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 167</span> {</div>
<div class="line"><span class="lineno"> 168</span> m_copier = copy;</div>
<div class="line"><span class="lineno"> 169</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a080d88f122d12faf2e328c9bdd10be6e"></a>
<a id="a080d88f122d12faf2e328c9bdd10be6e" name="a080d88f122d12faf2e328c9bdd10be6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a080d88f122d12faf2e328c9bdd10be6e">&#9670;&nbsp;</a></span>copy_syms()</h2>
<div class="memitem">
@ -324,18 +328,23 @@ Public Member Functions</h2></td></tr>
</div><div class="memdoc">
<p>when called, this function copies symbols into allocations. </p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// copy symbols into memory using the copier supplied...</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<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">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; m_copier(sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a>(), sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>().data(), sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>().size());</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;}</div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_aa3ecf0b480d10bffe68812409c06d61b"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">theo::decomp::symbol_t::data</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; &amp; data()</div><div class="ttdoc">returns a vector by reference of bytes containing the data of the symbol.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:76</div></div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00155">155</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 155</span> {</div>
<div class="line"><span class="lineno"> 156</span> <span class="comment">// copy symbols into memory using the copier supplied...</span></div>
<div class="line"><span class="lineno"> 157</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 158</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><span class="lineno"> 159</span> m_copier(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().size());</div>
<div class="line"><span class="lineno"> 160</span> });</div>
<div class="line"><span class="lineno"> 161</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00060">theo::decomp::symbol_t::allocated_at()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">theo::decomp::symbol_t::data()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">theo::theo_t::compose()</a>.</p>
</div>
</div>
<a id="a299fbede378f04991df2e39293307094"></a>
<a id="a299fbede378f04991df2e39293307094" name="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">
@ -351,79 +360,78 @@ Public Member Functions</h2></td></tr>
</div><div class="memdoc">
<p>when called, this function resolves all relocations in every symbol. </p>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// resolve relocations in all symbols...</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<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">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">auto</span>&amp; relocs = sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">relocs</a>();</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::for_each(relocs.begin(), relocs.end(), [&amp;](reloc_t&amp; reloc) {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; if (reloc.offset() &gt; sym.data().size()) {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; spdlog::error(</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="stringliteral">&quot;invalid relocation... writing outside of symbol length... offset: &quot;</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="stringliteral">&quot;{} sym size: {}&quot;</span>,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; sym.offset(), sym.data().size());</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; assert(reloc.offset() &gt; sym.data().size());</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; </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// try and resolve the symbol by refering to the internal symbol table</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// first... if there is no symbol then refer to the resolver...</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">auto</span> reloc_sym = m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(reloc.hash());</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">auto</span> allocated_at = reloc_sym.has_value()</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; ? reloc_sym.value()-&gt;allocated_at()</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; : m_resolver(reloc.name());</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; if (!allocated_at) {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; spdlog::error(<span class="stringliteral">&quot;failed to resolve reloc from symbol: {} to symbol: {}&quot;</span>,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>(), reloc.name());</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; assert(allocated_at);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">switch</span> (sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a>()) {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">decomp::sym_type_t::section</a>: {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">auto</span> scn_sym =</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5">sym_from_hash</a>(m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06">scn_hash_tbl</a>()[sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>()]);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(scn_sym.value()-&gt;data().data() +</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; reloc.offset()) = allocated_at;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">break</span>;</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="keywordflow">case</span> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">decomp::sym_type_t::function</a>: {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>().data() +</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; reloc.offset()) = allocated_at;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>: {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">auto</span>&amp; transforms = reloc.get_transforms();</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; std::for_each(</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; transforms.begin(), transforms.end(),</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; [&amp;](std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&amp; t) {</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; allocated_at = (*t.first)(allocated_at, t.second);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; });</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>().data() +</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; reloc.offset()) = allocated_at;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; });</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="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> decomp.cpp:297</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> symbol.cpp:52</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_abc158e1dc1567161f0a57ed15fc718f7"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">theo::decomp::symbol_t::relocs</a></div><div class="ttdeci">std::vector&lt; recomp::reloc_t &gt; &amp; relocs()</div><div class="ttdoc">returns a vector of relocations.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:96</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> symbol_table.cpp:54</div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">theo::decomp::section</a></div><div class="ttdeci">@ section</div><div class="ttdef"><b>Definition:</b> symbol.hpp:47</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> symbol.hpp:45</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> symbol.hpp:44</div></div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">92</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 92</span> {</div>
<div class="line"><span class="lineno"> 93</span> <span class="comment">// resolve relocations in all symbols...</span></div>
<div class="line"><span class="lineno"> 94</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 95</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><span class="lineno"> 96</span> <span class="keyword">auto</span>&amp; relocs = sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>();</div>
<div class="line"><span class="lineno"> 97</span> std::for_each(relocs.begin(), relocs.end(), [&amp;](reloc_t&amp; reloc) {</div>
<div class="line"><span class="lineno"> 98</span> if (reloc.offset() &gt; sym.data().size()) {</div>
<div class="line"><span class="lineno"> 99</span> spdlog::error(</div>
<div class="line"><span class="lineno"> 100</span> <span class="stringliteral">&quot;invalid relocation... writing outside of symbol length... offset: &quot;</span></div>
<div class="line"><span class="lineno"> 101</span> <span class="stringliteral">&quot;{} sym size: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 102</span> sym.offset(), sym.data().size());</div>
<div class="line"><span class="lineno"> 103</span> </div>
<div class="line"><span class="lineno"> 104</span> assert(reloc.offset() &gt; sym.data().size());</div>
<div class="line"><span class="lineno"> 105</span> }</div>
<div class="line"><span class="lineno"> 106</span> </div>
<div class="line"><span class="lineno"> 107</span> <span class="comment">// try and resolve the symbol by refering to the internal symbol table</span></div>
<div class="line"><span class="lineno"> 108</span> <span class="comment">// first... if there is no symbol then refer to the resolver...</span></div>
<div class="line"><span class="lineno"> 109</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 110</span> <span class="keyword">auto</span> reloc_sym = m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(reloc.hash());</div>
<div class="line"><span class="lineno"> 111</span> <span class="keyword">auto</span> allocated_at = reloc_sym.has_value()</div>
<div class="line"><span class="lineno"> 112</span> ? reloc_sym.value()-&gt;allocated_at()</div>
<div class="line"><span class="lineno"> 113</span> : m_resolver(reloc.name());</div>
<div class="line"><span class="lineno"> 114</span> </div>
<div class="line"><span class="lineno"> 115</span> if (!allocated_at) {</div>
<div class="line"><span class="lineno"> 116</span> spdlog::error(<span class="stringliteral">&quot;failed to resolve reloc from symbol: {} to symbol: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 117</span> sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>(), reloc.name());</div>
<div class="line"><span class="lineno"> 118</span> </div>
<div class="line"><span class="lineno"> 119</span> assert(allocated_at);</div>
<div class="line"><span class="lineno"> 120</span> }</div>
<div class="line"><span class="lineno"> 121</span> </div>
<div class="line"><span class="lineno"> 122</span> <span class="keywordflow">switch</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>()) {</div>
<div class="line"><span class="lineno"> 123</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">decomp::sym_type_t::section</a>: {</div>
<div class="line"><span class="lineno"> 124</span> <span class="keyword">auto</span> scn_sym =</div>
<div class="line"><span class="lineno"> 125</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06" title="gets the section hash table section header --&gt; hash of the section header ptr.">scn_hash_tbl</a>()[sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>()]);</div>
<div class="line"><span class="lineno"> 126</span> </div>
<div class="line"><span class="lineno"> 127</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(scn_sym.value()-&gt;data().data() +</div>
<div class="line"><span class="lineno"> 128</span> reloc.offset()) = allocated_at;</div>
<div class="line"><span class="lineno"> 129</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 130</span> }</div>
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">decomp::sym_type_t::function</a>: {</div>
<div class="line"><span class="lineno"> 132</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data() +</div>
<div class="line"><span class="lineno"> 133</span> reloc.offset()) = allocated_at;</div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 135</span> }</div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>: {</div>
<div class="line"><span class="lineno"> 137</span> <span class="keyword">auto</span>&amp; transforms = reloc.get_transforms();</div>
<div class="line"><span class="lineno"> 138</span> std::for_each(</div>
<div class="line"><span class="lineno"> 139</span> transforms.begin(), transforms.end(),</div>
<div class="line"><span class="lineno"> 140</span> [&amp;](std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&amp; t) {</div>
<div class="line"><span class="lineno"> 141</span> allocated_at = (*t.first)(allocated_at, t.second);</div>
<div class="line"><span class="lineno"> 142</span> });</div>
<div class="line"><span class="lineno"> 143</span> </div>
<div class="line"><span class="lineno"> 144</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data() +</div>
<div class="line"><span class="lineno"> 145</span> reloc.offset()) = allocated_at;</div>
<div class="line"><span class="lineno"> 146</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 147</span> }</div>
<div class="line"><span class="lineno"> 148</span> <span class="keywordflow">default</span>:</div>
<div class="line"><span class="lineno"> 149</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 150</span> }</div>
<div class="line"><span class="lineno"> 151</span> });</div>
<div class="line"><span class="lineno"> 152</span> });</div>
<div class="line"><span class="lineno"> 153</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">theo::decomp::symbol_t::data()</a>, <a class="el" href="../../d6/d62/symbol_8hpp_source.html#l00044">theo::decomp::function</a>, <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00101">theo::recomp::reloc_t::get_transforms()</a>, <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00061">theo::recomp::reloc_t::hash()</a>, <a class="el" href="../../d6/d62/symbol_8hpp_source.html#l00045">theo::decomp::instruction</a>, <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00067">theo::recomp::reloc_t::name()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00052">theo::decomp::symbol_t::name()</a>, <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00075">theo::recomp::reloc_t::offset()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00096">theo::decomp::symbol_t::relocs()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00064">theo::decomp::symbol_t::scn()</a>, <a class="el" href="../../d6/d62/symbol_8hpp_source.html#l00047">theo::decomp::section</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00080">theo::decomp::symbol_t::type()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">theo::theo_t::compose()</a>.</p>
</div>
</div>
<a id="ae0c56f0f8af33b390e4123509523602c"></a>
<a id="ae0c56f0f8af33b390e4123509523602c" name="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">
@ -447,15 +455,18 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the address of the symbol.</dd></dl>
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">auto</span> res = m_dcmp-&gt;<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>()-&gt;<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="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> res.has_value() ? res.value()-&gt;allocated_at() : 0;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</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> symbol.cpp:88</div></div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00175">175</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 175</span> {</div>
<div class="line"><span class="lineno"> 176</span> <span class="keyword">auto</span> res = m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym));</div>
<div class="line"><span class="lineno"> 177</span> <span class="keywordflow">return</span> res.has_value() ? res.value()-&gt;allocated_at() : 0;</div>
<div class="line"><span class="lineno"> 178</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">theo::decomp::symbol_t::hash()</a>.</p>
</div>
</div>
<a id="a1be6d0cdb57565c31b138248c8b2d470"></a>
<a id="a1be6d0cdb57565c31b138248c8b2d470" name="a1be6d0cdb57565c31b138248c8b2d470"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1be6d0cdb57565c31b138248c8b2d470">&#9670;&nbsp;</a></span>resolver()</h2>
<div class="memitem">
@ -478,20 +489,22 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; m_resolver = <a class="code" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00171">171</a> of file <a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 171</span> {</div>
<div class="line"><span class="lineno"> 172</span> m_resolver = <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>;</div>
<div class="line"><span class="lineno"> 173</span>}</div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/recomp/<a class="el" href="../../">recomp.hpp</a></li>
<li>src/recomp/<a class="el" href="../../">recomp.cpp</a></li>
<li>include/recomp/<a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a></li>
<li>src/recomp/<a class="el" href="../../db/d55/recomp_8cpp_source.html">recomp.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,17 +70,15 @@ $(function() {
<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="../../d4/d3c/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">next_inst_pass.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d5/d54/next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::next_inst_pass_t:</div>
<div class="dyncontent">
@ -90,7 +89,7 @@ Inheritance diagram for theo::obf::next_inst_pass_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">run</a> (<a class="el" href="../../d9/dd5/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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">More...</a><br /></td></tr>
@ -99,26 +98,31 @@ Public Member Functions</h2></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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="../../d4/dad/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="../../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> base class. <a href="../../d4/dad/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:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a> (<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)=0</td></tr>
<tr class="memdesc:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">More...</a><br /></td></tr>
<tr class="separator:acfadc013ff0754d66a18baffdb1a61d1 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="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/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="../../d4/dad/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a964e6f5291ccba0442519f2563b3a2e9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d5/d08/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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">get</a> ()</td></tr>
<tr class="separator:a964e6f5291ccba0442519f2563b3a2e9"><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>
<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="../../d5/d54/next__inst__pass_8hpp_source.html#l00085">85</a> of file <a class="el" href="../../d5/d54/next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a964e6f5291ccba0442519f2563b3a2e9"></a>
<a id="a964e6f5291ccba0442519f2563b3a2e9" name="a964e6f5291ccba0442519f2563b3a2e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a964e6f5291ccba0442519f2563b3a2e9">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
@ -140,14 +144,18 @@ Static Public Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> next_inst_pass_t obj;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html">next_inst_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
<div class="line"><span class="lineno"> 35</span> <span class="keyword">static</span> next_inst_pass_t obj;</div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 37</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>, and <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="ae4cbba78b14c2b9da794386e4d92f40f"></a>
<a id="ae4cbba78b14c2b9da794386e4d92f40f" name="ae4cbba78b14c2b9da794386e4d92f40f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4cbba78b14c2b9da794386e4d92f40f">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -180,73 +188,78 @@ Static Public Member Functions</h2></td></tr>
</dl>
<p>Implements <a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::optional&lt;recomp::reloc_t*&gt; reloc;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (!(reloc = has_next_inst_reloc(sym)).has_value())</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</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; xed_decoded_inst_t inst = m_tmp_inst;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::vector&lt;std::uint8_t&gt; new_inst_bytes =</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">transform::generate</a>(&amp;inst, reloc.value(), 3, 6);</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">// add a push [rip+offset] and update reloc-&gt;offset()...</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::uint32_t inst_len = {};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</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; xed_error_enum_t err;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; xed_encoder_request_t req;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</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"> 56</span>&#160; xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_PUSH);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; xed_encoder_request_set_mem0(&amp;req);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; xed_encoder_request_set_operand_order(&amp;req, 0, XED_OPERAND_MEM0);</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; xed_encoder_request_set_base0(&amp;req, XED_REG_RIP);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; xed_encoder_request_set_seg0(&amp;req, XED_REG_INVALID);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; xed_encoder_request_set_index(&amp;req, XED_REG_INVALID);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; xed_encoder_request_set_scale(&amp;req, 0);</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; xed_encoder_request_set_memory_operand_length(&amp;req, 8);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; xed_encoder_request_set_memory_displacement(&amp;req, new_inst_bytes.size() + 1,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 1);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> ((err = xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len)) !=</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; XED_ERROR_NONE) {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; spdlog::info(<span class="stringliteral">&quot;failed to encode instruction... reason: {}&quot;</span>,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; xed_error_enum_t2str(err));</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; assert(err == XED_ERROR_NONE);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; new_inst_bytes.insert(new_inst_bytes.begin(), inst_buff,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; inst_buff + inst_len);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// put a return instruction at the end of the decrypt instructions...</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; new_inst_bytes.push_back(0xC3);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; sym-&gt;data().insert(sym-&gt;data().end(), new_inst_bytes.begin(),</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; new_inst_bytes.end());</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; reloc.value()-&gt;offset(sym-&gt;data().size());</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; sym-&gt;data().resize(sym-&gt;data().size() + 8);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html_a416c6c93ce55a4ab9f70592951d15704"><div class="ttname"><a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">theo::obf::transform::generate</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; generate(xed_decoded_inst_t *inst, recomp::reloc_t *reloc, std::uint8_t low, std::uint8_t high)</div><div class="ttdoc">generate a sequence of transformations given an instruction that has a relocation in it.</div><div class="ttdef"><b>Definition:</b> gen.hpp:45</div></div>
<p class="definition">Definition at line <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00038">38</a> of file <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html">next_inst_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> {</div>
<div class="line"><span class="lineno"> 39</span> std::optional&lt;recomp::reloc_t*&gt; reloc;</div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">if</span> (!(reloc = has_next_inst_reloc(sym)).has_value())</div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 42</span> </div>
<div class="line"><span class="lineno"> 43</span> xed_decoded_inst_t inst = m_tmp_inst;</div>
<div class="line"><span class="lineno"> 44</span> std::vector&lt;std::uint8_t&gt; new_inst_bytes =</div>
<div class="line"><span class="lineno"> 45</span> <a class="code hl_function" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982" title="generate a sequence of transformations given an instruction that has a relocation in it.">transform::generate</a>(&amp;inst, reloc.value(), 3, 6);</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> <span class="comment">// add a push [rip+offset] and update reloc-&gt;offset()...</span></div>
<div class="line"><span class="lineno"> 48</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 49</span> std::uint32_t inst_len = {};</div>
<div class="line"><span class="lineno"> 50</span> std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> xed_error_enum_t err;</div>
<div class="line"><span class="lineno"> 53</span> xed_encoder_request_t req;</div>
<div class="line"><span class="lineno"> 54</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><span class="lineno"> 57</span> xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><span class="lineno"> 58</span> xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_PUSH);</div>
<div class="line"><span class="lineno"> 59</span> </div>
<div class="line"><span class="lineno"> 60</span> xed_encoder_request_set_mem0(&amp;req);</div>
<div class="line"><span class="lineno"> 61</span> xed_encoder_request_set_operand_order(&amp;req, 0, XED_OPERAND_MEM0);</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> xed_encoder_request_set_base0(&amp;req, XED_REG_RIP);</div>
<div class="line"><span class="lineno"> 64</span> xed_encoder_request_set_seg0(&amp;req, XED_REG_INVALID);</div>
<div class="line"><span class="lineno"> 65</span> xed_encoder_request_set_index(&amp;req, XED_REG_INVALID);</div>
<div class="line"><span class="lineno"> 66</span> xed_encoder_request_set_scale(&amp;req, 0);</div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> xed_encoder_request_set_memory_operand_length(&amp;req, 8);</div>
<div class="line"><span class="lineno"> 69</span> xed_encoder_request_set_memory_displacement(&amp;req, new_inst_bytes.size() + 1,</div>
<div class="line"><span class="lineno"> 70</span> 1);</div>
<div class="line"><span class="lineno"> 71</span> </div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">if</span> ((err = xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len)) !=</div>
<div class="line"><span class="lineno"> 73</span> XED_ERROR_NONE) {</div>
<div class="line"><span class="lineno"> 74</span> spdlog::info(<span class="stringliteral">&quot;failed to encode instruction... reason: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 75</span> xed_error_enum_t2str(err));</div>
<div class="line"><span class="lineno"> 76</span> </div>
<div class="line"><span class="lineno"> 77</span> assert(err == XED_ERROR_NONE);</div>
<div class="line"><span class="lineno"> 78</span> }</div>
<div class="line"><span class="lineno"> 79</span> </div>
<div class="line"><span class="lineno"> 80</span> new_inst_bytes.insert(new_inst_bytes.begin(), inst_buff,</div>
<div class="line"><span class="lineno"> 81</span> inst_buff + inst_len);</div>
<div class="line"><span class="lineno"> 82</span> </div>
<div class="line"><span class="lineno"> 83</span> <span class="comment">// put a return instruction at the end of the decrypt instructions...</span></div>
<div class="line"><span class="lineno"> 84</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 85</span> new_inst_bytes.push_back(0xC3);</div>
<div class="line"><span class="lineno"> 86</span> </div>
<div class="line"><span class="lineno"> 87</span> sym-&gt;data().insert(sym-&gt;data().end(), new_inst_bytes.begin(),</div>
<div class="line"><span class="lineno"> 88</span> new_inst_bytes.end());</div>
<div class="line"><span class="lineno"> 89</span> </div>
<div class="line"><span class="lineno"> 90</span> reloc.value()-&gt;offset(sym-&gt;data().size());</div>
<div class="line"><span class="lineno"> 91</span> sym-&gt;data().resize(sym-&gt;data().size() + 8);</div>
<div class="line"><span class="lineno"> 92</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">theo::decomp::symbol_t::data()</a>, and <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">theo::obf::transform::generate()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/obf/passes/<a class="el" href="../../">next_inst_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../">next_inst_pass.cpp</a></li>
<li>include/obf/passes/<a class="el" href="../../d5/d54/next__inst__pass_8hpp_source.html">next_inst_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html">next_inst_pass.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/gen.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -70,37 +71,36 @@ $(function() {
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gen.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">gen.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/transform.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/reloc.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d6/deb/transform_8hpp_source.html">obf/transform/transform.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d1/d82/reloc_8hpp_source.html">recomp/reloc.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d5/d18/gen_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a416c6c93ce55a4ab9f70592951d15704"><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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">theo::obf::transform::generate</a> (xed_decoded_inst_t *inst, recomp::reloc_t *reloc, std::uint8_t low, std::uint8_t high)</td></tr>
<tr class="memdesc:a416c6c93ce55a4ab9f70592951d15704"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a sequence of transformations given an instruction that has a relocation in it. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">More...</a><br /></td></tr>
<tr class="separator:a416c6c93ce55a4ab9f70592951d15704"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb618f5ff8d88963dd77e682456ef982"><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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982">theo::obf::transform::generate</a> (xed_decoded_inst_t *inst, recomp::reloc_t *reloc, std::uint8_t low, std::uint8_t high)</td></tr>
<tr class="memdesc:abb618f5ff8d88963dd77e682456ef982"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a sequence of transformations given an instruction that has a relocation in it. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982">More...</a><br /></td></tr>
<tr class="separator:abb618f5ff8d88963dd77e682456ef982"><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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,169 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/gen.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">gen.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d5/d18/gen_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;<a class="code" href="../../d1/d82/reloc_8hpp.html">recomp/reloc.hpp</a>&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {<span class="comment"></span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// generate a sequence of transformations given an instruction that has a</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/// relocation in it.</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">/// &lt;param name=&quot;inst&quot;&gt;instruction that has a relocation in it.&lt;/param&gt;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// &lt;param name=&quot;reloc&quot;&gt;meta data relocation object for the instruction.&lt;/param&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// &lt;param name=&quot;low&quot;&gt;lowest number of transformations to generate.&lt;/param&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// &lt;param name=&quot;high&quot;&gt;highest number of transformations to generate.&lt;/param&gt;</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/// &lt;returns&gt;&lt;/returns&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982"> 45</a></span><span class="comment"></span><span class="keyword">inline</span> std::vector&lt;std::uint8_t&gt; <a class="code hl_function" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982" title="generate a sequence of transformations given an instruction that has a relocation in it.">generate</a>(xed_decoded_inst_t* inst,</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>* reloc,</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> std::uint8_t low,</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> std::uint8_t high) {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">auto</span> num_transforms = <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488" title="generate a random number in a range.">transform::operation_t::random</a>(low, high);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">auto</span> num_ops = <a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>.size();</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> std::vector&lt;std::uint8_t&gt; new_inst_bytes;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> std::uint32_t inst_len = {};</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> xed_encoder_request_t req;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_PUSHFQ);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> cnt = 0u; cnt &lt; num_transforms; ++cnt) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> std::uint32_t imm = <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488" title="generate a random number in a range.">transform::operation_t::random</a>(</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> 0, std::numeric_limits&lt;std::int32_t&gt;::max());</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">auto</span> itr = <a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>.begin();</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> std::advance(itr, <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488" title="generate a random number in a range.">transform::operation_t::random</a>(0, num_ops - 1));</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">auto</span> transform_bytes = itr-&gt;second-&gt;native(inst, imm);</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> new_inst_bytes.insert(new_inst_bytes.end(), transform_bytes.begin(),</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> transform_bytes.end());</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10" title="adds a transformation to be applied to the relocation prior to writing it into the symbol.">add_transform</a>(</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {<a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>[itr-&gt;second-&gt;inverse()]-&gt;get_transform(), imm});</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_POPFQ);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// inverse the order in which the transformations are executed...</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">//</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> std::reverse(reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>().begin(), reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>().end());</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">return</span> new_inst_bytes;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span>}</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::add_op_t Member List</div> </div>
<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="../../d5/d9f/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="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a6edc3dd58a94709b395cd928edc47fbb">get</a>()</td><td class="entry"><a class="el" href="../../d5/d9f/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a73d8d592c092482231fb5321ded6e83b">get</a>()</td><td class="entry"><a class="el" href="../../d5/d9f/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 class="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/passes/next_inst_pass.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,35 +69,34 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">next_inst_pass.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">next_inst_pass.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/pass.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d8/d5a/pass_8hpp_source.html">obf/pass.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d5/d54/next__inst__pass_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html">theo::obf::next_inst_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This pass is used to generate transformations and jmp code to change RIP to the next instruction. <a href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,182 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/passes/next_inst_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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">next_inst_pass.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d5/d54/next__inst__pass_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {<span class="comment"></span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/// This pass is used to generate transformations and jmp code to change RIP to</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// the next instruction.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">///</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// given the following code (get pml4 address from cr3):</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">///</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// get_pml4:</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// 0: 48 c7 c0 ff 0f 00 00 mov rax,0xfff</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// 7: 48 f7 d0 not rax</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/// a: 0f 20 da mov rdx,cr3</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">/// d: 48 21 c2 and rdx,rax</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">/// 10: b1 00 mov cl,0x0</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// 12: 48 d3 e2 shl rdx,cl</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">/// 15: 48 89 d0 mov rax,rdx</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">/// 18: c3 ret</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">///</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// this pass will break up each instruction so that it can be anywhere in a</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// linear virtual address space. this pass will not work on rip relative code,</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// however clang will not generate such code when compiled with</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// &quot;-mcmodel=large&quot;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">///</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">/// get_pml4@0:</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// mov rax, 0xFFF</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// push [next_inst_addr_enc]</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">/// xor [rsp], 0x3243342</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">/// ; a random number of transformations here...</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">/// ret</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">/// next_inst_addr_enc:</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">/// ; encrypted address of the next instruction goes here.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment">///</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">/// get_pml4@7:</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">/// not rax</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment">/// push [next_inst_addr_enc]</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">/// xor [rsp], 0x93983498</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/// ; a random number of transformations here...</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/// ret</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment">/// next_inst_addr_enc:</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment">/// ; encrypted address of the next instruction goes here.</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment">///</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment">/// this process is continued for each instruction in the function. the last</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment">/// instruction &quot;ret&quot; will have no code generated for it as there is no next</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment">/// instruction.</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment">///</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment">///</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment">/// this pass also only runs at the instruction level, theodosius internally</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">/// breaks up functions inside of the &quot;.split&quot; section into individual</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment">/// instruction symbols. this process also creates a psuedo relocation which</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment">/// simply tells this pass that there needs to be a relocation to the next</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment">/// symbol. the offset for these psuedo relocations is zero.</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html"> 85</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html" title="This pass is used to generate transformations and jmp code to change RIP to the next instruction.">next_inst_pass_t</a> : <span class="keyword">public</span> <a class="code hl_class" 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> {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html" title="This pass is used to generate transformations and jmp code to change RIP to the next instruction.">next_inst_pass_t</a>() : <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611" title="the explicit constructor of the pass_t base class.">pass_t</a>(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>) {</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> xed_decoded_inst_zero_set_mode(&amp;m_tmp_inst, &amp;istate);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> xed_decode(&amp;m_tmp_inst, m_type_inst_bytes, <span class="keyword">sizeof</span>(m_type_inst_bytes));</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html" title="This pass is used to generate transformations and jmp code to change RIP to the next instruction.">next_inst_pass_t</a>* <a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">get</a>();</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(<a class="code hl_class" 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>* sym);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::optional&lt;recomp::reloc_t*&gt; has_next_inst_reloc(<a class="code hl_class" 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>*);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> xed_decoded_inst_t m_tmp_inst;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> std::uint8_t m_type_inst_bytes[9] = {0x48, 0xC7, 0x44, 0x24, 0x08,</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> 0x44, 0x33, 0x22, 0x11};</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span>};</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::hello_world_pass_t Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,17 +70,15 @@ $(function() {
<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="../../d7/d74/classtheo_1_1obf_1_1hello__world__pass__t-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">theo::obf::hello_world_pass_t Class Reference</div> </div>
<a href="#pub-static-methods">Static Public Member Functions</a> </div>
<div class="headertitle"><div class="title">theo::obf::hello_world_pass_t Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>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>.
<a href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">hello_world_pass.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html">hello_world_pass.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::hello_world_pass_t:</div>
<div class="dyncontent">
@ -90,7 +89,7 @@ Inheritance diagram for theo::obf::hello_world_pass_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0d2d95f93ac083e157b2f12a8a56f1df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df">run</a> (<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)</td></tr>
<tr class="memdesc:a0d2d95f93ac083e157b2f12a8a56f1df"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df">More...</a><br /></td></tr>
@ -99,20 +98,25 @@ Public Member Functions</h2></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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="../../d4/dad/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="../../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> base class. <a href="../../d4/dad/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:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a> (<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)=0</td></tr>
<tr class="memdesc:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">More...</a><br /></td></tr>
<tr class="separator:acfadc013ff0754d66a18baffdb1a61d1 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="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/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="../../d4/dad/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a103eae9aa0f69f8d51e5106a08b77a5b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a103eae9aa0f69f8d51e5106a08b77a5b">get</a> ()</td></tr>
<tr class="separator:a103eae9aa0f69f8d51e5106a08b77a5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa556436f48335fe485d96ebc44ac2293"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#aa556436f48335fe485d96ebc44ac2293">get</a> ()</td></tr>
<tr class="separator:aa556436f48335fe485d96ebc44ac2293"><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>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>. </p>
<div class="textblock"><p >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>. </p>
<p class="definition">Definition at line <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html#l00039">39</a> of file <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html">hello_world_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a103eae9aa0f69f8d51e5106a08b77a5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a103eae9aa0f69f8d51e5106a08b77a5b">&#9670;&nbsp;</a></span>get()</h2>
<a id="aa556436f48335fe485d96ebc44ac2293" name="aa556436f48335fe485d96ebc44ac2293"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa556436f48335fe485d96ebc44ac2293">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -121,7 +125,7 @@ Static Public Member Functions</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a>* theo::obf::hello_world_pass_t::get </td>
<td class="memname">static <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a> * theo::obf::hello_world_pass_t::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@ -133,14 +137,18 @@ Static Public Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><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; <span class="keyword">static</span> hello_world_pass_t obj;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html#l00045">45</a> of file <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html">hello_world_pass.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 45</span> {</div>
<div class="line"><span class="lineno"> 46</span> <span class="keyword">static</span> hello_world_pass_t obj;</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 48</span> }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a0d2d95f93ac083e157b2f12a8a56f1df"></a>
<a id="a0d2d95f93ac083e157b2f12a8a56f1df" name="a0d2d95f93ac083e157b2f12a8a56f1df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d2d95f93ac083e157b2f12a8a56f1df">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -173,20 +181,24 @@ Static Public Member Functions</h2></td></tr>
</dl>
<p>Implements <a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
<div class="fragment"><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; spdlog::info(<span class="stringliteral">&quot;[hello_world_pass_t] symbol name: {}, symbol hash: {}&quot;</span>,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; sym-&gt;name(), sym-&gt;hash());</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html#l00050">50</a> of file <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html">hello_world_pass.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 50</span> {</div>
<div class="line"><span class="lineno"> 51</span> spdlog::info(<span class="stringliteral">&quot;[hello_world_pass_t] symbol name: {}, symbol hash: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 52</span> sym-&gt;name(), sym-&gt;hash());</div>
<div class="line"><span class="lineno"> 53</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">theo::decomp::symbol_t::hash()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00052">theo::decomp::symbol_t::name()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>examples/demo/<a class="el" href="../../">hello_world_pass.hpp</a></li>
<li>examples/demo/<a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html">hello_world_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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,14 +69,12 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../d5/d29/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>
<a href="#pub-static-methods">Static Public Member Functions</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.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d1/def/add__op_8hpp_source.html">add_op.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::add_op_t:</div>
<div class="dyncontent">
@ -86,38 +85,40 @@ Inheritance diagram for theo::obf::transform::add_op_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../d5/d9f/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="../../d5/d9f/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="memitem:a73d8d592c092482231fb5321ded6e83b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d5/d9f/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="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a73d8d592c092482231fb5321ded6e83b">get</a> ()</td></tr>
<tr class="separator:a73d8d592c092482231fb5321ded6e83b"><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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" 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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/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="../../d7/de2/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"></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="textblock">
<p class="definition">Definition at line <a class="el" href="../../d1/def/add__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="../../d1/def/add__op_8hpp_source.html">add_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a73d8d592c092482231fb5321ded6e83b" name="a73d8d592c092482231fb5321ded6e83b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73d8d592c092482231fb5321ded6e83b">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -126,7 +127,7 @@ Additional Inherited Members</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a>* theo::obf::transform::add_op_t::get </td>
<td class="memname">static <a class="el" href="../../d5/d9f/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>
@ -138,20 +139,22 @@ Additional Inherited Members</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><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="keyword">static</span> add_op_t 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>
<p class="definition">Definition at line <a class="el" href="../../d1/def/add__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../d1/def/add__op_8hpp_source.html">add_op.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> {</div>
<div class="line"><span class="lineno"> 43</span> <span class="keyword">static</span> add_op_t obj;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 45</span> }</div>
</div><!-- fragment -->
</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.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../d1/def/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/operation.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,12 +69,11 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">operation.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">operation.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;spdlog/spdlog.h&gt;</code><br />
@ -85,39 +85,39 @@ $(function() {
<code>#include &lt;xed-decode.h&gt;</code><br />
<code>#include &lt;xed-interface.h&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d5/da4/operation_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">theo::obf::transform::operation_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>). <a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a3925943d185a09ad9e32ed8637ccb533"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da4/operation_8hpp.html#a3925943d185a09ad9e32ed8637ccb533">XED_ENCODER</a></td></tr>
<tr class="separator:a3925943d185a09ad9e32ed8637ccb533"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a875984c1ce09aa998fe48cca55270ecc"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">theo::obf::transform::transform_t</a> = std::function&lt; std::size_t(std::size_t, std::uint32_t)&gt;</td></tr>
<tr class="memdesc:a875984c1ce09aa998fe48cca55270ecc"><td class="mdescLeft">&#160;</td><td class="mdescRight">lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value used in transformation). <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">More...</a><br /></td></tr>
<tr class="separator:a875984c1ce09aa998fe48cca55270ecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a3925943d185a09ad9e32ed8637ccb533"></a>
<a id="a3925943d185a09ad9e32ed8637ccb533" name="a3925943d185a09ad9e32ed8637ccb533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3925943d185a09ad9e32ed8637ccb533">&#9670;&nbsp;</a></span>XED_ENCODER</h2>
<div class="memitem">
@ -129,12 +129,14 @@ Typedefs</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00039">39</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,247 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/operation.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">operation.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d5/da4/operation_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;bit&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;bitset&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &lt;random&gt;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../d5/da4/operation_8hpp.html#a3925943d185a09ad9e32ed8637ccb533"> 39</a></span><span class="preprocessor">#define XED_ENCODER</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#include &lt;xed-decode.h&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#include &lt;xed-interface.h&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>}</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"></span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">/// this namespace encompasses the code for transforming relocations.</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"></span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// lambda function which takes in a 64bit value (relocation address) and a</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// 32bit value (random value used in transformation).</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc"> 54</a></span><span class="comment"></span><span class="keyword">using</span> <a class="code hl_typedef" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc" title="lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value use...">transform_t</a> = <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;std::size_t(std::size_t, std::uint32_t)&gt;;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"></span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// operation_t is the base class for all types of transformations. classes that</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// inherit this class are singleton and simply call the super constructor</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">/// (operation_t::operation_t).</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html"> 61</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> /// explicit constructor for operation_t</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;param name=&quot;op&quot;&gt;lambda function when executed applies</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// transformations.&lt;/param&gt; &lt;param name=&quot;type&quot;&gt;type of transformation, such</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> /// as XOR, ADD, SUB, etc...&lt;/param&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4"> 69</a></span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>(<a class="code hl_typedef" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc" title="lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value use...">transform_t</a> op, xed_iclass_enum_t <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f" title="gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...">type</a>)</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> : m_transform(op), m_type(<a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f" title="gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...">type</a>) {}</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"></span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// generates a native transform instruction given an existing instruction. it</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// works like so:</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> /// mov rax, &amp;MessageBoxA ; original instruction with relocation</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> /// ; this function takes the first operand and out of the original</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> /// ; instruction and uses it to generate a transformation.</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> /// xor rax, 0x39280928 ; this would be an example output for the xor</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> /// ;operation.</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// &lt;param name=&quot;inst&quot;&gt;instruction with a relocation to generate a</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// transformation for.&lt;/param&gt; &lt;param name=&quot;imm&quot;&gt;random 32bit number used in</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> /// the generate transform.&lt;/param&gt; &lt;returns&gt;returns the bytes of the native</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> /// instruction that was encoded.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44"> 89</a></span><span class="comment"></span> std::vector&lt;std::uint8_t&gt; <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44" title="generates a native transform instruction given an existing instruction. it works like so:">native</a>(<span class="keyword">const</span> xed_decoded_inst_t* inst,</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> std::uint32_t imm) {</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> std::uint32_t inst_len = {};</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> xed_error_enum_t err;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xed_encoder_request_init_from_decode((xed_decoded_inst_s*)inst);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> xed_encoder_request_t* req = (xed_encoder_request_t*)inst;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">switch</span> (m_type) {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">case</span> XED_ICLASS_ROR:</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">case</span> XED_ICLASS_ROL:</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> xed_encoder_request_set_uimm0(req, imm, 1);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> xed_encoder_request_set_uimm0(req, imm, 4);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> xed_encoder_request_set_iclass(req, m_type);</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> xed_encoder_request_set_operand_order(req, 1, XED_OPERAND_IMM0);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">if</span> ((err = xed_encode(req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len)) !=</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> XED_ERROR_NONE) {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> spdlog::error(<span class="stringliteral">&quot;failed to encode instruction... reason: {}&quot;</span>,</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> xed_error_enum_t2str(err));</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> assert(err == XED_ERROR_NONE);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> }</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> std::vector&lt;std::uint8_t&gt;(inst_buff, inst_buff + inst_len);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> }</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"></span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> /// gets the inverse operation of the current operation.</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> /// &lt;returns&gt;the inverse operation of the current operation.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b"> 126</a></span><span class="comment"></span> xed_iclass_enum_t <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b" title="gets the inverse operation of the current operation.">inverse</a>() { <span class="keywordflow">return</span> m_inverse_op[m_type]; }</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"></span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> /// gets a pointer to the lambda function which contains the transform logic.</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> /// &lt;returns&gt;a pointer to the lambda function which contains the transform</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> /// logic.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66"> 133</a></span><span class="comment"></span> <a class="code hl_typedef" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc" title="lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value use...">transform_t</a>* <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66" title="gets a pointer to the lambda function which contains the transform logic.">get_transform</a>() { <span class="keywordflow">return</span> &amp;m_transform; }</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"></span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> /// gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> /// &lt;returns&gt;the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB,</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment"> /// etc...&lt;/returns&gt;</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f"> 140</a></span><span class="comment"></span> xed_iclass_enum_t <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f" title="gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...">type</a>() { <span class="keywordflow">return</span> m_type; }</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"></span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> /// generate a random number in a range.</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> /// &lt;param name=&quot;lowest&quot;&gt;lowest value of the range.&lt;/param&gt;</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> /// &lt;param name=&quot;largest&quot;&gt;highest value of the range.&lt;/param&gt;</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> /// &lt;returns&gt;a random value in a range.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488"> 148</a></span><span class="comment"></span> <span class="keyword">static</span> std::size_t <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aaa5859bc3c7f95d99d4d726289593488" title="generate a random number in a range.">random</a>(std::size_t lowest, std::size_t largest) {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> std::random_device rd;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> std::mt19937 gen(rd());</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> std::uniform_int_distribution&lt;std::size_t&gt; distr(lowest, largest);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> distr(gen);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <a class="code hl_typedef" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc" title="lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value use...">transform_t</a> m_transform;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> xed_iclass_enum_t m_type;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> std::map&lt;xed_iclass_enum_t, xed_iclass_enum_t&gt; m_inverse_op = {</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> {XED_ICLASS_ADD, XED_ICLASS_SUB},</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> {XED_ICLASS_SUB, XED_ICLASS_ADD},</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> {XED_ICLASS_ROL, XED_ICLASS_ROR},</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> {XED_ICLASS_ROR, XED_ICLASS_ROL},</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> {XED_ICLASS_XOR, XED_ICLASS_XOR}};</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>};</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,28 +70,27 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle">
<div class="title">theo::obf Namespace Reference</div> </div>
<a href="#nested-classes">Data Structures</a> </div>
<div class="headertitle"><div class="title">theo::obf Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>this is the main namespace for obfuscation related things.
<a href="../../d5/da8/namespacetheo_1_1obf.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">transform</a></td></tr>
<tr class="memdesc:d8/d82/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><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html">engine_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the <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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#details">More...</a><br /></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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>. <a href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html">jcc_rewrite_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">jcc rewrite pass which rewrites rip relative jcc's so that they are position independent. <a href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#details">More...</a><br /></td></tr>
@ -98,19 +98,19 @@ 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="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html">next_inst_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This pass is used to generate transformations and jmp code to change RIP to the next instruction. <a href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the <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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html">reloc_transform_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">hello_world_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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>. <a href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><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 is the main namespace for obfuscation related things. </p>
<div class="textblock"><p >this is the main namespace for obfuscation related things. </p>
</div></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d4/dab/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>
<a href="#pub-methods">Public Member Functions</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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">decomp.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">decomp_t</a> (std::vector&lt; std::uint8_t &gt; &amp;<a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>, <a class="el" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html">recomp::symbol_table_t</a> *<a class="el" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>)</td></tr>
<tr class="memdesc:a35cfac16bd918d576b29e04388690d68"><td class="mdescLeft">&#160;</td><td class="mdescRight">the explicit constructor for <a class="el" href="../../d6/d0e/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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68">More...</a><br /></td></tr>
@ -105,9 +104,11 @@ Public Member Functions</h2></td></tr>
<tr class="separator:ae23353a4293aa30969b6d3fa37359469"><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>
<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="../../d2/d96/decomp_8hpp_source.html#l00061">61</a> of file <a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a35cfac16bd918d576b29e04388690d68"></a>
<a id="a35cfac16bd918d576b29e04388690d68" name="a35cfac16bd918d576b29e04388690d68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35cfac16bd918d576b29e04388690d68">&#9670;&nbsp;</a></span>decomp_t()</h2>
<div class="memitem">
@ -149,14 +150,14 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; : m_lib(<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>), m_syms(<a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120">syms</a>) {}</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> decomp.cpp:293</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> decomp.cpp:285</div></div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> : m_lib(<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>), m_syms(<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>) {}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae23353a4293aa30969b6d3fa37359469"></a>
<a id="ae23353a4293aa30969b6d3fa37359469" name="ae23353a4293aa30969b6d3fa37359469"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae23353a4293aa30969b6d3fa37359469">&#9670;&nbsp;</a></span>decompose()</h2>
<div class="memitem">
@ -180,179 +181,181 @@ Public Member Functions</h2></td></tr>
</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 class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// extract obj files from the archive file...</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; ar::view&lt;false&gt; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>(m_lib.data(), m_lib.size());</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::for_each(</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>.begin(), <a class="code" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2">lib</a>.end(),</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; [&amp;](std::pair&lt;std::string_view, ar::entry_t&amp;&gt; itr) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// if the entry isnt the symbol table or the string table</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// then we know its an obj file...</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; if (!itr.second.is_symbol_table() &amp;&amp; !itr.second.is_string_table()) {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; spdlog::info(<span class="stringliteral">&quot;extracted obj from archive: {}&quot;</span>, itr.first);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::vector&lt;std::uint8_t&gt; data(itr.second.begin(), itr.second.end());</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; m_objs.push_back(data);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; });</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; std::for_each(</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; m_objs.begin(), m_objs.end(), [&amp;](std::vector&lt;std::uint8_t&gt;&amp; img_data) {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; auto img = reinterpret_cast&lt;coff::image_t*&gt;(img_data.data());</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; for (auto idx = 0u; idx &lt; img-&gt;file_header.num_symbols; ++idx) {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; auto sym = img-&gt;get_symbol(idx);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; if (sym-&gt;section_index - 1 &gt; img-&gt;file_header.num_sections)</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; continue;</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; auto sym_name = symbol_t::name(img, sym);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; if (sym_name.length()) {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; auto sym_hash = symbol_t::hash(sym_name.data());</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; auto sym_size =</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; sym-&gt;has_section()</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; ? next_sym(img, img-&gt;get_section(sym-&gt;section_index - 1),</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; sym)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; : 0u;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; m_lookup_tbl[sym_hash].emplace_back(img, sym, sym_size);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</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; });</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">// extract used symbols from objs and create a nice little set of them so that</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// we can easily decompose them... no need deal with every single symbol...</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; spdlog::info(<span class="stringliteral">&quot;extracted {} symbols being used...&quot;</span>,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ext_used_syms(entry_sym.data()));</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// generate symbols, populate section hash table, for each object file</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// extracted from the archive file...</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; std::for_each(m_used_syms.begin(), m_used_syms.end(), [&amp;](<a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">sym_data_t</a> <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; auto [img, sym, size] = data;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// populate section hash table with sections for the img of this</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// symbol... only populate the hash table if its not been populated for</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// this obj before...</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; if (m_processed_objs.emplace(img).second) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; for (auto idx = 0u; idx &lt; img-&gt;file_header.num_sections; ++idx) {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; auto scn = img-&gt;get_section(idx);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; auto scn_sym_name =</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; .append(std::to_string(idx))</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; .append(std::to_string(img-&gt;file_header.timedate_stamp));</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="comment">// hash the name of the section + the index + the timestamp of the</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// obj file it is in...</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; m_scn_hash_tbl.insert({scn, decomp::symbol_t::hash(scn_sym_name)});</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// if the symbol is a function then we are going to decompose it...</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// data symbols are handled after this...</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; if (sym-&gt;has_section()) {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; if (sym-&gt;derived_type == coff::derived_type_id::function) {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; auto dcmp_type =</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; scn-&gt;name.to_string(img-&gt;get_strings()) == INSTR_SPLIT_SECTION_NAME</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; ? decomp::sym_type_t::instruction</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; : decomp::sym_type_t::function;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; auto fn_size = next_sym(img, scn, sym);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; auto fn_bgn = scn-&gt;ptr_raw_data + reinterpret_cast&lt;std::uint8_t*&gt;(img) +</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; sym-&gt;value;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; std::vector&lt;std::uint8_t&gt; fn(fn_bgn, fn_bgn + fn_size);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; decomp::routine_t rtn(sym, img, scn, fn, dcmp_type);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; auto syms = rtn.decompose();</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; m_syms-&gt;put_symbols(syms);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; } <span class="keywordflow">else</span> if (sym-&gt;storage_class == coff::storage_class_id::public_symbol ||</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; sym-&gt;storage_class == coff::storage_class_id::private_symbol) {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; auto scn_sym = m_syms-&gt;sym_from_hash(m_scn_hash_tbl[scn]);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// if the section doesnt have a symbol then make one and put it into</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// the symbol table...</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; if (!scn_sym.has_value()) {</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; auto scn_sym_name =</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; .append(std::to_string(sym-&gt;section_index - 1))</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; .append(std::to_string(img-&gt;file_header.timedate_stamp));</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; std::vector&lt;std::uint8_t&gt; scn_data(scn-&gt;size_raw_data);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; if (scn-&gt;characteristics.cnt_uninit_data) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; scn_data.insert(scn_data.begin(), scn-&gt;size_raw_data, 0);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; } else {</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; scn_data.insert(</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; scn_data.begin(),</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data +</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; scn-&gt;size_raw_data);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; auto scn_relocs = reinterpret_cast&lt;coff::reloc_t*&gt;(</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; scn-&gt;ptr_relocs + reinterpret_cast&lt;std::uint8_t*&gt;(img));</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; for (auto idx = 0u; idx &lt; scn-&gt;num_relocs; ++idx) {</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; auto scn_reloc = &amp;scn_relocs[idx];</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; auto sym_reloc = img-&gt;get_symbol(scn_relocs[idx].symbol_index);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; auto sym_name = symbol_t::name(img, sym_reloc);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; auto sym_hash = decomp::symbol_t::hash(sym_name.data());</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; relocs.push_back(</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; recomp::reloc_t(scn_reloc-&gt;virtual_address - sym-&gt;value,</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; sym_hash, sym_name.data()));</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; decomp::symbol_t new_scn_sym(img, scn_sym_name, 0, scn_data, scn, {},</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; relocs, sym_type_t::section);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; m_syms-&gt;put_symbol(new_scn_sym);</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; </div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// create a symbol for the data...</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; decomp::symbol_t new_sym(img, <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">symbol_t::name</a>(img, sym).<a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>(),</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; sym-&gt;value, {}, scn, sym, {},</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; m_syms-&gt;<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">put_symbol</a>(new_sym);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sym-&gt;storage_class ==</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; coff::storage_class_id::</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; external_definition) { <span class="comment">// else if the symbol has no</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// section... these symbols</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// require the linker to allocate</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// space for them...</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; std::vector&lt;std::uint8_t&gt; data(sym-&gt;value, 0);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; decomp::symbol_t bss_sym(img, symbol_t::name(img, sym).data(), {}, <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>,</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {}, sym, {}, <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; </div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; m_syms-&gt;<a class="code" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601">put_symbol</a>(bss_sym);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; });</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// return the extract symbols to the caller...</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</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> symbol.cpp:52</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> symbol_table.cpp:40</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> decomp.hpp:55</div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">theo::decomp::data</a></div><div class="ttdeci">@ data</div><div class="ttdef"><b>Definition:</b> symbol.hpp:46</div></div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00037">37</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> {</div>
<div class="line"><span class="lineno"> 39</span> <span class="comment">// extract obj files from the archive file...</span></div>
<div class="line"><span class="lineno"> 40</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 41</span> ar::view&lt;false&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>(m_lib.data(), m_lib.size());</div>
<div class="line"><span class="lineno"> 42</span> std::for_each(</div>
<div class="line"><span class="lineno"> 43</span> <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>.begin(), <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>.end(),</div>
<div class="line"><span class="lineno"> 44</span> [&amp;](std::pair&lt;std::string_view, ar::entry_t&amp;&gt; itr) {</div>
<div class="line"><span class="lineno"> 45</span> <span class="comment">// if the entry isnt the symbol table or the string table</span></div>
<div class="line"><span class="lineno"> 46</span> <span class="comment">// then we know its an obj file...</span></div>
<div class="line"><span class="lineno"> 47</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 48</span> if (!itr.second.is_symbol_table() &amp;&amp; !itr.second.is_string_table()) {</div>
<div class="line"><span class="lineno"> 49</span> spdlog::info(<span class="stringliteral">&quot;extracted obj from archive: {}&quot;</span>, itr.first);</div>
<div class="line"><span class="lineno"> 50</span> std::vector&lt;std::uint8_t&gt; data(itr.second.begin(), itr.second.end());</div>
<div class="line"><span class="lineno"> 51</span> m_objs.push_back(data);</div>
<div class="line"><span class="lineno"> 52</span> }</div>
<div class="line"><span class="lineno"> 53</span> });</div>
<div class="line"><span class="lineno"> 54</span> </div>
<div class="line"><span class="lineno"> 55</span> std::for_each(</div>
<div class="line"><span class="lineno"> 56</span> m_objs.begin(), m_objs.end(), [&amp;](std::vector&lt;std::uint8_t&gt;&amp; img_data) {</div>
<div class="line"><span class="lineno"> 57</span> auto img = reinterpret_cast&lt;coff::image_t*&gt;(img_data.data());</div>
<div class="line"><span class="lineno"> 58</span> for (auto idx = 0u; idx &lt; img-&gt;file_header.num_symbols; ++idx) {</div>
<div class="line"><span class="lineno"> 59</span> auto sym = img-&gt;get_symbol(idx);</div>
<div class="line"><span class="lineno"> 60</span> if (sym-&gt;section_index - 1 &gt; img-&gt;file_header.num_sections)</div>
<div class="line"><span class="lineno"> 61</span> continue;</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> auto sym_name = symbol_t::name(img, sym);</div>
<div class="line"><span class="lineno"> 64</span> if (sym_name.length()) {</div>
<div class="line"><span class="lineno"> 65</span> auto sym_hash = symbol_t::hash(sym_name.data());</div>
<div class="line"><span class="lineno"> 66</span> auto sym_size =</div>
<div class="line"><span class="lineno"> 67</span> sym-&gt;has_section()</div>
<div class="line"><span class="lineno"> 68</span> ? next_sym(img, img-&gt;get_section(sym-&gt;section_index - 1),</div>
<div class="line"><span class="lineno"> 69</span> sym)</div>
<div class="line"><span class="lineno"> 70</span> : 0u;</div>
<div class="line"><span class="lineno"> 71</span> </div>
<div class="line"><span class="lineno"> 72</span> m_lookup_tbl[sym_hash].emplace_back(img, sym, sym_size);</div>
<div class="line"><span class="lineno"> 73</span> }</div>
<div class="line"><span class="lineno"> 74</span> }</div>
<div class="line"><span class="lineno"> 75</span> });</div>
<div class="line"><span class="lineno"> 76</span> </div>
<div class="line"><span class="lineno"> 77</span> <span class="comment">// extract used symbols from objs and create a nice little set of them so that</span></div>
<div class="line"><span class="lineno"> 78</span> <span class="comment">// we can easily decompose them... no need deal with every single symbol...</span></div>
<div class="line"><span class="lineno"> 79</span> spdlog::info(<span class="stringliteral">&quot;extracted {} symbols being used...&quot;</span>,</div>
<div class="line"><span class="lineno"> 80</span> ext_used_syms(entry_sym.data()));</div>
<div class="line"><span class="lineno"> 81</span> </div>
<div class="line"><span class="lineno"> 82</span> <span class="comment">// generate symbols, populate section hash table, for each object file</span></div>
<div class="line"><span class="lineno"> 83</span> <span class="comment">// extracted from the archive file...</span></div>
<div class="line"><span class="lineno"> 84</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 85</span> std::for_each(m_used_syms.begin(), m_used_syms.end(), [&amp;](<a class="code hl_typedef" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266" title="meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself,...">sym_data_t</a> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>) {</div>
<div class="line"><span class="lineno"> 86</span> auto [img, sym, size] = data;</div>
<div class="line"><span class="lineno"> 87</span> </div>
<div class="line"><span class="lineno"> 88</span> <span class="comment">// populate section hash table with sections for the img of this</span></div>
<div class="line"><span class="lineno"> 89</span> <span class="comment">// symbol... only populate the hash table if its not been populated for</span></div>
<div class="line"><span class="lineno"> 90</span> <span class="comment">// this obj before...</span></div>
<div class="line"><span class="lineno"> 91</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 92</span> if (m_processed_objs.emplace(img).second) {</div>
<div class="line"><span class="lineno"> 93</span> for (auto idx = 0u; idx &lt; img-&gt;file_header.num_sections; ++idx) {</div>
<div class="line"><span class="lineno"> 94</span> auto scn = img-&gt;get_section(idx);</div>
<div class="line"><span class="lineno"> 95</span> auto scn_sym_name =</div>
<div class="line"><span class="lineno"> 96</span> std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><span class="lineno"> 97</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><span class="lineno"> 98</span> .append(std::to_string(idx))</div>
<div class="line"><span class="lineno"> 99</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><span class="lineno"> 100</span> .append(std::to_string(img-&gt;file_header.timedate_stamp));</div>
<div class="line"><span class="lineno"> 101</span> </div>
<div class="line"><span class="lineno"> 102</span> <span class="comment">// hash the name of the section + the index + the timestamp of the</span></div>
<div class="line"><span class="lineno"> 103</span> <span class="comment">// obj file it is in...</span></div>
<div class="line"><span class="lineno"> 104</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 105</span> m_scn_hash_tbl.insert({scn, decomp::symbol_t::hash(scn_sym_name)});</div>
<div class="line"><span class="lineno"> 106</span> }</div>
<div class="line"><span class="lineno"> 107</span> }</div>
<div class="line"><span class="lineno"> 108</span> </div>
<div class="line"><span class="lineno"> 109</span> <span class="comment">// if the symbol is a function then we are going to decompose it...</span></div>
<div class="line"><span class="lineno"> 110</span> <span class="comment">// data symbols are handled after this...</span></div>
<div class="line"><span class="lineno"> 111</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 112</span> if (sym-&gt;has_section()) {</div>
<div class="line"><span class="lineno"> 113</span> if (sym-&gt;derived_type == coff::derived_type_id::function) {</div>
<div class="line"><span class="lineno"> 114</span> auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><span class="lineno"> 115</span> auto dcmp_type =</div>
<div class="line"><span class="lineno"> 116</span> scn-&gt;name.to_string(img-&gt;get_strings()) == INSTR_SPLIT_SECTION_NAME</div>
<div class="line"><span class="lineno"> 117</span> ? decomp::sym_type_t::instruction</div>
<div class="line"><span class="lineno"> 118</span> : decomp::sym_type_t::function;</div>
<div class="line"><span class="lineno"> 119</span> </div>
<div class="line"><span class="lineno"> 120</span> auto fn_size = next_sym(img, scn, sym);</div>
<div class="line"><span class="lineno"> 121</span> auto fn_bgn = scn-&gt;ptr_raw_data + reinterpret_cast&lt;std::uint8_t*&gt;(img) +</div>
<div class="line"><span class="lineno"> 122</span> sym-&gt;value;</div>
<div class="line"><span class="lineno"> 123</span> </div>
<div class="line"><span class="lineno"> 124</span> std::vector&lt;std::uint8_t&gt; fn(fn_bgn, fn_bgn + fn_size);</div>
<div class="line"><span class="lineno"> 125</span> decomp::routine_t rtn(sym, img, scn, fn, dcmp_type);</div>
<div class="line"><span class="lineno"> 126</span> </div>
<div class="line"><span class="lineno"> 127</span> auto syms = rtn.decompose();</div>
<div class="line"><span class="lineno"> 128</span> m_syms-&gt;put_symbols(syms);</div>
<div class="line"><span class="lineno"> 129</span> } <span class="keywordflow">else</span> if (sym-&gt;storage_class == coff::storage_class_id::public_symbol ||</div>
<div class="line"><span class="lineno"> 130</span> sym-&gt;storage_class == coff::storage_class_id::private_symbol) {</div>
<div class="line"><span class="lineno"> 131</span> auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><span class="lineno"> 132</span> auto scn_sym = m_syms-&gt;sym_from_hash(m_scn_hash_tbl[scn]);</div>
<div class="line"><span class="lineno"> 133</span> </div>
<div class="line"><span class="lineno"> 134</span> <span class="comment">// if the section doesnt have a symbol then make one and put it into</span></div>
<div class="line"><span class="lineno"> 135</span> <span class="comment">// the symbol table...</span></div>
<div class="line"><span class="lineno"> 136</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 137</span> if (!scn_sym.has_value()) {</div>
<div class="line"><span class="lineno"> 138</span> auto scn_sym_name =</div>
<div class="line"><span class="lineno"> 139</span> std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><span class="lineno"> 140</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><span class="lineno"> 141</span> .append(std::to_string(sym-&gt;section_index - 1))</div>
<div class="line"><span class="lineno"> 142</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><span class="lineno"> 143</span> .append(std::to_string(img-&gt;file_header.timedate_stamp));</div>
<div class="line"><span class="lineno"> 144</span> </div>
<div class="line"><span class="lineno"> 145</span> std::vector&lt;std::uint8_t&gt; scn_data(scn-&gt;size_raw_data);</div>
<div class="line"><span class="lineno"> 146</span> if (scn-&gt;characteristics.cnt_uninit_data) {</div>
<div class="line"><span class="lineno"> 147</span> scn_data.insert(scn_data.begin(), scn-&gt;size_raw_data, 0);</div>
<div class="line"><span class="lineno"> 148</span> } else {</div>
<div class="line"><span class="lineno"> 149</span> scn_data.insert(</div>
<div class="line"><span class="lineno"> 150</span> scn_data.begin(),</div>
<div class="line"><span class="lineno"> 151</span> reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data,</div>
<div class="line"><span class="lineno"> 152</span> reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data +</div>
<div class="line"><span class="lineno"> 153</span> scn-&gt;size_raw_data);</div>
<div class="line"><span class="lineno"> 154</span> }</div>
<div class="line"><span class="lineno"> 155</span> </div>
<div class="line"><span class="lineno"> 156</span> std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><span class="lineno"> 157</span> auto scn_relocs = reinterpret_cast&lt;coff::reloc_t*&gt;(</div>
<div class="line"><span class="lineno"> 158</span> scn-&gt;ptr_relocs + reinterpret_cast&lt;std::uint8_t*&gt;(img));</div>
<div class="line"><span class="lineno"> 159</span> </div>
<div class="line"><span class="lineno"> 160</span> for (auto idx = 0u; idx &lt; scn-&gt;num_relocs; ++idx) {</div>
<div class="line"><span class="lineno"> 161</span> auto scn_reloc = &amp;scn_relocs[idx];</div>
<div class="line"><span class="lineno"> 162</span> auto sym_reloc = img-&gt;get_symbol(scn_relocs[idx].symbol_index);</div>
<div class="line"><span class="lineno"> 163</span> auto sym_name = symbol_t::name(img, sym_reloc);</div>
<div class="line"><span class="lineno"> 164</span> auto sym_hash = decomp::symbol_t::hash(sym_name.data());</div>
<div class="line"><span class="lineno"> 165</span> relocs.push_back(</div>
<div class="line"><span class="lineno"> 166</span> recomp::reloc_t(scn_reloc-&gt;virtual_address - sym-&gt;value,</div>
<div class="line"><span class="lineno"> 167</span> sym_hash, sym_name.data()));</div>
<div class="line"><span class="lineno"> 168</span> }</div>
<div class="line"><span class="lineno"> 169</span> </div>
<div class="line"><span class="lineno"> 170</span> decomp::symbol_t new_scn_sym(img, scn_sym_name, 0, scn_data, scn, {},</div>
<div class="line"><span class="lineno"> 171</span> relocs, sym_type_t::section);</div>
<div class="line"><span class="lineno"> 172</span> </div>
<div class="line"><span class="lineno"> 173</span> m_syms-&gt;put_symbol(new_scn_sym);</div>
<div class="line"><span class="lineno"> 174</span> }</div>
<div class="line"><span class="lineno"> 175</span> </div>
<div class="line"><span class="lineno"> 176</span> <span class="comment">// create a symbol for the data...</span></div>
<div class="line"><span class="lineno"> 177</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 178</span> decomp::symbol_t new_sym(img, <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(img, sym).<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>(),</div>
<div class="line"><span class="lineno"> 179</span> sym-&gt;value, {}, scn, sym, {},</div>
<div class="line"><span class="lineno"> 180</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><span class="lineno"> 181</span> </div>
<div class="line"><span class="lineno"> 182</span> m_syms-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601" title="add symbol to m_table">put_symbol</a>(new_sym);</div>
<div class="line"><span class="lineno"> 183</span> }</div>
<div class="line"><span class="lineno"> 184</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sym-&gt;storage_class ==</div>
<div class="line"><span class="lineno"> 185</span> coff::storage_class_id::</div>
<div class="line"><span class="lineno"> 186</span> external_definition) { <span class="comment">// else if the symbol has no</span></div>
<div class="line"><span class="lineno"> 187</span> <span class="comment">// section... these symbols</span></div>
<div class="line"><span class="lineno"> 188</span> <span class="comment">// require the linker to allocate</span></div>
<div class="line"><span class="lineno"> 189</span> <span class="comment">// space for them...</span></div>
<div class="line"><span class="lineno"> 190</span> </div>
<div class="line"><span class="lineno"> 191</span> std::vector&lt;std::uint8_t&gt; data(sym-&gt;value, 0);</div>
<div class="line"><span class="lineno"> 192</span> decomp::symbol_t bss_sym(img, symbol_t::name(img, sym).data(), {}, <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>,</div>
<div class="line"><span class="lineno"> 193</span> {}, sym, {}, <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><span class="lineno"> 194</span> </div>
<div class="line"><span class="lineno"> 195</span> m_syms-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601" title="add symbol to m_table">put_symbol</a>(bss_sym);</div>
<div class="line"><span class="lineno"> 196</span> }</div>
<div class="line"><span class="lineno"> 197</span> });</div>
<div class="line"><span class="lineno"> 198</span> </div>
<div class="line"><span class="lineno"> 199</span> <span class="comment">// return the extract symbols to the caller...</span></div>
<div class="line"><span class="lineno"> 200</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 201</span> <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><span class="lineno"> 202</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00285">lib()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00045">theo::theo_t::decompose()</a>.</p>
</div>
</div>
<a id="aa728bde8ec1c5c28ec09f86adf427ae2"></a>
<a id="aa728bde8ec1c5c28ec09f86adf427ae2" name="aa728bde8ec1c5c28ec09f86adf427ae2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa728bde8ec1c5c28ec09f86adf427ae2">&#9670;&nbsp;</a></span>lib()</h2>
<div class="memitem">
@ -369,13 +372,17 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> m_lib;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00285">285</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 285</span> {</div>
<div class="line"><span class="lineno"> 286</span> <span class="keywordflow">return</span> m_lib;</div>
<div class="line"><span class="lineno"> 287</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00037">decompose()</a>.</p>
</div>
</div>
<a id="a81ae70b313a9ef24ea5d8f404699baef"></a>
<a id="a81ae70b313a9ef24ea5d8f404699baef" name="a81ae70b313a9ef24ea5d8f404699baef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81ae70b313a9ef24ea5d8f404699baef">&#9670;&nbsp;</a></span>objs()</h2>
<div class="memitem">
@ -392,13 +399,15 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> m_objs;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00289">289</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 289</span> {</div>
<div class="line"><span class="lineno"> 290</span> <span class="keywordflow">return</span> m_objs;</div>
<div class="line"><span class="lineno"> 291</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a79c965ec0a996a936faae7f54b0e055e"></a>
<a id="a79c965ec0a996a936faae7f54b0e055e" name="a79c965ec0a996a936faae7f54b0e055e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79c965ec0a996a936faae7f54b0e055e">&#9670;&nbsp;</a></span>rtns()</h2>
<div class="memitem">
@ -415,13 +424,15 @@ Public Member Functions</h2></td></tr>
<p>gets all of the routine objects. </p>
<dl class="section return"><dt>Returns</dt><dd>vector of routine objects.</dd></dl>
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> m_rtns;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00281">281</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 281</span> {</div>
<div class="line"><span class="lineno"> 282</span> <span class="keywordflow">return</span> m_rtns;</div>
<div class="line"><span class="lineno"> 283</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a860dddc3a5d12231b685dbaa12a0db06"></a>
<a id="a860dddc3a5d12231b685dbaa12a0db06" name="a860dddc3a5d12231b685dbaa12a0db06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a860dddc3a5d12231b685dbaa12a0db06">&#9670;&nbsp;</a></span>scn_hash_tbl()</h2>
<div class="memitem">
@ -438,13 +449,15 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> m_scn_hash_tbl;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00297">297</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 297</span> {</div>
<div class="line"><span class="lineno"> 298</span> <span class="keywordflow">return</span> m_scn_hash_tbl;</div>
<div class="line"><span class="lineno"> 299</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8630f2ee0f4fb9516f5b20014e4c6120"></a>
<a id="a8630f2ee0f4fb9516f5b20014e4c6120" name="a8630f2ee0f4fb9516f5b20014e4c6120"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8630f2ee0f4fb9516f5b20014e4c6120">&#9670;&nbsp;</a></span>syms()</h2>
<div class="memitem">
@ -461,20 +474,24 @@ Public Member Functions</h2></td></tr>
<p>gets the symbol table. </p>
<dl class="section return"><dt>Returns</dt><dd>the symbol table.</dd></dl>
<div class="fragment"><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00293">293</a> of file <a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 293</span> {</div>
<div class="line"><span class="lineno"> 294</span> <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><span class="lineno"> 295</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00040">theo::recomp::recomp_t::allocate()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/decomp/<a class="el" href="../../">decomp.hpp</a></li>
<li>src/decomp/<a class="el" href="../../">decomp.cpp</a></li>
<li>include/decomp/<a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp.hpp</a></li>
<li>src/decomp/<a class="el" href="../../dc/d83/decomp_8cpp_source.html">decomp.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,14 +69,12 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../d6/df6/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>
<a href="#pub-static-methods">Static Public Member Functions</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.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d6/d8a/rol__op_8hpp_source.html">rol_op.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::rol_op_t:</div>
<div class="dyncontent">
@ -86,38 +85,40 @@ Inheritance diagram for theo::obf::transform::rol_op_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../d6/d52/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="../../d6/d52/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="memitem:ade2c667c209f2a27f03712f6b151594b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d6/d52/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#ade2c667c209f2a27f03712f6b151594b">get</a> ()</td></tr>
<tr class="separator:ade2c667c209f2a27f03712f6b151594b"><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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" 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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/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="../../d7/de2/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"></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="textblock">
<p class="definition">Definition at line <a class="el" href="../../d6/d8a/rol__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="../../d6/d8a/rol__op_8hpp_source.html">rol_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ade2c667c209f2a27f03712f6b151594b" name="ade2c667c209f2a27f03712f6b151594b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade2c667c209f2a27f03712f6b151594b">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -126,7 +127,7 @@ Additional Inherited Members</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a>* theo::obf::transform::rol_op_t::get </td>
<td class="memname">static <a class="el" href="../../d6/d52/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>
@ -138,20 +139,22 @@ Additional Inherited Members</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static</span> rol_op_t obj;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../d6/d8a/rol__op_8hpp_source.html#l00044">44</a> of file <a class="el" href="../../d6/d8a/rol__op_8hpp_source.html">rol_op.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> {</div>
<div class="line"><span class="lineno"> 45</span> <span class="keyword">static</span> rol_op_t obj;</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 47</span> }</div>
</div><!-- fragment -->
</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.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../d6/d8a/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,14 +69,12 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../da/d69/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>
<a href="#pub-static-methods">Static Public Member Functions</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.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d8/da9/sub__op_8hpp_source.html">sub_op.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::sub_op_t:</div>
<div class="dyncontent">
@ -86,38 +85,40 @@ Inheritance diagram for theo::obf::transform::sub_op_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../d6/d52/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="../../d6/d52/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="memitem:a297c6d5c62d62d61573ba041f61e9763"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d6/d52/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a297c6d5c62d62d61573ba041f61e9763">get</a> ()</td></tr>
<tr class="separator:a297c6d5c62d62d61573ba041f61e9763"><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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" 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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/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="../../d7/de2/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"></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="textblock">
<p class="definition">Definition at line <a class="el" href="../../d8/da9/sub__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="../../d8/da9/sub__op_8hpp_source.html">sub_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a297c6d5c62d62d61573ba041f61e9763" name="a297c6d5c62d62d61573ba041f61e9763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a297c6d5c62d62d61573ba041f61e9763">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -126,7 +127,7 @@ Additional Inherited Members</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a>* theo::obf::transform::sub_op_t::get </td>
<td class="memname">static <a class="el" href="../../d6/d52/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>
@ -138,20 +139,22 @@ Additional Inherited Members</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><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="keyword">static</span> sub_op_t 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>
<p class="definition">Definition at line <a class="el" href="../../d8/da9/sub__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../d8/da9/sub__op_8hpp_source.html">sub_op.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> {</div>
<div class="line"><span class="lineno"> 43</span> <span class="keyword">static</span> sub_op_t obj;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 45</span> }</div>
</div><!-- fragment -->
</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.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../d8/da9/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/decomp/symbol.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">symbol.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">symbol.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;coff/image.hpp&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">recomp/reloc.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d1/d82/reloc_8hpp_source.html">recomp/reloc.hpp</a>&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d6/d62/symbol_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><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....">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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <br /></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="enum-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:af96177687d0ad683c5897d8fa01135f9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">theo::decomp::sym_type_t</a> { <br />
&#160;&#160;<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">theo::decomp::function</a> = 0b00000001
@ -115,7 +115,7 @@ Enumerations</h2></td></tr>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,279 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/decomp/symbol.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">symbol.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d6/d62/symbol_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;coff/image.hpp&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;<a class="code" href="../../d1/d82/reloc_8hpp.html">recomp/reloc.hpp</a>&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d9/dbd/namespacetheo_1_1decomp.html" title="the namespace that contains all of the decomposition related code.">theo::decomp</a> {<span class="comment"></span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">/// meta symbol type. this is an abstraction upon the coff symbol storage/class</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// type.</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9"> 43</a></span><span class="comment"></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a"> 44</a></span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a> = 0b00000001,</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9"> 45</a></span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> = 0b00000010,</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"> 46</a></span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> = 0b00000100,</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6"> 47</a></span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> = 0b00001000,</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313">all</a> = <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313"> 49</a></span>};</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"></span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// symbol_t is an abstraction upon the coff symbol. this allows for easier</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// manipulation of the symbol. symbols can be different things, sections,</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// functions, and even instructions (when functions are broken down).</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">///</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment">/// this class is used throughout theodosius and is a keystone of the project.</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/// ensure you understand how this class works and what it contains.</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html"> 59</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" 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....">symbol_t</a> {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"> /// the explicit constructor of this symbol.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> /// &lt;param name=&quot;img&quot;&gt;the image in which the symbol is located in.&lt;/param&gt;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// &lt;param name=&quot;name&quot;&gt;the name of the symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// &lt;param name=&quot;offset&quot;&gt;offset into the section where this symbol is</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// located.&lt;/param&gt;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> /// &lt;param name=&quot;data&quot;&gt;the data of the symbol. there can be</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> /// no data.&lt;/param&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> /// &lt;param name=&quot;scn&quot;&gt;the section header describing the</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> /// section which contains the symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;the coff symbol itself.&lt;/param&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// &lt;param name=&quot;relocs&quot;&gt;a vector of relocations this symbol has (if</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// any).&lt;/param&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> /// &lt;param name=&quot;dcmp_type&quot;&gt;the type of symbol&lt;/param&gt;</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215" title="the explicit constructor of this symbol.">symbol_t</a>(coff::image_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>,</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> std::string <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>,</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">offset</a>,</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> std::vector&lt;std::uint8_t&gt; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>,</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> coff::section_header_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a> = {},</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> coff::symbol_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a> = {},</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> std::vector&lt;recomp::reloc_t&gt; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a> = {},</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> dcmp_type = {});</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment"></span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> /// gets the name of the symbol.</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> /// &lt;returns&gt;the name of the symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"></span> std::string <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"></span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> /// gets the offset into the section where the symbol is located.</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> /// &lt;returns&gt;the offset into the section where the symbol is</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> /// located.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"></span> std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">offset</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"></span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> /// returns the address where the symbol is allocated.</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> /// &lt;returns&gt;the address where the symbol is allocated.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"></span> std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"></span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> /// returns the size of the symbol.</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> /// &lt;returns&gt;the size of the symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment"></span> std::uint32_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286" title="returns the size of the symbol.">size</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="comment"></span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment"> /// gets the section header of the section in which the symbol is contained.</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment"> /// &lt;returns&gt;the section header of the section in which the symbol is</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment"> /// contained.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"></span> coff::section_header_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"></span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"> /// gets the imagine in which the symbol is located inside of.</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> /// &lt;returns&gt;the imagine in which the symbol is located inside of.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment"></span> coff::image_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment"></span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment"> /// returns a vector by reference of bytes containing the data of the symbol.</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> /// &lt;returns&gt;a vector by reference of bytes containing the data of the</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> /// symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"></span> std::vector&lt;std::uint8_t&gt;&amp; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>();</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"></span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> /// returns a pointer to the coff symbol object.</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> /// &lt;returns&gt;a pointer to the coff symbol object.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"></span> coff::symbol_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"></span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment"> /// returns the type of the symbol.</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment"> /// &lt;returns&gt;the type of the symbol.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"></span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"></span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> /// returns a vector of relocations.</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> /// &lt;returns&gt;a vector of relocations.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"></span> std::vector&lt;recomp::reloc_t&gt;&amp; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>();</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"></span> </div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> /// set the address where the symbol is allocated at.</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> /// &lt;param name=&quot;allocated_at&quot;&gt;where the symbol is allocated at.&lt;/param&gt;</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>(std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment"></span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment"> /// gets the hash of the symbol name.</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment"> /// &lt;returns&gt;the hash of the symbol name.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"></span> std::size_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>();</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"></span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> /// generate a hash given the name of the symbol.</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;the symbol name to create a hash from.&lt;/param&gt;</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment"> /// &lt;returns&gt;the symbol name hash&lt;/returns&gt;</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment"></span> <span class="keyword">static</span> std::size_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>(<span class="keyword">const</span> std::string&amp; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>);</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment"></span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment"> /// get the name of a symbol. this function will create a symbol name if the</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"> /// symbol is opaquely named.</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment"> /// for example in c++ if you define something like this:</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment"> /// some_struct_t val = { value_one, value_two };</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> /// &quot;val&quot; will be stored in the .data section of the coff file. however the</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment"> /// symbol name will be opaque (the name of the symbol will be &quot;.data&quot;). this</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="comment"> /// causes issues with theo since each symbol needs its own unqiue name to</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="comment"> /// generate a unique symbol name hash. for symbols like this, theo will</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment"> /// create a name for it with the following format:</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="comment"> /// .data#section_index!coff_file_timestamp+offset_into_section</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment"> ///</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment"> /// &lt;param name=&quot;img&quot;&gt;the coff file containing the symbol.&lt;/param&gt;</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;the coff symbol itself.&lt;/param&gt;</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment"> /// &lt;returns&gt;the name of the symbol, or a created one.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"></span> <span class="keyword">static</span> std::string <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>(<span class="keyword">const</span> coff::image_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>, coff::symbol_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>);</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> std::string m_name;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> std::uintptr_t m_offset, m_allocated_at;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> std::vector&lt;std::uint8_t&gt; m_data;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> coff::section_header_t* m_scn;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> std::vector&lt;recomp::reloc_t&gt; m_relocs;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> m_sym_type;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> coff::symbol_t* m_sym;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> coff::image_t* m_img;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>};</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>} <span class="comment">// namespace theo::decomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/rol_op.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">rol_op.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">rol_op.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/operation.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/da4/operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d6/d8a/rol__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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">theo::obf::transform::rol_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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,129 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/rol_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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">rol_op.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d6/d8a/rol__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html"> 35</a></span><span class="keyword">class </span><a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a> : <span class="keyword">public</span> <a class="code hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>(</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> [&amp;](std::size_t val, std::uint32_t imm) -&gt; std::size_t {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> std::rotl(val, (std::uint8_t)imm);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> },</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> XED_ICLASS_ROL) {}</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#ade2c667c209f2a27f03712f6b151594b"> 44</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a>* <a class="code hl_function" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#ade2c667c209f2a27f03712f6b151594b">get</a>() {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html">rol_op_t</a> obj;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>};</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/passes/reloc_transform_pass.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">reloc_transform_pass.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">reloc_transform_pass.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/passes/reloc_transform_pass.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html">obf/passes/reloc_transform_pass.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d6/da4/reloc__transform__pass_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,157 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/passes/reloc_transform_pass.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_84420232f7d21f2837bd8f918b6fc033.html">obf</a></li><li class="navelem"><a class="el" href="../../dir_dca6cbf37515070a04f03d98baa5bc62.html">passes</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">reloc_transform_pass.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d6/da4/reloc__transform__pass_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a89aa46da5f721057cd8cf5189207d464"> 34</a></span><a class="code hl_class" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html" title="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead...">reloc_transform_pass_t</a>* <a class="code hl_function" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a89aa46da5f721057cd8cf5189207d464">reloc_transform_pass_t::get</a>() {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> <a class="code hl_class" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html" title="this pass is like the next_inst_pass, however, relocations are encrypted with transformations instead...">reloc_transform_pass_t</a> obj;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>}</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9"> 39</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9" title="virtual method which must be implimented by the pass that inherits this class.">reloc_transform_pass_t::run</a>(<a class="code hl_class" 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>* sym) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> std::optional&lt;recomp::reloc_t*&gt; reloc;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">if</span> (!(reloc = has_legit_reloc(sym)).has_value())</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> spdlog::info(<span class="stringliteral">&quot;adding transformations to relocation in symbol: {}&quot;</span>,</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>());</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> xed_error_enum_t err;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> xed_decoded_inst_t inst;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> ((err = xed_decode(&amp;inst, sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data(), sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().size())) !=</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> XED_ERROR_NONE) {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> spdlog::error(<span class="stringliteral">&quot;failed to decode instruction, reason: {} in symbol: {}&quot;</span>,</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> xed_error_enum_t2str(err), sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>());</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> assert(err == XED_ERROR_NONE);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">auto</span> transforms_bytes = <a class="code hl_function" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982" title="generate a sequence of transformations given an instruction that has a relocation in it.">transform::generate</a>(&amp;inst, reloc.value(), 3, 6);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().insert(sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().end(), transforms_bytes.begin(),</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> transforms_bytes.end());</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>};</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span>std::optional&lt;recomp::reloc_t*&gt; reloc_transform_pass_t::has_legit_reloc(</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <a class="code hl_class" 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>* sym) {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">auto</span> res = <span class="comment">// see if there are any relocations with offset not equal to</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// zero... relocations with zero mean its a relocation to the next</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// instruction...</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> std::find_if(</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>().begin(), sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>().end(),</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> [&amp;](<a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>&amp; reloc) -&gt; <span class="keywordtype">bool</span> { return reloc.offset(); });</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">return</span> res != sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>().end() ? &amp;(*res)</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> : std::optional&lt;recomp::reloc_t*&gt;();</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span>}</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,17 +70,15 @@ $(function() {
<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="../../d7/dbd/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">jcc_rewrite_pass.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::jcc_rewrite_pass_t:</div>
<div class="dyncontent">
@ -90,7 +89,7 @@ Inheritance diagram for theo::obf::jcc_rewrite_pass_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">run</a> (<a class="el" href="../../d9/dd5/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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">More...</a><br /></td></tr>
@ -99,25 +98,30 @@ Public Member Functions</h2></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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="../../d4/dad/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="../../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> base class. <a href="../../d4/dad/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:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a> (<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)=0</td></tr>
<tr class="memdesc:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">More...</a><br /></td></tr>
<tr class="separator:acfadc013ff0754d66a18baffdb1a61d1 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="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/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="../../d4/dad/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:afc17278f751fe3f5868c988faffb3c92"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d6/dc1/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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">get</a> ()</td></tr>
<tr class="separator:afc17278f751fe3f5868c988faffb3c92"><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
<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
<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 >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="../../d2/df9/jcc__rewrite__pass_8hpp_source.html#l00061">61</a> of file <a class="el" href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="afc17278f751fe3f5868c988faffb3c92"></a>
<a id="afc17278f751fe3f5868c988faffb3c92" name="afc17278f751fe3f5868c988faffb3c92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc17278f751fe3f5868c988faffb3c92">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
@ -139,14 +143,18 @@ Static Public Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><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">static</span> jcc_rewrite_pass_t obj;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00035">35</a> of file <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html">jcc_rewrite_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> {</div>
<div class="line"><span class="lineno"> 36</span> <span class="keyword">static</span> jcc_rewrite_pass_t obj;</div>
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 38</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a5a93eb0945025ef3caefed8c63b65b23"></a>
<a id="a5a93eb0945025ef3caefed8c63b65b23" name="a5a93eb0945025ef3caefed8c63b65b23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a93eb0945025ef3caefed8c63b65b23">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -179,63 +187,64 @@ Static Public Member Functions</h2></td></tr>
</dl>
<p>Implements <a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
<div class="fragment"><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; std::int32_t disp = {};</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; xed_decoded_inst_t inst;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; xed_decode(&amp;inst, sym-&gt;data().data(), XED_MAX_INSTRUCTION_BYTES);</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">// if the instruction is branching...</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> ((disp = xed_decoded_inst_get_branch_displacement(&amp;inst))) {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; disp += xed_decoded_inst_get_length(&amp;inst);</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; <span class="comment">// update displacement...</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; xed_decoded_inst_set_branch_displacement(</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; &amp;inst, sym-&gt;data().size() - xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; xed_decoded_inst_get_branch_displacement_width(&amp;inst));</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"> 56</span>&#160; xed_encoder_request_init_from_decode(&amp;inst);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; xed_encoder_request_t* req = &amp;inst;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// update jcc in the buffer...</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; std::uint32_t len = {};</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; xed_encode(req, sym-&gt;data().data(), xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; &amp;len);</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="comment">// create a relocation to the instruction the branch would normally go</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// too...</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">auto</span> offset = disp &lt; 0 ? sym-&gt;offset() - std::abs(disp)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; : sym-&gt;offset() + std::abs(disp);</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="keyword">auto</span> sym_name =</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; std::string(</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; sym-&gt;sym()-&gt;name.to_string(sym-&gt;img()-&gt;get_strings()).data())</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; .append(<span class="stringliteral">&quot;@&quot;</span>)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; .append(std::to_string(offset));</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; sym-&gt;relocs().push_back(</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; recomp::reloc_t(0, <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">decomp::symbol_t::hash</a>(sym_name), sym_name.data()));</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// run next_inst_pass on this symbol to generate the transformations for the</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// relocation to the jcc branch dest instruction...</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">next_inst_pass_t::get</a>()-&gt;<a class="code" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">run</a>(sym);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</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> symbol.cpp:88</div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1next__inst__pass__t_html_a964e6f5291ccba0442519f2563b3a2e9"><div class="ttname"><a href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">theo::obf::next_inst_pass_t::get</a></div><div class="ttdeci">static next_inst_pass_t * get()</div><div class="ttdef"><b>Definition:</b> next_inst_pass.cpp:34</div></div>
<div class="ttc" id="aclasstheo_1_1obf_1_1next__inst__pass__t_html_ae4cbba78b14c2b9da794386e4d92f40f"><div class="ttname"><a href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f">theo::obf::next_inst_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> next_inst_pass.cpp:38</div></div>
<p class="definition">Definition at line <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">40</a> of file <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html">jcc_rewrite_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 40</span> {</div>
<div class="line"><span class="lineno"> 41</span> std::int32_t disp = {};</div>
<div class="line"><span class="lineno"> 42</span> xed_decoded_inst_t inst;</div>
<div class="line"><span class="lineno"> 43</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><span class="lineno"> 44</span> xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</div>
<div class="line"><span class="lineno"> 45</span> xed_decode(&amp;inst, sym-&gt;data().data(), XED_MAX_INSTRUCTION_BYTES);</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> <span class="comment">// if the instruction is branching...</span></div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">if</span> ((disp = xed_decoded_inst_get_branch_displacement(&amp;inst))) {</div>
<div class="line"><span class="lineno"> 49</span> disp += xed_decoded_inst_get_length(&amp;inst);</div>
<div class="line"><span class="lineno"> 50</span> </div>
<div class="line"><span class="lineno"> 51</span> <span class="comment">// update displacement...</span></div>
<div class="line"><span class="lineno"> 52</span> xed_decoded_inst_set_branch_displacement(</div>
<div class="line"><span class="lineno"> 53</span> &amp;inst, sym-&gt;data().size() - xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><span class="lineno"> 54</span> xed_decoded_inst_get_branch_displacement_width(&amp;inst));</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> xed_encoder_request_init_from_decode(&amp;inst);</div>
<div class="line"><span class="lineno"> 57</span> xed_encoder_request_t* req = &amp;inst;</div>
<div class="line"><span class="lineno"> 58</span> </div>
<div class="line"><span class="lineno"> 59</span> <span class="comment">// update jcc in the buffer...</span></div>
<div class="line"><span class="lineno"> 60</span> std::uint32_t len = {};</div>
<div class="line"><span class="lineno"> 61</span> xed_encode(req, sym-&gt;data().data(), xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><span class="lineno"> 62</span> &amp;len);</div>
<div class="line"><span class="lineno"> 63</span> </div>
<div class="line"><span class="lineno"> 64</span> <span class="comment">// create a relocation to the instruction the branch would normally go</span></div>
<div class="line"><span class="lineno"> 65</span> <span class="comment">// too...</span></div>
<div class="line"><span class="lineno"> 66</span> <span class="keyword">auto</span> offset = disp &lt; 0 ? sym-&gt;offset() - std::abs(disp)</div>
<div class="line"><span class="lineno"> 67</span> : sym-&gt;offset() + std::abs(disp);</div>
<div class="line"><span class="lineno"> 68</span> </div>
<div class="line"><span class="lineno"> 69</span> <span class="keyword">auto</span> sym_name =</div>
<div class="line"><span class="lineno"> 70</span> std::string(</div>
<div class="line"><span class="lineno"> 71</span> sym-&gt;sym()-&gt;name.to_string(sym-&gt;img()-&gt;get_strings()).data())</div>
<div class="line"><span class="lineno"> 72</span> .append(<span class="stringliteral">&quot;@&quot;</span>)</div>
<div class="line"><span class="lineno"> 73</span> .append(std::to_string(offset));</div>
<div class="line"><span class="lineno"> 74</span> </div>
<div class="line"><span class="lineno"> 75</span> sym-&gt;relocs().push_back(</div>
<div class="line"><span class="lineno"> 76</span> recomp::reloc_t(0, <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym_name), sym_name.data()));</div>
<div class="line"><span class="lineno"> 77</span> </div>
<div class="line"><span class="lineno"> 78</span> <span class="comment">// run next_inst_pass on this symbol to generate the transformations for the</span></div>
<div class="line"><span class="lineno"> 79</span> <span class="comment">// relocation to the jcc branch dest instruction...</span></div>
<div class="line"><span class="lineno"> 80</span> <a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">next_inst_pass_t::get</a>()-&gt;<a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(sym);</div>
<div class="line"><span class="lineno"> 81</span> }</div>
<div class="line"><span class="lineno"> 82</span>};</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">theo::decomp::symbol_t::data()</a>, <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00034">theo::obf::next_inst_pass_t::get()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">theo::decomp::symbol_t::hash()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00068">theo::decomp::symbol_t::img()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00056">theo::decomp::symbol_t::offset()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00096">theo::decomp::symbol_t::relocs()</a>, <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00038">theo::obf::next_inst_pass_t::run()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00092">theo::decomp::symbol_t::sym()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/obf/passes/<a class="el" href="../../">jcc_rewrite_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../">jcc_rewrite_pass.cpp</a></li>
<li>include/obf/passes/<a class="el" href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html">jcc_rewrite_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html">jcc_rewrite_pass.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/transform.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -70,31 +71,30 @@ $(function() {
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">transform.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">transform.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/add_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/rol_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/ror_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/sub_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/xor_op.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d1/def/add__op_8hpp_source.html">obf/transform/add_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d6/d8a/rol__op_8hpp_source.html">obf/transform/rol_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../da/d34/ror__op_8hpp_source.html">obf/transform/ror_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d8/da9/sub__op_8hpp_source.html">obf/transform/sub_op.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d0/da4/xor__op_8hpp_source.html">obf/transform/xor_op.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d6/deb/transform_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><td class="memItemLeft" align="right" valign="top">std::map&lt; xed_iclass_enum_t, operation_t * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">theo::obf::transform::operations</a></td></tr>
<tr class="memdesc:a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">map of all of the operations and their type. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">More...</a><br /></td></tr>
@ -103,7 +103,7 @@ Variables</h2></td></tr>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,128 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/transform.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">transform.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d6/deb/transform_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;<a class="code" href="../../d1/def/add__op_8hpp.html">obf/transform/add_op.hpp</a>&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;<a class="code" href="../../d6/d8a/rol__op_8hpp.html">obf/transform/rol_op.hpp</a>&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;<a class="code" href="../../da/d34/ror__op_8hpp.html">obf/transform/ror_op.hpp</a>&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;<a class="code" href="../../d8/da9/sub__op_8hpp.html">obf/transform/sub_op.hpp</a>&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#include &lt;<a class="code" href="../../d0/da4/xor__op_8hpp.html">obf/transform/xor_op.hpp</a>&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {<span class="comment"></span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">/// map of all of the operations and their type.</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"> 42</a></span><span class="comment"></span><span class="keyword">inline</span> std::map&lt;xed_iclass_enum_t, operation_t*&gt; <a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">operations</a> = {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> {XED_ICLASS_ADD, <a class="code hl_function" href="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html#a73d8d592c092482231fb5321ded6e83b">add_op_t::get</a>()},</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> {XED_ICLASS_SUB, <a class="code hl_function" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a297c6d5c62d62d61573ba041f61e9763">sub_op_t::get</a>()},</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {XED_ICLASS_ROL, <a class="code hl_function" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#ade2c667c209f2a27f03712f6b151594b">rol_op_t::get</a>()},</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {XED_ICLASS_ROR, <a class="code hl_function" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html#ae7e2ffd49a75aacea4eed4a416537d1c">ror_op_t::get</a>()},</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> {XED_ICLASS_XOR, <a class="code hl_function" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#adaca6aff562bd3f37176b569a898f8b4">xor_op_t::get</a>()}};</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::rol_op_t Member List</div> </div>
<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="../../d6/d52/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#a181d7dd50ca76d37706773fe94814c70">get</a>()</td><td class="entry"><a class="el" href="../../d6/d52/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1rol__op__t.html#ade2c667c209f2a27f03712f6b151594b">get</a>()</td><td class="entry"><a class="el" href="../../d6/d52/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 class="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,21 +68,20 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::hello_world_pass_t Member List</div> </div>
<div class="headertitle"><div class="title">theo::obf::hello_world_pass_t Member List</div></div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">theo::obf::hello_world_pass_t</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a103eae9aa0f69f8d51e5106a08b77a5b">get</a>()</td><td class="entry"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">theo::obf::hello_world_pass_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="../../d4/dad/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="../../d4/dad/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="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#aa556436f48335fe485d96ebc44ac2293">get</a>()</td><td class="entry"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">theo::obf::hello_world_pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d4/dad/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="../../d4/dad/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="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">theo::obf::hello_world_pass_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,32 +68,31 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::decomp::symbol_t Member List</div> </div>
<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="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b">allocated_at</a>(std::uintptr_t allocated_at)</td><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b">allocated_at</a>(std::uintptr_t allocated_at)</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>()</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">hash</a>()</td><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">hash</a>()</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a88481ad95d28f9c54c349f0e43de8970">hash</a>(const std::string &amp;sym)</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a2bef3a0869fee4979918405c5ed8f692">name</a>(const coff::image_t *img, coff::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d9/dd5/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="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a2bef3a0869fee4979918405c5ed8f692">name</a>(const coff::image_t *img, coff::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">relocs</a>()</td><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">relocs</a>()</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">size</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">theo::decomp::symbol_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286">size</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/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="../../d9/dd5/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="odd"><td class="entry"><a class="el" href="../../d9/dd5/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="../../d9/dd5/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1">type</a>() const</td><td class="entry"><a class="el" href="../../d9/dd5/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,21 +68,20 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::jcc_rewrite_pass_t Member List</div> </div>
<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="../../d6/dc1/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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">get</a>()</td><td class="entry"><a class="el" href="../../d6/dc1/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="../../d4/dad/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="../../d4/dad/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="odd"><td class="entry"><a class="el" href="../../d4/dad/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="../../d4/dad/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="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23">run</a>(decomp::symbol_t *sym)</td><td class="entry"><a class="el" href="../../d6/dc1/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb">sym_type</a>()</td><td class="entry"><a class="el" href="../../d4/dad/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,17 +70,15 @@ $(function() {
<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="../../d3/daa/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>).
<a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">operation.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::operation_t:</div>
<div class="dyncontent">
@ -94,34 +93,36 @@ Inheritance diagram for theo::obf::transform::operation_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44"><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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44"><td class="mdescLeft">&#160;</td><td class="mdescRight">generates a native transform instruction given an existing instruction. it works like so: <a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44"><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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets a pointer to the lambda function which contains the transform logic. <a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66"><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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t::operation_t</a>). </p>
<div class="textblock"><p ><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d5/da4/operation_8hpp_source.html#l00061">61</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3876ca1c7904aed54940e1519fc9fdf4"></a>
<a id="a3876ca1c7904aed54940e1519fc9fdf4" name="a3876ca1c7904aed54940e1519fc9fdf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3876ca1c7904aed54940e1519fc9fdf4">&#9670;&nbsp;</a></span>operation_t()</h2>
<div class="memitem">
@ -163,14 +164,15 @@ Static Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; : m_transform(op), m_type(<a class="code" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>) {}</div>
<div class="ttc" id="aclasstheo_1_1obf_1_1transform_1_1operation__t_html_a8558c2a8e78ef8da59674396bc76157f"><div class="ttname"><a href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">theo::obf::transform::operation_t::type</a></div><div class="ttdeci">xed_iclass_enum_t type()</div><div class="ttdoc">gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...</div><div class="ttdef"><b>Definition:</b> operation.hpp:140</div></div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00069">69</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 70</span> : m_transform(op), m_type(<a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f" title="gets the operation type. such as XED_ICLASS_ADD, XED_ICLASS_SUB, etc...">type</a>) {}</div>
</div><!-- fragment -->
</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>
<a id="aed18bfd26da1a198f3b5f81525bcbb66" name="aed18bfd26da1a198f3b5f81525bcbb66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed18bfd26da1a198f3b5f81525bcbb66">&#9670;&nbsp;</a></span>get_transform()</h2>
<div class="memitem">
<div class="memproto">
@ -179,7 +181,7 @@ Static Public Member Functions</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a>* theo::obf::transform::operation_t::get_transform </td>
<td class="memname"><a class="el" href="../../d8/d82/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>
@ -194,11 +196,13 @@ Static Public Member Functions</h2></td></tr>
<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>
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{ <span class="keywordflow">return</span> &amp;m_transform; }</div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00133">133</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 133</span>{ <span class="keywordflow">return</span> &amp;m_transform; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a91f9b94436d49659aaabb291786b3c7b"></a>
<a id="a91f9b94436d49659aaabb291786b3c7b" name="a91f9b94436d49659aaabb291786b3c7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91f9b94436d49659aaabb291786b3c7b">&#9670;&nbsp;</a></span>inverse()</h2>
<div class="memitem">
@ -223,12 +227,14 @@ Static Public Member Functions</h2></td></tr>
<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>
<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{ <span class="keywordflow">return</span> m_inverse_op[m_type]; }</div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00126">126</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 126</span>{ <span class="keywordflow">return</span> m_inverse_op[m_type]; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a414b1716ec527c26bfcbd5262c21a7a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a414b1716ec527c26bfcbd5262c21a7a8">&#9670;&nbsp;</a></span>native()</h2>
<a id="a30cad572f62baf0c10fdc7026d7cba44" name="a30cad572f62baf0c10fdc7026d7cba44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30cad572f62baf0c10fdc7026d7cba44">&#9670;&nbsp;</a></span>native()</h2>
<div class="memitem">
<div class="memproto">
@ -237,7 +243,7 @@ Static Public Member Functions</h2></td></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 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>
@ -262,9 +268,9 @@ Static Public Member Functions</h2></td></tr>
</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>
<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>
@ -273,41 +279,43 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns the bytes of the native instruction that was encoded.</dd></dl>
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::uint32_t inst_len = {};</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</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; xed_error_enum_t err;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; xed_encoder_request_init_from_decode((xed_decoded_inst_s*)inst);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; xed_encoder_request_t* req = (xed_encoder_request_t*)inst;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span> (m_type) {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> XED_ICLASS_ROR:</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> XED_ICLASS_ROL:</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; xed_encoder_request_set_uimm0(req, imm, 1);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; xed_encoder_request_set_uimm0(req, imm, 4);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; xed_encoder_request_set_iclass(req, m_type);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; xed_encoder_request_set_operand_order(req, 1, XED_OPERAND_IMM0);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> ((err = xed_encode(req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len)) !=</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; XED_ERROR_NONE) {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; spdlog::error(<span class="stringliteral">&quot;failed to encode instruction... reason: {}&quot;</span>,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; xed_error_enum_t2str(err));</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; assert(err == XED_ERROR_NONE);</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; </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> std::vector&lt;std::uint8_t&gt;(inst_buff, inst_buff + inst_len);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00089">89</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 90</span> {</div>
<div class="line"><span class="lineno"> 91</span> std::uint32_t inst_len = {};</div>
<div class="line"><span class="lineno"> 92</span> std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><span class="lineno"> 93</span> </div>
<div class="line"><span class="lineno"> 94</span> xed_error_enum_t err;</div>
<div class="line"><span class="lineno"> 95</span> xed_encoder_request_init_from_decode((xed_decoded_inst_s*)inst);</div>
<div class="line"><span class="lineno"> 96</span> xed_encoder_request_t* req = (xed_encoder_request_t*)inst;</div>
<div class="line"><span class="lineno"> 97</span> </div>
<div class="line"><span class="lineno"> 98</span> <span class="keywordflow">switch</span> (m_type) {</div>
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">case</span> XED_ICLASS_ROR:</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">case</span> XED_ICLASS_ROL:</div>
<div class="line"><span class="lineno"> 101</span> xed_encoder_request_set_uimm0(req, imm, 1);</div>
<div class="line"><span class="lineno"> 102</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">default</span>:</div>
<div class="line"><span class="lineno"> 104</span> xed_encoder_request_set_uimm0(req, imm, 4);</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">break</span>;</div>
<div class="line"><span class="lineno"> 106</span> }</div>
<div class="line"><span class="lineno"> 107</span> </div>
<div class="line"><span class="lineno"> 108</span> xed_encoder_request_set_iclass(req, m_type);</div>
<div class="line"><span class="lineno"> 109</span> xed_encoder_request_set_operand_order(req, 1, XED_OPERAND_IMM0);</div>
<div class="line"><span class="lineno"> 110</span> </div>
<div class="line"><span class="lineno"> 111</span> <span class="keywordflow">if</span> ((err = xed_encode(req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len)) !=</div>
<div class="line"><span class="lineno"> 112</span> XED_ERROR_NONE) {</div>
<div class="line"><span class="lineno"> 113</span> spdlog::error(<span class="stringliteral">&quot;failed to encode instruction... reason: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 114</span> xed_error_enum_t2str(err));</div>
<div class="line"><span class="lineno"> 115</span> </div>
<div class="line"><span class="lineno"> 116</span> assert(err == XED_ERROR_NONE);</div>
<div class="line"><span class="lineno"> 117</span> }</div>
<div class="line"><span class="lineno"> 118</span> </div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">return</span> std::vector&lt;std::uint8_t&gt;(inst_buff, inst_buff + inst_len);</div>
<div class="line"><span class="lineno"> 120</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaa5859bc3c7f95d99d4d726289593488"></a>
<a id="aaa5859bc3c7f95d99d4d726289593488" name="aaa5859bc3c7f95d99d4d726289593488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa5859bc3c7f95d99d4d726289593488">&#9670;&nbsp;</a></span>random()</h2>
<div class="memitem">
@ -350,16 +358,20 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a random value in a range.</dd></dl>
<div class="fragment"><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; std::random_device rd;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; std::mt19937 gen(rd());</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; std::uniform_int_distribution&lt;std::size_t&gt; distr(lowest, largest);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> distr(gen);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00148">148</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 148</span> {</div>
<div class="line"><span class="lineno"> 149</span> std::random_device rd;</div>
<div class="line"><span class="lineno"> 150</span> std::mt19937 gen(rd());</div>
<div class="line"><span class="lineno"> 151</span> std::uniform_int_distribution&lt;std::size_t&gt; distr(lowest, largest);</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordflow">return</span> distr(gen);</div>
<div class="line"><span class="lineno"> 153</span> }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">theo::obf::transform::generate()</a>.</p>
</div>
</div>
<a id="a8558c2a8e78ef8da59674396bc76157f"></a>
<a id="a8558c2a8e78ef8da59674396bc76157f" name="a8558c2a8e78ef8da59674396bc76157f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8558c2a8e78ef8da59674396bc76157f">&#9670;&nbsp;</a></span>type()</h2>
<div class="memitem">
@ -384,17 +396,19 @@ Static Public Member Functions</h2></td></tr>
<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>
<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{ <span class="keywordflow">return</span> m_type; }</div>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00140">140</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 140</span>{ <span class="keywordflow">return</span> m_type; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/obf/transform/<a class="el" href="../../">operation.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../d5/da4/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/pass.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,43 +69,42 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">pass.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">pass.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;spdlog/spdlog.h&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">decomp/symbol.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/transform/gen.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d6/d62/symbol_8hpp_source.html">decomp/symbol.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d5/d18/gen_8hpp_source.html">obf/transform/gen.hpp</a>&gt;</code><br />
<code>#include &lt;xed-decode.h&gt;</code><br />
<code>#include &lt;xed-interface.h&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d8/d5a/pass_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html">theo::obf::pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the <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> class is a base clase for all passes made. you must override the <a class="el" href="../../d4/dad/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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a3925943d185a09ad9e32ed8637ccb533"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d5a/pass_8hpp.html#a3925943d185a09ad9e32ed8637ccb533">XED_ENCODER</a></td></tr>
<tr class="separator:a3925943d185a09ad9e32ed8637ccb533"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a3925943d185a09ad9e32ed8637ccb533"></a>
<a id="a3925943d185a09ad9e32ed8637ccb533" name="a3925943d185a09ad9e32ed8637ccb533"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3925943d185a09ad9e32ed8637ccb533">&#9670;&nbsp;</a></span>XED_ENCODER</h2>
<div class="memitem">
@ -116,12 +116,14 @@ Macros</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d8/d5a/pass_8hpp_source.html#l00036">36</a> of file <a class="el" href="../../d8/d5a/pass_8hpp_source.html">pass.hpp</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -0,0 +1,161 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">pass.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d5a/pass_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><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 id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;<a class="code" href="../../d5/d18/gen_8hpp.html">obf/transform/gen.hpp</a>&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="../../d8/d5a/pass_8hpp.html#a3925943d185a09ad9e32ed8637ccb533"> 36</a></span><span class="preprocessor">#define XED_ENCODER</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &lt;xed-decode.h&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#include &lt;xed-interface.h&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span>}</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"></span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/// this is the main namespace for obfuscation related things.</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment"></span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment"></span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">/// the pass_t class is a base clase for all passes made. you must override the</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">/// pass_t::run virtual function and declare the logic of your pass there.</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">///</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment">/// in the constructor of your pass you must call the super constructor (the</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/// pass_t constructor) and pass it the type of symbol which you are interesting</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">/// in receiving.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html"> 55</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" 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> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:<span class="comment"></span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> /// the explicit constructor of the pass_t base class.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> /// &lt;param name=&quot;sym_type&quot;&gt;the type of symbol in which the pass will run on.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> /// every symbol passed to the virtual &quot;run&quot; instruction will be of this</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"> /// type.&lt;/param&gt;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611"> 63</a></span><span class="comment"></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611" title="the explicit constructor of the pass_t base class.">pass_t</a>(<a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">decomp::sym_type_t</a> <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb" title="gets the passes symbol type.">sym_type</a>) : m_sym_type(<a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb" title="gets the passes symbol type.">sym_type</a>){};</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"></span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> /// virtual method which must be implimented by the pass that inherits this</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> /// class.</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> /// &lt;param name=&quot;sym&quot;&gt;a symbol of the same type of m_sym_type.&lt;/param&gt;</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1"> 70</a></span><span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(<a class="code hl_class" 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>* sym) = 0;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"></span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> /// &lt;summary&gt;</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> /// gets the passes symbol type.</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> /// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> /// &lt;returns&gt;the passes symbol type.&lt;/returns&gt;</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb"> 76</a></span><span class="comment"></span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">decomp::sym_type_t</a> <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#a46608a6c2dfb8ff657e44be9b50e0dfb" title="gets the passes symbol type.">sym_type</a>() { <span class="keywordflow">return</span> m_sym_type; }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">decomp::sym_type_t</a> m_sym_type;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span>};</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/symbol.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">symbol.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">symbol.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">decomp/symbol.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d6/d62/symbol_8hpp_source.html">decomp/symbol.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d8/d67/symbol_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,201 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/symbol.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">symbol.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d67/symbol_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d9/dbd/namespacetheo_1_1decomp.html" title="the namespace that contains all of the decomposition related code.">theo::decomp</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215"> 34</a></span><a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215" title="the explicit constructor of this symbol.">symbol_t::symbol_t</a>(coff::image_t* img,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> std::string name,</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> std::uintptr_t offset,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> std::vector&lt;std::uint8_t&gt; <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>,</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> coff::section_header_t* scn,</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> coff::symbol_t* sym,</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> std::vector&lt;recomp::reloc_t&gt; relocs,</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> dcmp_type)</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> : m_name(name),</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> m_offset(offset),</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> m_data(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>),</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> m_scn(scn),</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> m_relocs(relocs),</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> m_sym_type(dcmp_type),</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> m_sym(sym),</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> m_img(img),</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> m_allocated_at(0) {}</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a"> 52</a></span>std::string <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> m_name;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>}</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b"> 56</a></span>std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">symbol_t::offset</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> m_offset;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>}</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47"> 60</a></span>std::uintptr_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">symbol_t::allocated_at</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> m_allocated_at;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span>}</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd"> 64</a></span>coff::section_header_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">symbol_t::scn</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> m_scn;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>}</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665"> 68</a></span>coff::image_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">symbol_t::img</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> m_img;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span>}</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286"> 72</a></span>std::uint32_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286" title="returns the size of the symbol.">symbol_t::size</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> m_data.size();</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>}</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b"> 76</a></span>std::vector&lt;std::uint8_t&gt;&amp; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">symbol_t::data</a>() {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span> m_data;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>}</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1"> 80</a></span><a class="code hl_enumeration" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9" title="meta symbol type. this is an abstraction upon the coff symbol storage/class type.">sym_type_t</a> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">symbol_t::type</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">return</span> m_sym_type;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>}</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79bec0c7338f2c08739ea6547745cc3b"> 84</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">symbol_t::allocated_at</a>(std::uintptr_t allocated_at) {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> m_allocated_at = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>}</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06"> 88</a></span>std::size_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">symbol_t::hash</a>() {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>(m_name);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>}</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9"> 92</a></span>coff::symbol_t* <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">symbol_t::sym</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">return</span> m_sym;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>}</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7"> 96</a></span>std::vector&lt;recomp::reloc_t&gt;&amp; <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">symbol_t::relocs</a>() {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> m_relocs;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span>}</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a88481ad95d28f9c54c349f0e43de8970"> 100</a></span>std::size_t <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">symbol_t::hash</a>(<span class="keyword">const</span> std::string&amp; sym) {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordflow">return</span> std::hash&lt;std::string&gt;{}(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>}</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a2bef3a0869fee4979918405c5ed8f692"> 104</a></span>std::string <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">symbol_t::name</a>(<span class="keyword">const</span> coff::image_t* img, coff::symbol_t* sym) {</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;has_section() &amp;&amp;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;storage_class == coff::storage_class_id::private_symbol &amp;&amp;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;derived_type == coff::derived_type_id::none) {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">auto</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a> = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_section(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;section_index - 1);</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">auto</span> res = std::string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>-&gt;name.to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_strings()).data())</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;section_index))</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;file_header.timedate_stamp))</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> .append(<span class="stringliteral">&quot;+&quot;</span>)</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;value));</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">return</span> std::string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;name.to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_strings()));</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span>}</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span>} <span class="comment">// namespace theo::decomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::obf::transform Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,20 +69,19 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">theo::obf::transform Namespace Reference</div> </div>
<div class="headertitle"><div class="title">theo::obf::transform Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>this namespace encompasses the code for transforming relocations.
<a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#details">More...</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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d9f/classtheo_1_1obf_1_1transform_1_1add__op__t.html">add_op_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a></td></tr>
@ -96,28 +96,28 @@ 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="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a875984c1ce09aa998fe48cca55270ecc"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> = std::function&lt; std::size_t(std::size_t, std::uint32_t)&gt;</td></tr>
<tr class="memdesc:a875984c1ce09aa998fe48cca55270ecc"><td class="mdescLeft">&#160;</td><td class="mdescRight">lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value used in transformation). <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">More...</a><br /></td></tr>
<tr class="separator:a875984c1ce09aa998fe48cca55270ecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a416c6c93ce55a4ab9f70592951d15704"><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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">generate</a> (xed_decoded_inst_t *inst, <a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> *reloc, std::uint8_t low, std::uint8_t high)</td></tr>
<tr class="memdesc:a416c6c93ce55a4ab9f70592951d15704"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a sequence of transformations given an instruction that has a relocation in it. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">More...</a><br /></td></tr>
<tr class="separator:a416c6c93ce55a4ab9f70592951d15704"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb618f5ff8d88963dd77e682456ef982"><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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982">generate</a> (xed_decoded_inst_t *inst, <a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> *reloc, std::uint8_t low, std::uint8_t high)</td></tr>
<tr class="memdesc:abb618f5ff8d88963dd77e682456ef982"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a sequence of transformations given an instruction that has a relocation in it. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982">More...</a><br /></td></tr>
<tr class="separator:abb618f5ff8d88963dd77e682456ef982"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><td class="memItemLeft" align="right" valign="top">std::map&lt; xed_iclass_enum_t, <a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html">operation_t</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">operations</a></td></tr>
<tr class="memdesc:a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">map of all of the operations and their type. <a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">More...</a><br /></td></tr>
<tr class="separator:a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><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 namespace encompasses the code for transforming relocations. </p>
<div class="textblock"><p >this namespace encompasses the code for transforming relocations. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a875984c1ce09aa998fe48cca55270ecc"></a>
<a id="a875984c1ce09aa998fe48cca55270ecc" name="a875984c1ce09aa998fe48cca55270ecc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a875984c1ce09aa998fe48cca55270ecc">&#9670;&nbsp;</a></span>transform_t</h2>
<div class="memitem">
@ -131,11 +131,13 @@ Variables</h2></td></tr>
<p>lambda function which takes in a 64bit value (relocation address) and a 32bit value (random value used in transformation). </p>
<p class="definition">Definition at line <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00054">54</a> of file <a class="el" href="../../d5/da4/operation_8hpp_source.html">operation.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a416c6c93ce55a4ab9f70592951d15704"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a416c6c93ce55a4ab9f70592951d15704">&#9670;&nbsp;</a></span>generate()</h2>
<a id="abb618f5ff8d88963dd77e682456ef982" name="abb618f5ff8d88963dd77e682456ef982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb618f5ff8d88963dd77e682456ef982">&#9670;&nbsp;</a></span>generate()</h2>
<div class="memitem">
<div class="memproto">
@ -144,7 +146,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::uint8_t&gt; theo::obf::transform::generate </td>
<td class="memname">std::vector&lt; std::uint8_t &gt; theo::obf::transform::generate </td>
<td>(</td>
<td class="paramtype">xed_decoded_inst_t *&#160;</td>
<td class="paramname"><em>inst</em>, </td>
@ -191,53 +193,58 @@ Variables</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">auto</span> num_transforms = transform::operation_t::random(low, high);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">auto</span> num_ops = <a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">transform::operations</a>.size();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::vector&lt;std::uint8_t&gt; new_inst_bytes;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::uint32_t inst_len = {};</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; xed_encoder_request_t req;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_PUSHFQ);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</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="keywordflow">for</span> (<span class="keyword">auto</span> cnt = 0u; cnt &lt; num_transforms; ++cnt) {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::uint32_t imm = transform::operation_t::random(</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 0, std::numeric_limits&lt;std::int32_t&gt;::max());</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="keyword">auto</span> itr = <a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">transform::operations</a>.begin();</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; std::advance(itr, transform::operation_t::random(0, num_ops - 1));</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">auto</span> transform_bytes = itr-&gt;second-&gt;native(inst, imm);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; new_inst_bytes.insert(new_inst_bytes.end(), transform_bytes.begin(),</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; transform_bytes.end());</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; reloc-&gt;add_transform(</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {<a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">transform::operations</a>[itr-&gt;second-&gt;inverse()]-&gt;get_transform(), imm});</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; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_POPFQ);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// inverse the order in which the transformations are executed...</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::reverse(reloc-&gt;get_transforms().begin(), reloc-&gt;get_transforms().end());</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> new_inst_bytes;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html_a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"><div class="ttname"><a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">theo::obf::transform::operations</a></div><div class="ttdeci">std::map&lt; xed_iclass_enum_t, operation_t * &gt; operations</div><div class="ttdoc">map of all of the operations and their type.</div><div class="ttdef"><b>Definition:</b> transform.hpp:42</div></div>
<p class="definition">Definition at line <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">45</a> of file <a class="el" href="../../d5/d18/gen_8hpp_source.html">gen.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 48</span> {</div>
<div class="line"><span class="lineno"> 49</span> <span class="keyword">auto</span> num_transforms = transform::operation_t::random(low, high);</div>
<div class="line"><span class="lineno"> 50</span> <span class="keyword">auto</span> num_ops = <a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>.size();</div>
<div class="line"><span class="lineno"> 51</span> std::vector&lt;std::uint8_t&gt; new_inst_bytes;</div>
<div class="line"><span class="lineno"> 52</span> </div>
<div class="line"><span class="lineno"> 53</span> std::uint32_t inst_len = {};</div>
<div class="line"><span class="lineno"> 54</span> std::uint8_t inst_buff[XED_MAX_INSTRUCTION_BYTES];</div>
<div class="line"><span class="lineno"> 55</span> xed_encoder_request_t req;</div>
<div class="line"><span class="lineno"> 56</span> </div>
<div class="line"><span class="lineno"> 57</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><span class="lineno"> 58</span> xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><span class="lineno"> 59</span> xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><span class="lineno"> 60</span> xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_PUSHFQ);</div>
<div class="line"><span class="lineno"> 61</span> xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><span class="lineno"> 62</span> new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</div>
<div class="line"><span class="lineno"> 63</span> </div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> cnt = 0u; cnt &lt; num_transforms; ++cnt) {</div>
<div class="line"><span class="lineno"> 65</span> std::uint32_t imm = transform::operation_t::random(</div>
<div class="line"><span class="lineno"> 66</span> 0, std::numeric_limits&lt;std::int32_t&gt;::max());</div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> <span class="keyword">auto</span> itr = <a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>.begin();</div>
<div class="line"><span class="lineno"> 69</span> std::advance(itr, transform::operation_t::random(0, num_ops - 1));</div>
<div class="line"><span class="lineno"> 70</span> <span class="keyword">auto</span> transform_bytes = itr-&gt;second-&gt;native(inst, imm);</div>
<div class="line"><span class="lineno"> 71</span> new_inst_bytes.insert(new_inst_bytes.end(), transform_bytes.begin(),</div>
<div class="line"><span class="lineno"> 72</span> transform_bytes.end());</div>
<div class="line"><span class="lineno"> 73</span> </div>
<div class="line"><span class="lineno"> 74</span> reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10" title="adds a transformation to be applied to the relocation prior to writing it into the symbol.">add_transform</a>(</div>
<div class="line"><span class="lineno"> 75</span> {<a class="code hl_variable" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" title="map of all of the operations and their type.">transform::operations</a>[itr-&gt;second-&gt;inverse()]-&gt;get_transform(), imm});</div>
<div class="line"><span class="lineno"> 76</span> }</div>
<div class="line"><span class="lineno"> 77</span> </div>
<div class="line"><span class="lineno"> 78</span> xed_encoder_request_zero_set_mode(&amp;req, &amp;istate);</div>
<div class="line"><span class="lineno"> 79</span> xed_encoder_request_set_effective_operand_width(&amp;req, 64);</div>
<div class="line"><span class="lineno"> 80</span> xed_encoder_request_set_iclass(&amp;req, XED_ICLASS_POPFQ);</div>
<div class="line"><span class="lineno"> 81</span> xed_encode(&amp;req, inst_buff, <span class="keyword">sizeof</span>(inst_buff), &amp;inst_len);</div>
<div class="line"><span class="lineno"> 82</span> new_inst_bytes.insert(new_inst_bytes.end(), inst_buff, inst_buff + inst_len);</div>
<div class="line"><span class="lineno"> 83</span> </div>
<div class="line"><span class="lineno"> 84</span> <span class="comment">// inverse the order in which the transformations are executed...</span></div>
<div class="line"><span class="lineno"> 85</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 86</span> std::reverse(reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>().begin(), reloc-&gt;<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>().end());</div>
<div class="line"><span class="lineno"> 87</span> <span class="keywordflow">return</span> new_inst_bytes;</div>
<div class="line"><span class="lineno"> 88</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00091">theo::recomp::reloc_t::add_transform()</a>, <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00101">theo::recomp::reloc_t::get_transforms()</a>, <a class="el" href="../../d6/deb/transform_8hpp_source.html#l00042">operations</a>, and <a class="el" href="../../d5/da4/operation_8hpp_source.html#l00148">theo::obf::transform::operation_t::random()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00038">theo::obf::next_inst_pass_t::run()</a>, and <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html#l00039">theo::obf::reloc_transform_pass_t::run()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"></a>
<a id="a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0" name="a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a4b1d5c0c9c2ea1f0b4ec8f5aba48b0">&#9670;&nbsp;</a></span>operations</h2>
<div class="memitem">
@ -265,12 +272,16 @@ Variables</h2></td></tr>
</div><!-- fragment -->
<p>map of all of the operations and their type. </p>
<p class="definition">Definition at line <a class="el" href="../../d6/deb/transform_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../d6/deb/transform_8hpp_source.html">transform.hpp</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">generate()</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/sub_op.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">sub_op.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">sub_op.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/operation.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/da4/operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d8/da9/sub__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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">theo::obf::transform::sub_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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,127 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/sub_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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">sub_op.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d8/da9/sub__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html"> 35</a></span><span class="keyword">class </span><a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a> : <span class="keyword">public</span> <a class="code hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>([&amp;](std::size_t val,</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::uint32_t imm) -&gt; std::size_t { <span class="keywordflow">return</span> val - imm; },</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> XED_ICLASS_SUB) {}</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a297c6d5c62d62d61573ba041f61e9763"> 42</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a>* <a class="code hl_function" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a297c6d5c62d62d61573ba041f61e9763">get</a>() {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html">sub_op_t</a> obj;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>};</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::xor_op_t Member List</div> </div>
<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="../../da/db7/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="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#a0b6fa0329ed132c090d72feb77a0ffff">get</a>()</td><td class="entry"><a class="el" href="../../da/db7/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#adaca6aff562bd3f37176b569a898f8b4">get</a>()</td><td class="entry"><a class="el" href="../../da/db7/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 class="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,19 +70,17 @@ $(function() {
<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="../../d1/d87/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">engine.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../de/d46/engine_8hpp_source.html">engine.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">add_pass</a> (<a class="el" href="../../d4/dad/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="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426">More...</a><br /></td></tr>
@ -90,16 +89,18 @@ Public Member Functions</h2></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="../../d9/d18/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a58715f5c3ade824a65e602aba570040e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html">engine_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">get</a> ()</td></tr>
<tr class="memdesc:a58715f5c3ade824a65e602aba570040e"><td class="mdescLeft">&#160;</td><td class="mdescRight">get the singleton object of this class. <a href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e">More...</a><br /></td></tr>
<tr class="separator:a58715f5c3ade824a65e602aba570040e"><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>
<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="../../de/d46/engine_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../de/d46/engine_8hpp_source.html">engine.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a8ffc963a133653fa3a0875798d0d3426"></a>
<a id="a8ffc963a133653fa3a0875798d0d3426" name="a8ffc963a133653fa3a0875798d0d3426"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ffc963a133653fa3a0875798d0d3426">&#9670;&nbsp;</a></span>add_pass()</h2>
<div class="memitem">
@ -122,13 +123,15 @@ Static Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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; passes.push_back(pass);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d5c/engine_8cpp_source.html#l00039">39</a> of file <a class="el" href="../../da/d5c/engine_8cpp_source.html">engine.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 39</span> {</div>
<div class="line"><span class="lineno"> 40</span> passes.push_back(pass);</div>
<div class="line"><span class="lineno"> 41</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a58715f5c3ade824a65e602aba570040e"></a>
<a id="a58715f5c3ade824a65e602aba570040e" name="a58715f5c3ade824a65e602aba570040e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58715f5c3ade824a65e602aba570040e">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
@ -153,14 +156,18 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> engine_t obj;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d5c/engine_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../da/d5c/engine_8cpp_source.html">engine.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
<div class="line"><span class="lineno"> 35</span> <span class="keyword">static</span> engine_t obj;</div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 37</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">theo::theo_t::compose()</a>, and <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a7acfdbe9c229cf1f351cec610ab193d3"></a>
<a id="a7acfdbe9c229cf1f351cec610ab193d3" name="a7acfdbe9c229cf1f351cec610ab193d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7acfdbe9c229cf1f351cec610ab193d3">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -183,23 +190,25 @@ Static Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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; std::for_each(passes.begin(), passes.end(), [&amp;](pass_t* pass) {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; if (sym-&gt;type() &amp; pass-&gt;sym_type())</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; pass-&gt;run(sym);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; });</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d5c/engine_8cpp_source.html#l00043">43</a> of file <a class="el" href="../../da/d5c/engine_8cpp_source.html">engine.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 43</span> {</div>
<div class="line"><span class="lineno"> 44</span> std::for_each(passes.begin(), passes.end(), [&amp;](pass_t* pass) {</div>
<div class="line"><span class="lineno"> 45</span> if (sym-&gt;type() &amp; pass-&gt;sym_type())</div>
<div class="line"><span class="lineno"> 46</span> pass-&gt;run(sym);</div>
<div class="line"><span class="lineno"> 47</span> });</div>
<div class="line"><span class="lineno"> 48</span>}</div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/obf/<a class="el" href="../../">engine.hpp</a></li>
<li>src/obf/<a class="el" href="../../">engine.cpp</a></li>
<li>include/obf/<a class="el" href="../../de/d46/engine_8hpp_source.html">engine.hpp</a></li>
<li>src/obf/<a class="el" href="../../da/d5c/engine_8cpp_source.html">engine.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,25 +68,24 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::recomp::recomp_t Member List</div> </div>
<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="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39">allocate</a>()</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">allocator</a>(allocator_t alloc)</td><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07">allocator</a>(allocator_t alloc)</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1">copier</a>(copier_t copy)</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">copy_syms</a>()</td><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e">copy_syms</a>()</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/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="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>()</td><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094">resolve</a>()</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ae0c56f0f8af33b390e4123509523602c">resolve</a>(const std::string &amp;&amp;sym)</td><td class="entry"><a class="el" href="../../d5/d05/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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">resolver</a>(resolver_t resolve)</td><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">theo::recomp::recomp_t</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470">resolver</a>(resolver_t resolve)</td><td class="entry"><a class="el" href="../../d5/d05/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/passes/jcc_rewrite_pass.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,28 +70,27 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">jcc_rewrite_pass.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">jcc_rewrite_pass.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/passes/jcc_rewrite_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/passes/next_inst_pass.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d2/df9/jcc__rewrite__pass_8hpp_source.html">obf/passes/jcc_rewrite_pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d5/d54/next__inst__pass_8hpp_source.html">obf/passes/next_inst_pass.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../d9/db4/jcc__rewrite__pass_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,163 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/passes/jcc_rewrite_pass.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_84420232f7d21f2837bd8f918b6fc033.html">obf</a></li><li class="navelem"><a class="el" href="../../dir_dca6cbf37515070a04f03d98baa5bc62.html">passes</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">jcc_rewrite_pass.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d9/db4/jcc__rewrite__pass_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92"> 35</a></span><a class="code hl_class" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" title="jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position independent.">jcc_rewrite_pass_t</a>* <a class="code hl_function" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#afc17278f751fe3f5868c988faffb3c92">jcc_rewrite_pass_t::get</a>() {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html" title="jcc rewrite pass which rewrites rip relative jcc&#39;s so that they are position independent.">jcc_rewrite_pass_t</a> obj;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span>}</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23"> 40</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d6/dc1/classtheo_1_1obf_1_1jcc__rewrite__pass__t.html#a5a93eb0945025ef3caefed8c63b65b23" title="virtual method which must be implimented by the pass that inherits this class.">jcc_rewrite_pass_t::run</a>(<a class="code hl_class" 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>* sym) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> std::int32_t disp = {};</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> xed_decoded_inst_t inst;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xed_decode(&amp;inst, sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data(), XED_MAX_INSTRUCTION_BYTES);</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// if the instruction is branching...</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">if</span> ((disp = xed_decoded_inst_get_branch_displacement(&amp;inst))) {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> disp += xed_decoded_inst_get_length(&amp;inst);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// update displacement...</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> xed_decoded_inst_set_branch_displacement(</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> &amp;inst, sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().size() - xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> xed_decoded_inst_get_branch_displacement_width(&amp;inst));</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> xed_encoder_request_init_from_decode(&amp;inst);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> xed_encoder_request_t* req = &amp;inst;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// update jcc in the buffer...</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> std::uint32_t len = {};</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> xed_encode(req, sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data(), xed_decoded_inst_get_length(&amp;inst),</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> &amp;len);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// create a relocation to the instruction the branch would normally go</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// too...</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">auto</span> offset = disp &lt; 0 ? sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">offset</a>() - std::abs(disp)</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> : sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">offset</a>() + std::abs(disp);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">auto</span> sym_name =</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> std::string(</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>()-&gt;name.to_string(sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>()-&gt;get_strings()).data())</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> .append(<span class="stringliteral">&quot;@&quot;</span>)</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> .append(std::to_string(offset));</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>().push_back(</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">recomp::reloc_t</a>(0, <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym_name), sym_name.data()));</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// run next_inst_pass on this symbol to generate the transformations for the</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// relocation to the jcc branch dest instruction...</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#a964e6f5291ccba0442519f2563b3a2e9">next_inst_pass_t::get</a>()-&gt;<a class="code hl_function" href="../../d5/d08/classtheo_1_1obf_1_1next__inst__pass__t.html#ae4cbba78b14c2b9da794386e4d92f40f" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(sym);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> }</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>};</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../dd/d60/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>
<a href="#pub-methods">Public Member Functions</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="../../d9/dbc/classtheo_1_1theo__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">theo.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">theo_t</a> (std::vector&lt; std::uint8_t &gt; &amp;lib, <a class="el" href="../../da/de6/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="../../d9/dbc/classtheo_1_1theo__t.html#a0a9ae3322261b97cf1dc47c908ef3c6d">More...</a><br /></td></tr>
@ -96,10 +95,12 @@ Public Member Functions</h2></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>
<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="../../d2/d24/theo_8hpp_source.html#l00070">70</a> of file <a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0a9ae3322261b97cf1dc47c908ef3c6d"></a>
<a id="a0a9ae3322261b97cf1dc47c908ef3c6d" name="a0a9ae3322261b97cf1dc47c908ef3c6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a9ae3322261b97cf1dc47c908ef3c6d">&#9670;&nbsp;</a></span>theo_t()</h2>
<div class="memitem">
@ -148,21 +149,20 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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="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> recomp.cpp:163</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> recomp.cpp:171</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> recomp.cpp:167</div></div>
<p class="definition">Definition at line <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../d2/d26/theo_8cpp_source.html">theo.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> : m_dcmp(lib, &amp;m_sym_tbl),</div>
<div class="line"><span class="lineno"> 38</span> m_recmp(&amp;m_dcmp, {}, {}, {}),</div>
<div class="line"><span class="lineno"> 39</span> m_entry_sym(entry_sym) {</div>
<div class="line"><span class="lineno"> 40</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07" title="setter for the allocater lambda function.">allocator</a>(std::get&lt;0&gt;(lnkr_fns));</div>
<div class="line"><span class="lineno"> 41</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1" title="setter for the copier lambda function.">copier</a>(std::get&lt;1&gt;(lnkr_fns));</div>
<div class="line"><span class="lineno"> 42</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470" title="setter for the resolve lambda function.">resolver</a>(std::get&lt;2&gt;(lnkr_fns));</div>
<div class="line"><span class="lineno"> 43</span>}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a39e067dd71f82b437c6a418d41e38b27"></a>
<a id="a39e067dd71f82b437c6a418d41e38b27" name="a39e067dd71f82b437c6a418d41e38b27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39e067dd71f82b437c6a418d41e38b27">&#9670;&nbsp;</a></span>compose()</h2>
<div class="memitem">
@ -179,26 +179,27 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</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;](decomp::symbol_t&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="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> engine.cpp:34</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> recomp.cpp:155</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> recomp.cpp:92</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> recomp.cpp:40</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> symbol_table.cpp:49</div></div>
<p class="definition">Definition at line <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">56</a> of file <a class="el" href="../../d2/d26/theo_8cpp_source.html">theo.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> {</div>
<div class="line"><span class="lineno"> 57</span> <span class="comment">// run obfuscation engine on all symbols...</span></div>
<div class="line"><span class="lineno"> 58</span> <span class="comment">//</span></div>
<div class="line"><span class="lineno"> 59</span> <span class="keyword">auto</span> engine = <a class="code hl_function" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e" title="get the singleton object of this class.">obf::engine_t::get</a>();</div>
<div class="line"><span class="lineno"> 60</span> m_sym_tbl.<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](decomp::symbol_t&amp; sym) { engine-&gt;run(&amp;sym); });</div>
<div class="line"><span class="lineno"> 61</span> </div>
<div class="line"><span class="lineno"> 62</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39" title="when called, this function allocates space for every symbol.">allocate</a>();</div>
<div class="line"><span class="lineno"> 63</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>();</div>
<div class="line"><span class="lineno"> 64</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e" title="when called, this function copies symbols into allocations.">copy_syms</a>();</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> m_recmp.<a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094" title="when called, this function resolves all relocations in every symbol.">resolve</a>(m_entry_sym.data());</div>
<div class="line"><span class="lineno"> 66</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00040">theo::recomp::recomp_t::allocate()</a>, <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00155">theo::recomp::recomp_t::copy_syms()</a>, <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00049">theo::recomp::symbol_table_t::for_each()</a>, <a class="el" href="../../da/d5c/engine_8cpp_source.html#l00034">theo::obf::engine_t::get()</a>, and <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a66257ff5d9825483d85e58384a12760a"></a>
<a id="a66257ff5d9825483d85e58384a12760a" name="a66257ff5d9825483d85e58384a12760a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66257ff5d9825483d85e58384a12760a">&#9670;&nbsp;</a></span>decompose()</h2>
<div class="memitem">
@ -215,21 +216,26 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><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; <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="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> decomp.cpp:37</div></div>
<p class="definition">Definition at line <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00045">45</a> of file <a class="el" href="../../d2/d26/theo_8cpp_source.html">theo.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 45</span> {</div>
<div class="line"><span class="lineno"> 46</span> <span class="keyword">auto</span> res = m_dcmp.<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469" title="decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...">decompose</a>(m_entry_sym);</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">if</span> (!res.has_value()) {</div>
<div class="line"><span class="lineno"> 48</span> spdlog::error(<span class="stringliteral">&quot;failed to decompose...\n&quot;</span>);</div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><span class="lineno"> 50</span> }</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> spdlog::info(<span class="stringliteral">&quot;decompose successful... {} symbols&quot;</span>, res.value()-&gt;size());</div>
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">return</span> res.value()-&gt;size();</div>
<div class="line"><span class="lineno"> 54</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../dc/d83/decomp_8cpp_source.html#l00037">theo::decomp::decomp_t::decompose()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a97c52bda4b07a456ff1ea6f3c1cdbe24"></a>
<a id="a97c52bda4b07a456ff1ea6f3c1cdbe24" name="a97c52bda4b07a456ff1ea6f3c1cdbe24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97c52bda4b07a456ff1ea6f3c1cdbe24">&#9670;&nbsp;</a></span>resolve()</h2>
<div class="memitem">
@ -253,26 +259,28 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the address of the symbol</dd></dl>
<div class="fragment"><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="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="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> symbol.cpp:88</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> symbol_table.cpp:54</div></div>
<p class="definition">Definition at line <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00068">68</a> of file <a class="el" href="../../d2/d26/theo_8cpp_source.html">theo.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 68</span> {</div>
<div class="line"><span class="lineno"> 69</span> <span class="keyword">auto</span> val = m_sym_tbl.<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5" title="returns an optional pointer to a symbol from the symbol table given the symbols hash (hash of its nam...">sym_from_hash</a>(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym));</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">if</span> (!val.has_value())</div>
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><span class="lineno"> 72</span> </div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> val.value()-&gt;allocated_at();</div>
<div class="line"><span class="lineno"> 74</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">theo::decomp::symbol_t::hash()</a>, and <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00054">theo::recomp::symbol_table_t::sym_from_hash()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/<a class="el" href="../../">theo.hpp</a></li>
<li>src/<a class="el" href="../../">theo.cpp</a></li>
<li>include/<a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a></li>
<li>src/<a class="el" href="../../d2/d26/theo_8cpp_source.html">theo.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::decomp Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,18 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">theo::decomp Namespace Reference</div> </div>
<div class="headertitle"><div class="title">theo::decomp Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>the namespace that contains all of the decomposition related code.
<a href="../../d9/dbd/namespacetheo_1_1decomp.html#details">More...</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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html">decomp_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -91,13 +91,13 @@ Classes</h2></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><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....">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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#details">More...</a><br /></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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:abbf09e1f7eb9e42057ff9c9e8be41266"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" 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;</td></tr>
<tr class="memdesc:abbf09e1f7eb9e42057ff9c9e8be41266"><td class="mdescLeft">&#160;</td><td class="mdescRight">meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself, and the size (if any) of the symbol. <a href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266">More...</a><br /></td></tr>
<tr class="separator:abbf09e1f7eb9e42057ff9c9e8be41266"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:af96177687d0ad683c5897d8fa01135f9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">sym_type_t</a> { <br />
&#160;&#160;<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a> = 0b00000001
@ -112,9 +112,9 @@ Enumerations</h2></td></tr>
<tr class="separator:af96177687d0ad683c5897d8fa01135f9"><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 namespace that contains all of the decomposition related code. </p>
<div class="textblock"><p >the namespace that contains all of the decomposition related code. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="abbf09e1f7eb9e42057ff9c9e8be41266"></a>
<a id="abbf09e1f7eb9e42057ff9c9e8be41266" name="abbf09e1f7eb9e42057ff9c9e8be41266"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbf09e1f7eb9e42057ff9c9e8be41266">&#9670;&nbsp;</a></span>sym_data_t</h2>
<div class="memitem">
@ -128,10 +128,12 @@ Enumerations</h2></td></tr>
<p>meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself, and the size (if any) of the symbol. </p>
<p class="definition">Definition at line <a class="el" href="../../d2/d96/decomp_8hpp_source.html#l00055">55</a> of file <a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="af96177687d0ad683c5897d8fa01135f9"></a>
<a id="af96177687d0ad683c5897d8fa01135f9" name="af96177687d0ad683c5897d8fa01135f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af96177687d0ad683c5897d8fa01135f9">&#9670;&nbsp;</a></span>sym_type_t</h2>
<div class="memitem">
@ -145,30 +147,28 @@ Enumerations</h2></td></tr>
<p>meta symbol type. this is an abstraction upon the coff symbol storage/class type. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a"></a>function&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9"></a>instruction&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"></a>data&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6"></a>section&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313"></a>all&#160;</td><td class="fielddoc"></td></tr>
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a" name="af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a"></a>function&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9" name="af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9"></a>instruction&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112" name="af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"></a>data&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6" name="af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6"></a>section&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313" name="af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313"></a>all&#160;</td><td class="fielddoc"></td></tr>
</table>
<div class="fragment"><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="keyword">function</span> = 0b00000001,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> = 0b00000010,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> = 0b00000100,</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> = 0b00001000,</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313">all</a> = <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> | <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> | <a class="code" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> | <span class="keyword">function</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;};</div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">theo::decomp::section</a></div><div class="ttdeci">@ section</div><div class="ttdef"><b>Definition:</b> symbol.hpp:47</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> symbol.hpp:45</div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313">theo::decomp::all</a></div><div class="ttdeci">@ all</div><div class="ttdef"><b>Definition:</b> symbol.hpp:48</div></div>
<div class="ttc" id="anamespacetheo_1_1decomp_html_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112"><div class="ttname"><a href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">theo::decomp::data</a></div><div class="ttdeci">@ data</div><div class="ttdef"><b>Definition:</b> symbol.hpp:46</div></div>
<p class="definition">Definition at line <a class="el" href="../../d6/d62/symbol_8hpp_source.html#l00043">43</a> of file <a class="el" href="../../d6/d62/symbol_8hpp_source.html">symbol.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 43</span> {</div>
<div class="line"><span class="lineno"> 44</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a> = 0b00000001,</div>
<div class="line"><span class="lineno"> 45</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> = 0b00000010,</div>
<div class="line"><span class="lineno"> 46</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> = 0b00000100,</div>
<div class="line"><span class="lineno"> 47</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> = 0b00001000,</div>
<div class="line"><span class="lineno"> 48</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313">all</a> = <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">section</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">instruction</a> | <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">function</a></div>
<div class="line"><span class="lineno"> 49</span>};</div>
</div><!-- fragment -->
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,19 +70,17 @@ $(function() {
<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="../../d7/d85/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../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....">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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">symbol.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d6/d62/symbol_8hpp_source.html">symbol.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215">symbol_t</a> (coff::image_t *<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>, std::string <a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>, std::uintptr_t <a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a>, std::vector&lt; std::uint8_t &gt; <a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>, coff::section_header_t *<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>={}, coff::symbol_t *<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>={}, std::vector&lt; <a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html">recomp::reloc_t</a> &gt; <a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">relocs</a>={}, <a class="el" href="../../d9/dbd/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="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa7247dcb735176b6ed9246d035e7a215">More...</a><br /></td></tr>
@ -123,7 +122,7 @@ Public Member Functions</h2></td></tr>
<tr class="memdesc:a8695d75670cc4d61d275464e9109ff06"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the hash of the symbol name. <a href="../../d9/dd5/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a88481ad95d28f9c54c349f0e43de8970"><td class="memItemLeft" align="right" valign="top">static std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a88481ad95d28f9c54c349f0e43de8970">hash</a> (const std::string &amp;<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>)</td></tr>
<tr class="memdesc:a88481ad95d28f9c54c349f0e43de8970"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate a hash given the name of the symbol. <a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a88481ad95d28f9c54c349f0e43de8970">More...</a><br /></td></tr>
@ -133,10 +132,12 @@ Static Public Member Functions</h2></td></tr>
<tr class="separator:a2bef3a0869fee4979918405c5ed8f692"><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="../../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....">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>
<div class="textblock"><p ><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....">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="../../d6/d62/symbol_8hpp_source.html#l00059">59</a> of file <a class="el" href="../../d6/d62/symbol_8hpp_source.html">symbol.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa7247dcb735176b6ed9246d035e7a215"></a>
<a id="aa7247dcb735176b6ed9246d035e7a215" name="aa7247dcb735176b6ed9246d035e7a215"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7247dcb735176b6ed9246d035e7a215">&#9670;&nbsp;</a></span>symbol_t()</h2>
<div class="memitem">
@ -220,27 +221,22 @@ Static Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; : m_name(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a">name</a>),</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; m_offset(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">offset</a>),</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; m_data(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">data</a>),</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; m_scn(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>),</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; m_relocs(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">relocs</a>),</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; m_sym_type(dcmp_type),</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; m_sym(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>),</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; m_img(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>),</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; m_allocated_at(0) {}</div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a0e6f850f25a51609fbe5dc0a61b27bc9"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">theo::decomp::symbol_t::sym</a></div><div class="ttdeci">coff::symbol_t * sym() const</div><div class="ttdoc">returns a pointer to the coff symbol object.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:92</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a64d51dabe91687ed40c3942d106fd7dd"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">theo::decomp::symbol_t::scn</a></div><div class="ttdeci">coff::section_header_t * scn() const</div><div class="ttdoc">gets the section header of the section in which the symbol is contained.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:64</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_a79759d343ddb6a62e4149aef92e2d70b"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b">theo::decomp::symbol_t::offset</a></div><div class="ttdeci">std::uintptr_t offset() const</div><div class="ttdoc">gets the offset into the section where the symbol is located.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:56</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> symbol.cpp:52</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_aa3ecf0b480d10bffe68812409c06d61b"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b">theo::decomp::symbol_t::data</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; &amp; data()</div><div class="ttdoc">returns a vector by reference of bytes containing the data of the symbol.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:76</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_abc158e1dc1567161f0a57ed15fc718f7"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7">theo::decomp::symbol_t::relocs</a></div><div class="ttdeci">std::vector&lt; recomp::reloc_t &gt; &amp; relocs()</div><div class="ttdoc">returns a vector of relocations.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:96</div></div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_ad97ad0395e18dcfb42017fb7753e0665"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">theo::decomp::symbol_t::img</a></div><div class="ttdeci">coff::image_t * img() const</div><div class="ttdoc">gets the imagine in which the symbol is located inside of.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:68</div></div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> : m_name(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>),</div>
<div class="line"><span class="lineno"> 43</span> m_offset(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a79759d343ddb6a62e4149aef92e2d70b" title="gets the offset into the section where the symbol is located.">offset</a>),</div>
<div class="line"><span class="lineno"> 44</span> m_data(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>),</div>
<div class="line"><span class="lineno"> 45</span> m_scn(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>),</div>
<div class="line"><span class="lineno"> 46</span> m_relocs(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>),</div>
<div class="line"><span class="lineno"> 47</span> m_sym_type(dcmp_type),</div>
<div class="line"><span class="lineno"> 48</span> m_sym(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>),</div>
<div class="line"><span class="lineno"> 49</span> m_img(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>),</div>
<div class="line"><span class="lineno"> 50</span> m_allocated_at(0) {}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae92f3e35fba82a1d16a58ad09b39fb47"></a>
<a id="ae92f3e35fba82a1d16a58ad09b39fb47" name="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">
@ -257,13 +253,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> m_allocated_at;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00060">60</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 60</span> {</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">return</span> m_allocated_at;</div>
<div class="line"><span class="lineno"> 62</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00084">allocated_at()</a>, and <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00155">theo::recomp::recomp_t::copy_syms()</a>.</p>
</div>
</div>
<a id="a79bec0c7338f2c08739ea6547745cc3b"></a>
<a id="a79bec0c7338f2c08739ea6547745cc3b" name="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">
@ -286,14 +286,17 @@ Static Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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; m_allocated_at = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">allocated_at</a>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
<div class="ttc" id="aclasstheo_1_1decomp_1_1symbol__t_html_ae92f3e35fba82a1d16a58ad09b39fb47"><div class="ttname"><a href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47">theo::decomp::symbol_t::allocated_at</a></div><div class="ttdeci">std::uintptr_t allocated_at() const</div><div class="ttdoc">returns the address where the symbol is allocated.</div><div class="ttdef"><b>Definition:</b> symbol.cpp:60</div></div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00084">84</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 84</span> {</div>
<div class="line"><span class="lineno"> 85</span> m_allocated_at = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>;</div>
<div class="line"><span class="lineno"> 86</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00060">allocated_at()</a>.</p>
</div>
</div>
<a id="aa3ecf0b480d10bffe68812409c06d61b"></a>
<a id="aa3ecf0b480d10bffe68812409c06d61b" name="aa3ecf0b480d10bffe68812409c06d61b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3ecf0b480d10bffe68812409c06d61b">&#9670;&nbsp;</a></span>data()</h2>
<div class="memitem">
@ -310,13 +313,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><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="keywordflow">return</span> m_data;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">76</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 76</span> {</div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">return</span> m_data;</div>
<div class="line"><span class="lineno"> 78</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00155">theo::recomp::recomp_t::copy_syms()</a>, <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>, <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>, <a class="el" href="../../df/d7d/next__inst__pass_8cpp_source.html#l00038">theo::obf::next_inst_pass_t::run()</a>, and <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html#l00039">theo::obf::reloc_transform_pass_t::run()</a>.</p>
</div>
</div>
<a id="a8695d75670cc4d61d275464e9109ff06"></a>
<a id="a8695d75670cc4d61d275464e9109ff06" name="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">
@ -333,14 +340,19 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06">hash</a>(m_name);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</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> symbol.cpp:88</div></div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">88</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 88</span> {</div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>(m_name);</div>
<div class="line"><span class="lineno"> 90</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">hash()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d2/dbb/routine_8cpp_source.html#l00041">theo::decomp::routine_t::decompose()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">hash()</a>, <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00040">theo::recomp::symbol_table_t::put_symbol()</a>, <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00175">theo::recomp::recomp_t::resolve()</a>, <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00068">theo::theo_t::resolve()</a>, <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html#l00050">theo::obf::hello_world_pass_t::run()</a>, and <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="a88481ad95d28f9c54c349f0e43de8970"></a>
<a id="a88481ad95d28f9c54c349f0e43de8970" name="a88481ad95d28f9c54c349f0e43de8970"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88481ad95d28f9c54c349f0e43de8970">&#9670;&nbsp;</a></span>hash() <span class="overload">[2/2]</span></h2>
<div class="memitem">
@ -372,13 +384,17 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the symbol name hash</dd></dl>
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> std::hash&lt;std::string&gt;{}(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00100">100</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 100</span> {</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">return</span> std::hash&lt;std::string&gt;{}(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>);</div>
<div class="line"><span class="lineno"> 102</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00092">sym()</a>.</p>
</div>
</div>
<a id="ad97ad0395e18dcfb42017fb7753e0665"></a>
<a id="ad97ad0395e18dcfb42017fb7753e0665" name="ad97ad0395e18dcfb42017fb7753e0665"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad97ad0395e18dcfb42017fb7753e0665">&#9670;&nbsp;</a></span>img()</h2>
<div class="memitem">
@ -395,13 +411,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><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">return</span> m_img;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00068">68</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 68</span> {</div>
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">return</span> m_img;</div>
<div class="line"><span class="lineno"> 70</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00104">name()</a>, and <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="a7c6dee036291ded334aa10d89293fc2a"></a>
<a id="a7c6dee036291ded334aa10d89293fc2a" name="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">
@ -418,13 +438,17 @@ Static Public Member Functions</h2></td></tr>
<p>gets the name of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the name of the symbol.</dd></dl>
<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> m_name;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00052">52</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 52</span> {</div>
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">return</span> m_name;</div>
<div class="line"><span class="lineno"> 54</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d2/dbb/routine_8cpp_source.html#l00041">theo::decomp::routine_t::decompose()</a>, <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>, <a class="el" href="../../db/dae/hello__world__pass_8hpp_source.html#l00050">theo::obf::hello_world_pass_t::run()</a>, and <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html#l00039">theo::obf::reloc_transform_pass_t::run()</a>.</p>
</div>
</div>
<a id="a2bef3a0869fee4979918405c5ed8f692"></a>
<a id="a2bef3a0869fee4979918405c5ed8f692" name="a2bef3a0869fee4979918405c5ed8f692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bef3a0869fee4979918405c5ed8f692">&#9670;&nbsp;</a></span>name() <span class="overload">[2/2]</span></h2>
<div class="memitem">
@ -459,10 +483,10 @@ Static Public Member Functions</h2></td></tr>
</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>
<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>
@ -471,27 +495,31 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the name of the symbol, or a created one.</dd></dl>
<div class="fragment"><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="keywordflow">if</span> (<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;has_section() &amp;&amp;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;storage_class == coff::storage_class_id::private_symbol &amp;&amp;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;derived_type == coff::derived_type_id::none) {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">auto</span> <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a> = <a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>-&gt;get_section(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;section_index - 1);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">auto</span> res = std::string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd">scn</a>-&gt;name.to_string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>-&gt;get_strings()).data())</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; .append(std::to_string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;section_index))</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; .append(std::to_string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>-&gt;file_header.timedate_stamp))</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; .append(<span class="stringliteral">&quot;+&quot;</span>)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; .append(std::to_string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;value));</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; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> std::string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9">sym</a>-&gt;name.to_string(<a class="code" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665">img</a>-&gt;get_strings()));</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00104">104</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 104</span> {</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;has_section() &amp;&amp;</div>
<div class="line"><span class="lineno"> 106</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;storage_class == coff::storage_class_id::private_symbol &amp;&amp;</div>
<div class="line"><span class="lineno"> 107</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;derived_type == coff::derived_type_id::none) {</div>
<div class="line"><span class="lineno"> 108</span> <span class="keyword">auto</span> <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a> = <a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_section(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;section_index - 1);</div>
<div class="line"><span class="lineno"> 109</span> <span class="keyword">auto</span> res = std::string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>-&gt;name.to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_strings()).data())</div>
<div class="line"><span class="lineno"> 110</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><span class="lineno"> 111</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;section_index))</div>
<div class="line"><span class="lineno"> 112</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><span class="lineno"> 113</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;file_header.timedate_stamp))</div>
<div class="line"><span class="lineno"> 114</span> .append(<span class="stringliteral">&quot;+&quot;</span>)</div>
<div class="line"><span class="lineno"> 115</span> .append(std::to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;value));</div>
<div class="line"><span class="lineno"> 116</span> </div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><span class="lineno"> 118</span> }</div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">return</span> std::string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a0e6f850f25a51609fbe5dc0a61b27bc9" title="returns a pointer to the coff symbol object.">sym</a>-&gt;name.to_string(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ad97ad0395e18dcfb42017fb7753e0665" title="gets the imagine in which the symbol is located inside of.">img</a>-&gt;get_strings()));</div>
<div class="line"><span class="lineno"> 120</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00068">img()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00064">scn()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00092">sym()</a>.</p>
</div>
</div>
<a id="a79759d343ddb6a62e4149aef92e2d70b"></a>
<a id="a79759d343ddb6a62e4149aef92e2d70b" name="a79759d343ddb6a62e4149aef92e2d70b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79759d343ddb6a62e4149aef92e2d70b">&#9670;&nbsp;</a></span>offset()</h2>
<div class="memitem">
@ -508,13 +536,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> m_offset;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00056">56</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> {</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">return</span> m_offset;</div>
<div class="line"><span class="lineno"> 58</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="abc158e1dc1567161f0a57ed15fc718f7"></a>
<a id="abc158e1dc1567161f0a57ed15fc718f7" name="abc158e1dc1567161f0a57ed15fc718f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc158e1dc1567161f0a57ed15fc718f7">&#9670;&nbsp;</a></span>relocs()</h2>
<div class="memitem">
@ -531,13 +563,17 @@ Static Public Member Functions</h2></td></tr>
<p>returns a vector of relocations. </p>
<dl class="section return"><dt>Returns</dt><dd>a vector of relocations.</dd></dl>
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> m_relocs;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00096">96</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 96</span> {</div>
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">return</span> m_relocs;</div>
<div class="line"><span class="lineno"> 98</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>, and <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="a64d51dabe91687ed40c3942d106fd7dd"></a>
<a id="a64d51dabe91687ed40c3942d106fd7dd" name="a64d51dabe91687ed40c3942d106fd7dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64d51dabe91687ed40c3942d106fd7dd">&#9670;&nbsp;</a></span>scn()</h2>
<div class="memitem">
@ -554,13 +590,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> m_scn;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00064">64</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 64</span> {</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> m_scn;</div>
<div class="line"><span class="lineno"> 66</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00104">name()</a>, and <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<a id="ae33f1452b01fe80f9c384241b9fe6286"></a>
<a id="ae33f1452b01fe80f9c384241b9fe6286" name="ae33f1452b01fe80f9c384241b9fe6286"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae33f1452b01fe80f9c384241b9fe6286">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
@ -577,13 +617,15 @@ Static Public Member Functions</h2></td></tr>
<p>returns the size of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the size of the symbol.</dd></dl>
<div class="fragment"><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> m_data.size();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00072">72</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 72</span> {</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> m_data.size();</div>
<div class="line"><span class="lineno"> 74</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a0e6f850f25a51609fbe5dc0a61b27bc9"></a>
<a id="a0e6f850f25a51609fbe5dc0a61b27bc9" name="a0e6f850f25a51609fbe5dc0a61b27bc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e6f850f25a51609fbe5dc0a61b27bc9">&#9670;&nbsp;</a></span>sym()</h2>
<div class="memitem">
@ -600,13 +642,17 @@ Static Public Member Functions</h2></td></tr>
<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 class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> m_sym;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00092">92</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 92</span> {</div>
<div class="line"><span class="lineno"> 93</span> <span class="keywordflow">return</span> m_sym;</div>
<div class="line"><span class="lineno"> 94</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00100">hash()</a>, <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00104">name()</a>, and <a class="el" href="../../d9/db4/jcc__rewrite__pass_8cpp_source.html#l00040">theo::obf::jcc_rewrite_pass_t::run()</a>.</p>
</div>
</div>
<a id="a16587cddd37cd45d9ec6cd25c229e8d1"></a>
<a id="a16587cddd37cd45d9ec6cd25c229e8d1" name="a16587cddd37cd45d9ec6cd25c229e8d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16587cddd37cd45d9ec6cd25c229e8d1">&#9670;&nbsp;</a></span>type()</h2>
<div class="memitem">
@ -623,20 +669,24 @@ Static Public Member Functions</h2></td></tr>
<p>returns the type of the symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>the type of the symbol.</dd></dl>
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> m_sym_type;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00080">80</a> of file <a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 80</span> {</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordflow">return</span> m_sym_type;</div>
<div class="line"><span class="lineno"> 82</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00040">theo::recomp::recomp_t::allocate()</a>, and <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/decomp/<a class="el" href="../../">symbol.hpp</a></li>
<li>src/decomp/<a class="el" href="../../">symbol.cpp</a></li>
<li>include/decomp/<a class="el" href="../../d6/d62/symbol_8hpp_source.html">symbol.hpp</a></li>
<li>src/decomp/<a class="el" href="../../d8/d67/symbol_8cpp_source.html">symbol.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: README.md File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -63,14 +64,13 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">README.md File Reference</div> </div>
<div class="headertitle"><div class="title">README.md File Reference</div></div>
</div><!--header-->
<div class="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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/recomp/symbol_table.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">symbol_table.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">symbol_table.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">recomp/symbol_table.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">recomp/symbol_table.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../da/d0c/symbol__table_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,155 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/recomp/symbol_table.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_e9c14650d9055e552e1edadf0640c741.html">recomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">symbol_table.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../da/d0c/symbol__table_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/dbd/namespacetheo_1_1recomp.html" title="this namespace encompasses all recomposition related code.">theo::recomp</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ab7dfbb8369463ce3d74ad656115cf4d5"> 34</a></span><a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5" title="default constructor. does nothing.">symbol_table_t::symbol_table_t</a>(<span class="keyword">const</span> std::vector&lt;decomp::symbol_t&gt;&amp;&amp; syms) {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> std::for_each(syms.begin(), syms.end(), [&amp;](<a class="code hl_class" 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> sym) {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> m_table.insert({sym.hash(), sym});</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> });</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span>}</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af9caf2d4d97b2498aa624c3750a7a601"> 40</a></span><span class="keywordtype">void</span> symbol_table_t::put_symbol(<a class="code hl_class" 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>&amp; sym) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> m_table.insert({sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>(), sym});</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>}</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ae7c35d9336f67d3175910c028e0b9b3e"> 44</a></span><span class="keywordtype">void</span> symbol_table_t::put_symbols(std::vector&lt;decomp::symbol_t&gt;&amp; syms) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> std::for_each(syms.begin(), syms.end(),</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> [&amp;](<a class="code hl_class" 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> sym) { put_symbol(sym); });</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d"> 49</a></span><span class="keywordtype">void</span> symbol_table_t::for_each(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code hl_class" 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>&amp; sym)&gt; fn) {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> itr = m_table.begin(); itr != m_table.end(); ++itr)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> fn(itr-&gt;second);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span>}</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a308c0dbcc4d569467e0986b32ef30db5"> 54</a></span>std::optional&lt;decomp::symbol_t*&gt; symbol_table_t::sym_from_hash(</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> std::size_t hash) {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">return</span> m_table.count(hash) ? &amp;m_table.at(hash)</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>}</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#abaea9fd899d87b09d60c2b815624e2d2"> 60</a></span>std::optional&lt;decomp::symbol_t*&gt; symbol_table_t::sym_from_alloc(</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> std::uintptr_t allocated_at) {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">auto</span> res =</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> std::find_if(m_table.begin(), m_table.end(),</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> [&amp;](std::pair&lt;const std::size_t, decomp::symbol_t&gt; itr) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> return itr.second.allocated_at() == allocated_at;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> });</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> res != m_table.end() ? &amp;res-&gt;second</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span>}</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#af57c0495a442ea86af0f9cca4521631e"> 72</a></span>std::uint32_t symbol_table_t::size() {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> m_table.size();</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>}</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span>} <span class="comment">// namespace theo::recomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/ror_op.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,37 +69,36 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">ror_op.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">ror_op.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/transform/operation.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d5/da4/operation_8hpp_source.html">obf/transform/operation.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../da/d34/ror__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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">theo::obf::transform::ror_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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memitem:d8/d82/namespacetheo_1_1obf_1_1transform"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html">theo::obf::transform</a></td></tr>
<tr class="memdesc:d8/d82/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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,129 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: include/obf/transform/ror_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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">ror_op.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../da/d34/ror__op_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><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 id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html" title="this namespace encompasses the code for transforming relocations.">theo::obf::transform</a> {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html"> 35</a></span><span class="keyword">class </span><a class="code hl_class" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a> : <span class="keyword">public</span> <a class="code hl_class" href="../../d7/de2/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> {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">explicit</span> <a class="code hl_class" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a>()</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> : <a class="code hl_function" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4" title="explicit constructor for operation_t">operation_t</a>(</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> [&amp;](std::size_t val, std::uint32_t imm) -&gt; std::size_t {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">return</span> std::rotr(val, (std::uint8_t)imm);</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> },</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> XED_ICLASS_ROR) {}</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html#ae7e2ffd49a75aacea4eed4a416537d1c"> 44</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a>* <a class="code hl_function" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html#ae7e2ffd49a75aacea4eed4a416537d1c">get</a>() {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">static</span> <a class="code hl_class" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a> obj;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>};</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span>} <span class="comment">// namespace theo::obf::transform</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/engine.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">engine.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">engine.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">obf/engine.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../de/d46/engine_8hpp_source.html">obf/engine.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../da/d5c/engine_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,130 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/obf/engine.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_84420232f7d21f2837bd8f918b6fc033.html">obf</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">engine.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../da/d5c/engine_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e"> 34</a></span><a class="code hl_class" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html" title="singleton obfuscation engine class. this class is responsible for keeping track of the registered pas...">engine_t</a>* <a class="code hl_function" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a58715f5c3ade824a65e602aba570040e" title="get the singleton object of this class.">engine_t::get</a>() {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html" title="singleton obfuscation engine class. this class is responsible for keeping track of the registered pas...">engine_t</a> obj;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>}</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426"> 39</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a8ffc963a133653fa3a0875798d0d3426" title="add a pass to the engine. the order in which you call this function matters as the underlying data st...">engine_t::add_pass</a>(<a class="code hl_class" 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>* pass) {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> passes.push_back(pass);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3"> 43</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d18/classtheo_1_1obf_1_1engine__t.html#a7acfdbe9c229cf1f351cec610ab193d3" title="run all the passes on the symbol. this function will only run a pass if the symbol is the same type a...">engine_t::run</a>(<a class="code hl_class" 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>* sym) {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> std::for_each(passes.begin(), passes.end(), [&amp;](<a class="code hl_class" 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>* pass) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> if (sym-&gt;type() &amp; pass-&gt;sym_type())</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> pass-&gt;run(sym);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> });</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: Member List</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,10 +19,10 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
</td>
@ -31,21 +31,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -67,24 +68,23 @@ $(function() {
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">theo::obf::transform::sub_op_t Member List</div> </div>
<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="../../d6/d52/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a5ce235a70eaf19fbf17fb0786e2dba05">get</a>()</td><td class="entry"><a class="el" href="../../d6/d52/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a307c6d7d48319d28d39d93c1df18680a">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d6/d52/classtheo_1_1obf_1_1transform_1_1sub__op__t.html#a297c6d5c62d62d61573ba041f61e9763">get</a>()</td><td class="entry"><a class="el" href="../../d6/d52/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 class="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a91f9b94436d49659aaabb291786b3c7b">inverse</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a>(const xed_decoded_inst_t *inst, std::uint32_t imm)</td><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="odd"><td class="entry"><a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a8558c2a8e78ef8da59674396bc76157f">type</a>()</td><td class="entry"><a class="el" href="../../d7/de2/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,14 +69,12 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../d8/dce/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>
<a href="#pub-static-methods">Static Public Member Functions</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.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d0/da4/xor__op_8hpp_source.html">xor_op.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::xor_op_t:</div>
<div class="dyncontent">
@ -86,38 +85,40 @@ Inheritance diagram for theo::obf::transform::xor_op_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../da/db7/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="../../da/db7/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="memitem:adaca6aff562bd3f37176b569a898f8b4"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../da/db7/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="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html#adaca6aff562bd3f37176b569a898f8b4">get</a> ()</td></tr>
<tr class="separator:adaca6aff562bd3f37176b569a898f8b4"><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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" 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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/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="../../d7/de2/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"></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="textblock">
<p class="definition">Definition at line <a class="el" href="../../d0/da4/xor__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="../../d0/da4/xor__op_8hpp_source.html">xor_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="adaca6aff562bd3f37176b569a898f8b4" name="adaca6aff562bd3f37176b569a898f8b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adaca6aff562bd3f37176b569a898f8b4">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -126,7 +127,7 @@ Additional Inherited Members</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../da/db7/classtheo_1_1obf_1_1transform_1_1xor__op__t.html">xor_op_t</a>* theo::obf::transform::xor_op_t::get </td>
<td class="memname">static <a class="el" href="../../da/db7/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>
@ -138,20 +139,22 @@ Additional Inherited Members</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><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="keyword">static</span> xor_op_t 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>
<p class="definition">Definition at line <a class="el" href="../../d0/da4/xor__op_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../d0/da4/xor__op_8hpp_source.html">xor_op.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> {</div>
<div class="line"><span class="lineno"> 43</span> <span class="keyword">static</span> xor_op_t obj;</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 45</span> }</div>
</div><!-- fragment -->
</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.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../d0/da4/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo::recomp Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,18 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">theo::recomp Namespace Reference</div> </div>
<div class="headertitle"><div class="title">theo::recomp Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>this namespace encompasses all recomposition related code.
<a href="../../da/dbd/namespacetheo_1_1recomp.html#details">More...</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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html">recomp_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">the main class responsible for recomposition <a href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -90,7 +90,7 @@ Classes</h2></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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. <a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#details">More...</a><br /></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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a7364f8c94855a2a871a9d6e1057989f3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">resolver_t</a> = std::function&lt; std::uintptr_t(std::string)&gt;</td></tr>
<tr class="memdesc:a7364f8c94855a2a871a9d6e1057989f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">a function which is called by <a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> to resolve external symbols <a href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">More...</a><br /></td></tr>
@ -103,9 +103,9 @@ Typedefs</h2></td></tr>
<tr class="separator:a96995cb0c5291dce945760c3d8f55241"><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 namespace encompasses all recomposition related code. </p>
<div class="textblock"><p >this namespace encompasses all recomposition related code. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a96995cb0c5291dce945760c3d8f55241"></a>
<a id="a96995cb0c5291dce945760c3d8f55241" name="a96995cb0c5291dce945760c3d8f55241"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96995cb0c5291dce945760c3d8f55241">&#9670;&nbsp;</a></span>allocator_t</h2>
<div class="memitem">
@ -118,11 +118,13 @@ Typedefs</h2></td></tr>
</div><div class="memdoc">
<p>a function which is called to allocate space for a symbol. </p>
<p>the first param is the size of the symbol, the second param is the characteristics of the section which the symbol is allocated in.</p>
<p >the first param is the size of the symbol, the second param is the characteristics of the section which the symbol is allocated in. </p>
<p class="definition">Definition at line <a class="el" href="../../d4/d4a/recomp_8hpp_source.html#l00057">57</a> of file <a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a>.</p>
</div>
</div>
<a id="a604e81450773453df676c3b573651adc"></a>
<a id="a604e81450773453df676c3b573651adc" name="a604e81450773453df676c3b573651adc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a604e81450773453df676c3b573651adc">&#9670;&nbsp;</a></span>copier_t</h2>
<div class="memitem">
@ -136,9 +138,11 @@ Typedefs</h2></td></tr>
<p>a function which is called by <a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> to copy symbols into memory. </p>
<p class="definition">Definition at line <a class="el" href="../../d4/d4a/recomp_8hpp_source.html#l00049">49</a> of file <a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a>.</p>
</div>
</div>
<a id="a7364f8c94855a2a871a9d6e1057989f3"></a>
<a id="a7364f8c94855a2a871a9d6e1057989f3" name="a7364f8c94855a2a871a9d6e1057989f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7364f8c94855a2a871a9d6e1057989f3">&#9670;&nbsp;</a></span>resolver_t</h2>
<div class="memitem">
@ -152,12 +156,14 @@ Typedefs</h2></td></tr>
<p>a function which is called by <a class="el" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html" title="the main class responsible for recomposition">recomp_t</a> to resolve external symbols </p>
<p class="definition">Definition at line <a class="el" href="../../d4/d4a/recomp_8hpp_source.html#l00044">44</a> of file <a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp.hpp</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: theo Namespace Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,44 +66,43 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">theo Namespace Reference</div> </div>
<div class="headertitle"><div class="title">theo Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>The outer most encompassing namespace of this project.
<a href="../../da/de6/namespacetheo.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">obf</a></td></tr>
<tr class="memdesc:d5/da8/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <br /></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="nested-classes"></a>
Classes</h2></td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d9/dbc/classtheo_1_1theo__t.html">theo_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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="../../d9/dbc/classtheo_1_1theo__t.html#details">More...</a><br /></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="typedef-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a66efe2c63e06764fb2d9a378c688c680"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">lnk_fns_t</a> = std::tuple&lt; <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241">recomp::allocator_t</a>, <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc">recomp::copier_t</a>, <a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3">recomp::resolver_t</a> &gt;</td></tr>
<tr class="memdesc:a66efe2c63e06764fb2d9a378c688c680"><td class="mdescLeft">&#160;</td><td class="mdescRight">tuple of functions used by theo to allocate, copy, and resolve symbols. <a href="../../da/de6/namespacetheo.html#a66efe2c63e06764fb2d9a378c688c680">More...</a><br /></td></tr>
<tr class="separator:a66efe2c63e06764fb2d9a378c688c680"><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 outer most encompassing namespace of this project. </p>
<div class="textblock"><p >The outer most encompassing namespace of this project. </p>
</div><h2 class="groupheader">Typedef Documentation</h2>
<a id="a66efe2c63e06764fb2d9a378c688c680"></a>
<a id="a66efe2c63e06764fb2d9a378c688c680" name="a66efe2c63e06764fb2d9a378c688c680"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66efe2c63e06764fb2d9a378c688c680">&#9670;&nbsp;</a></span>lnk_fns_t</h2>
<div class="memitem">
@ -116,12 +116,14 @@ Typedefs</h2></td></tr>
<p>tuple of functions used by theo to allocate, copy, and resolve symbols. </p>
<p class="definition">Definition at line <a class="el" href="../../d2/d24/theo_8hpp_source.html#l00060">60</a> of file <a class="el" href="../../d2/d24/theo_8hpp_source.html">theo.hpp</a>.</p>
</div>
</div>
</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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/recomp/recomp.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">recomp.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">recomp.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">recomp/recomp.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d4/d4a/recomp_8hpp_source.html">recomp/recomp.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../db/d55/recomp_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memitem:da/dbd/namespacetheo_1_1recomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dbd/namespacetheo_1_1recomp.html">theo::recomp</a></td></tr>
<tr class="memdesc:da/dbd/namespacetheo_1_1recomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">this namespace encompasses all recomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,259 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/recomp/recomp.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_e9c14650d9055e552e1edadf0640c741.html">recomp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">recomp.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../db/d55/recomp_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../da/dbd/namespacetheo_1_1recomp.html" title="this namespace encompasses all recomposition related code.">theo::recomp</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589"> 34</a></span><a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ac5f04297153c2e445330e5cc103e8589" title="the explicit constructor for the recomp_t class.">recomp_t::recomp_t</a>(<a class="code hl_class" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html" title="the main decomposition class which is responsible for breaking down lib file into coff files,...">decomp::decomp_t</a>* dcmp,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> alloc,</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> copy,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> resolve)</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> : m_dcmp(dcmp), m_allocator(alloc), m_copier(copy), m_resolver(resolve) {}</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39"> 40</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a78502665e218d3addca9b1e5e3875f39" title="when called, this function allocates space for every symbol.">recomp_t::allocate</a>() {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// map code &amp; data/rdata/bss sections first...</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="comment">//</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> m_dcmp-&gt;<a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120" title="gets the symbol table.">syms</a>()-&gt;<a class="code hl_function" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#a35008ba37814a94209cf979302e13e6d" title="this function is a wrapper function that allows you to get at each entry in the symbol table by refer...">for_each</a>([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">switch</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>()) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> case decomp::sym_type_t::section:</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> case decomp::sym_type_t::function:</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> case decomp::sym_type_t::instruction: {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> sym.allocated_at(m_allocator(sym.size(), sym.scn()-&gt;characteristics));</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> break;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> }</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> });</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// then map data/rdata/bss symbols to the allocated sections...</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="comment">//</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> m_dcmp-&gt;syms()-&gt;for_each([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">if</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>() == <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">decomp::sym_type_t::data</a>) {</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// if the symbol has a section then we will refer to the allocation made</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// for that section...</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">//</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> if (sym.scn()) {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> auto scn_sym =</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> m_dcmp-&gt;syms()-&gt;sym_from_hash(m_dcmp-&gt;scn_hash_tbl()[sym.scn()]);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> if (!scn_sym.has_value()) {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> spdlog::error(<span class="stringliteral">&quot;failed to locate section: {} for symbol: {}&quot;</span>,</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> sym.scn()-&gt;name.to_string(), sym.name());</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> assert(scn_sym.has_value());</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> }</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> sym.allocated_at(scn_sym.value()-&gt;allocated_at() + sym.offset());</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> } <span class="keywordflow">else</span> { <span class="comment">// else if there is no section then we allocate based upon the</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// size of the symbol... this is only done for symbols that are</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// bss...</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">//</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// bss is read write...</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">//</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> coff::section_characteristics_t prot = {};</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> prot.mem_read = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> prot.mem_write = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>(m_allocator(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae33f1452b01fe80f9c384241b9fe6286" title="returns the size of the symbol.">size</a>(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>()-&gt;characteristics));</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> });</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>}</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a299fbede378f04991df2e39293307094"> 92</a></span><span class="keywordtype">void</span> recomp_t::resolve() {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// resolve relocations in all symbols...</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment">//</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> m_dcmp-&gt;syms()-&gt;for_each([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">auto</span>&amp; relocs = sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#abc158e1dc1567161f0a57ed15fc718f7" title="returns a vector of relocations.">relocs</a>();</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::for_each(relocs.begin(), relocs.end(), [&amp;](<a class="code hl_class" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html" title="meta data about a relocation for a symbol">reloc_t</a>&amp; reloc) {</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> if (reloc.offset() &gt; sym.data().size()) {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> spdlog::error(</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="stringliteral">&quot;invalid relocation... writing outside of symbol length... offset: &quot;</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="stringliteral">&quot;{} sym size: {}&quot;</span>,</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> sym.offset(), sym.data().size());</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> assert(reloc.offset() &gt; sym.data().size());</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// try and resolve the symbol by refering to the internal symbol table</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// first... if there is no symbol then refer to the resolver...</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">//</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">auto</span> reloc_sym = m_dcmp-&gt;syms()-&gt;sym_from_hash(reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461" title="returns the hash of the relocation symbol.">hash</a>());</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">auto</span> allocated_at = reloc_sym.has_value()</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> ? reloc_sym.value()-&gt;allocated_at()</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> : m_resolver(reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec" title="returns the name of the relocation symbol.">name</a>());</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> if (!allocated_at) {</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> spdlog::error(<span class="stringliteral">&quot;failed to resolve reloc from symbol: {} to symbol: {}&quot;</span>,</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>(), reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa181755df50bc566b164072b21788fec" title="returns the name of the relocation symbol.">name</a>());</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> assert(allocated_at);</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> }</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">switch</span> (sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a16587cddd37cd45d9ec6cd25c229e8d1" title="returns the type of the symbol.">type</a>()) {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a46b3b57c5d47e2818b2ea10b96b43cd6">decomp::sym_type_t::section</a>: {</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">auto</span> scn_sym =</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> m_dcmp-&gt;syms()-&gt;sym_from_hash(m_dcmp-&gt;scn_hash_tbl()[sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a64d51dabe91687ed40c3942d106fd7dd" title="gets the section header of the section in which the symbol is contained.">scn</a>()]);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(scn_sym.value()-&gt;data().data() +</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>()) = allocated_at;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">decomp::sym_type_t::function</a>: {</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data() +</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>()) = allocated_at;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9">decomp::sym_type_t::instruction</a>: {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keyword">auto</span>&amp; transforms = reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78" title="gets the vector of transformation.">get_transforms</a>();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> std::for_each(</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> transforms.begin(), transforms.end(),</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> [&amp;](std::pair&lt;obf::transform::transform_t*, std::uint32_t&gt;&amp; t) {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> allocated_at = (*t.first)(allocated_at, t.second);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> });</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> *<span class="keyword">reinterpret_cast&lt;</span>std::uintptr_t*<span class="keyword">&gt;</span>(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data() +</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> reloc.<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>()) = allocated_at;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> }</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> });</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> });</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span>}</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a080d88f122d12faf2e328c9bdd10be6e"> 155</a></span><span class="keywordtype">void</span> recomp_t::copy_syms() {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// copy symbols into memory using the copier supplied...</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="comment">//</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> m_dcmp-&gt;syms()-&gt;for_each([&amp;](<a class="code hl_class" 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....">theo::decomp::symbol_t</a>&amp; sym) {</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> m_copier(sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#ae92f3e35fba82a1d16a58ad09b39fb47" title="returns the address where the symbol is allocated.">allocated_at</a>(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().data(), sym.<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#aa3ecf0b480d10bffe68812409c06d61b" title="returns a vector by reference of bytes containing the data of the symbol.">data</a>().size());</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> });</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span>}</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a0da9a904b0057c14190218592aff0f07"> 163</a></span><span class="keywordtype">void</span> recomp_t::allocator(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a96995cb0c5291dce945760c3d8f55241" title="a function which is called to allocate space for a symbol.">allocator_t</a> alloc) {</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> m_allocator = alloc;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>}</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#aa6fecf752d4c5bc211e164d8496724b1"> 167</a></span><span class="keywordtype">void</span> recomp_t::copier(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a604e81450773453df676c3b573651adc" title="a function which is called by recomp_t to copy symbols into memory.">copier_t</a> copy) {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> m_copier = copy;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span>}</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#a1be6d0cdb57565c31b138248c8b2d470"> 171</a></span><span class="keywordtype">void</span> recomp_t::resolver(<a class="code hl_typedef" href="../../da/dbd/namespacetheo_1_1recomp.html#a7364f8c94855a2a871a9d6e1057989f3" title="a function which is called by recomp_t to resolve external symbols">resolver_t</a> resolve) {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> m_resolver = resolve;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span>}</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="../../d5/d05/classtheo_1_1recomp_1_1recomp__t.html#ae0c56f0f8af33b390e4123509523602c"> 175</a></span>std::uintptr_t recomp_t::resolve(<span class="keyword">const</span> std::string&amp;&amp; sym) {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">auto</span> res = m_dcmp-&gt;syms()-&gt;sym_from_hash(<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">decomp::symbol_t::hash</a>(sym));</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">return</span> res.has_value() ? res.value()-&gt;allocated_at() : 0;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>}</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>} <span class="comment">// namespace theo::recomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d2/de4/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>
<a href="#pub-methods">Public Member Functions</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="../../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.
<a href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">symbol_table.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">symbol_table.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../db/d77/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="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html#ad06d4004c0cb454b1ffe7e2ae2ccedf5">More...</a><br /></td></tr>
@ -108,9 +107,11 @@ Public Member Functions</h2></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="../../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. </p>
<div class="textblock"><p >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. </p>
<p class="definition">Definition at line <a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html#l00045">45</a> of file <a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">symbol_table.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad06d4004c0cb454b1ffe7e2ae2ccedf5"></a>
<a id="ad06d4004c0cb454b1ffe7e2ae2ccedf5" name="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">
@ -134,11 +135,13 @@ Public Member Functions</h2></td></tr>
</div><div class="memdoc">
<p>default constructor. does nothing. </p>
<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{}</div>
<p class="definition">Definition at line <a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html#l00050">50</a> of file <a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">symbol_table.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 50</span>{}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab7dfbb8369463ce3d74ad656115cf4d5"></a>
<a id="ab7dfbb8369463ce3d74ad656115cf4d5" name="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">
@ -161,16 +164,18 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; std::for_each(syms.begin(), syms.end(), [&amp;](decomp::symbol_t sym) {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; m_table.insert({sym.hash(), sym});</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;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
<div class="line"><span class="lineno"> 35</span> std::for_each(syms.begin(), syms.end(), [&amp;](decomp::symbol_t sym) {</div>
<div class="line"><span class="lineno"> 36</span> m_table.insert({sym.hash(), sym});</div>
<div class="line"><span class="lineno"> 37</span> });</div>
<div class="line"><span class="lineno"> 38</span>}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a35008ba37814a94209cf979302e13e6d"></a>
<a id="a35008ba37814a94209cf979302e13e6d" name="a35008ba37814a94209cf979302e13e6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35008ba37814a94209cf979302e13e6d">&#9670;&nbsp;</a></span>for_each()</h2>
<div class="memitem">
@ -193,14 +198,18 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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> itr = m_table.begin(); itr != m_table.end(); ++itr)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; fn(itr-&gt;second);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00049">49</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 49</span> {</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> itr = m_table.begin(); itr != m_table.end(); ++itr)</div>
<div class="line"><span class="lineno"> 51</span> fn(itr-&gt;second);</div>
<div class="line"><span class="lineno"> 52</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00040">theo::recomp::recomp_t::allocate()</a>, and <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00056">theo::theo_t::compose()</a>.</p>
</div>
</div>
<a id="af9caf2d4d97b2498aa624c3750a7a601"></a>
<a id="af9caf2d4d97b2498aa624c3750a7a601" name="af9caf2d4d97b2498aa624c3750a7a601"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9caf2d4d97b2498aa624c3750a7a601">&#9670;&nbsp;</a></span>put_symbol()</h2>
<div class="memitem">
@ -223,13 +232,17 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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; m_table.insert({sym.hash(), sym});</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00040">40</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 40</span> {</div>
<div class="line"><span class="lineno"> 41</span> m_table.insert({sym.hash(), sym});</div>
<div class="line"><span class="lineno"> 42</span>}</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00088">theo::decomp::symbol_t::hash()</a>.</p>
</div>
</div>
<a id="ae7c35d9336f67d3175910c028e0b9b3e"></a>
<a id="ae7c35d9336f67d3175910c028e0b9b3e" name="ae7c35d9336f67d3175910c028e0b9b3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7c35d9336f67d3175910c028e0b9b3e">&#9670;&nbsp;</a></span>put_symbols()</h2>
<div class="memitem">
@ -252,14 +265,16 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::for_each(syms.begin(), syms.end(),</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; [&amp;](decomp::symbol_t sym) { put_symbol(sym); });</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00044">44</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> {</div>
<div class="line"><span class="lineno"> 45</span> std::for_each(syms.begin(), syms.end(),</div>
<div class="line"><span class="lineno"> 46</span> [&amp;](decomp::symbol_t sym) { put_symbol(sym); });</div>
<div class="line"><span class="lineno"> 47</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="af57c0495a442ea86af0f9cca4521631e"></a>
<a id="af57c0495a442ea86af0f9cca4521631e" name="af57c0495a442ea86af0f9cca4521631e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af57c0495a442ea86af0f9cca4521631e">&#9670;&nbsp;</a></span>size()</h2>
<div class="memitem">
@ -276,13 +291,15 @@ Public Member Functions</h2></td></tr>
<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 class="fragment"><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> m_table.size();</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00072">72</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 72</span> {</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> m_table.size();</div>
<div class="line"><span class="lineno"> 74</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="abaea9fd899d87b09d60c2b815624e2d2"></a>
<a id="abaea9fd899d87b09d60c2b815624e2d2" name="abaea9fd899d87b09d60c2b815624e2d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaea9fd899d87b09d60c2b815624e2d2">&#9670;&nbsp;</a></span>sym_from_alloc()</h2>
<div class="memitem">
@ -306,20 +323,22 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns an optional pointer to a <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....">theo::decomp::symbol_t</a></dd></dl>
<div class="fragment"><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; <span class="keyword">auto</span> res =</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; std::find_if(m_table.begin(), m_table.end(),</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; [&amp;](std::pair&lt;const std::size_t, decomp::symbol_t&gt; itr) {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; return itr.second.allocated_at() == allocated_at;</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"> 68</span>&#160; <span class="keywordflow">return</span> res != m_table.end() ? &amp;res-&gt;second</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00060">60</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 61</span> {</div>
<div class="line"><span class="lineno"> 62</span> <span class="keyword">auto</span> res =</div>
<div class="line"><span class="lineno"> 63</span> std::find_if(m_table.begin(), m_table.end(),</div>
<div class="line"><span class="lineno"> 64</span> [&amp;](std::pair&lt;const std::size_t, decomp::symbol_t&gt; itr) {</div>
<div class="line"><span class="lineno"> 65</span> return itr.second.allocated_at() == allocated_at;</div>
<div class="line"><span class="lineno"> 66</span> });</div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> res != m_table.end() ? &amp;res-&gt;second</div>
<div class="line"><span class="lineno"> 69</span> : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><span class="lineno"> 70</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a308c0dbcc4d569467e0986b32ef30db5"></a>
<a id="a308c0dbcc4d569467e0986b32ef30db5" name="a308c0dbcc4d569467e0986b32ef30db5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a308c0dbcc4d569467e0986b32ef30db5">&#9670;&nbsp;</a></span>sym_from_hash()</h2>
<div class="memitem">
@ -343,21 +362,25 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns an optional pointer to a <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....">theo::decomp::symbol_t</a></dd></dl>
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> m_table.count(hash) ? &amp;m_table.at(hash)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html#l00054">54</a> of file <a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 55</span> {</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">return</span> m_table.count(hash) ? &amp;m_table.at(hash)</div>
<div class="line"><span class="lineno"> 57</span> : std::optional&lt;decomp::symbol_t*&gt;{};</div>
<div class="line"><span class="lineno"> 58</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d2/d26/theo_8cpp_source.html#l00068">theo::theo_t::resolve()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/recomp/<a class="el" href="../../">symbol_table.hpp</a></li>
<li>src/recomp/<a class="el" href="../../">symbol_table.cpp</a></li>
<li>include/recomp/<a class="el" href="../../d0/d5e/symbol__table_8hpp_source.html">symbol_table.hpp</a></li>
<li>src/recomp/<a class="el" href="../../da/d0c/symbol__table_8cpp_source.html">symbol_table.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,14 +69,12 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../dd/d93/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>
<a href="#pub-static-methods">Static Public Member Functions</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.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../da/d34/ror__op_8hpp_source.html">ror_op.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::transform::ror_op_t:</div>
<div class="dyncontent">
@ -86,38 +85,40 @@ Inheritance diagram for theo::obf::transform::ror_op_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" 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="../../db/d8f/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="../../db/d8f/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="memitem:ae7e2ffd49a75aacea4eed4a416537d1c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../db/d8f/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="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html#ae7e2ffd49a75aacea4eed4a416537d1c">get</a> ()</td></tr>
<tr class="separator:ae7e2ffd49a75aacea4eed4a416537d1c"><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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" 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="../../d7/de2/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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a3876ca1c7904aed54940e1519fc9fdf4">operation_t</a> (<a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> op, xed_iclass_enum_t <a class="el" href="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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="../../d7/de2/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:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">native</a> (const xed_decoded_inst_t *inst, std::uint32_t imm)</td></tr>
<tr class="memdesc:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#a30cad572f62baf0c10fdc7026d7cba44">More...</a><br /></td></tr>
<tr class="separator:a30cad572f62baf0c10fdc7026d7cba44 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="../../d7/de2/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="../../d7/de2/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="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/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="../../d7/de2/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:aed18bfd26da1a198f3b5f81525bcbb66 inherit pub_methods_classtheo_1_1obf_1_1transform_1_1operation__t"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a875984c1ce09aa998fe48cca55270ecc">transform_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">get_transform</a> ()</td></tr>
<tr class="memdesc:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/classtheo_1_1obf_1_1transform_1_1operation__t.html#aed18bfd26da1a198f3b5f81525bcbb66">More...</a><br /></td></tr>
<tr class="separator:aed18bfd26da1a198f3b5f81525bcbb66 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="../../d7/de2/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="../../d7/de2/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"></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="textblock">
<p class="definition">Definition at line <a class="el" href="../../da/d34/ror__op_8hpp_source.html#l00035">35</a> of file <a class="el" href="../../da/d34/ror__op_8hpp_source.html">ror_op.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ae7e2ffd49a75aacea4eed4a416537d1c" name="ae7e2ffd49a75aacea4eed4a416537d1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7e2ffd49a75aacea4eed4a416537d1c">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
@ -126,7 +127,7 @@ Additional Inherited Members</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../db/d8f/classtheo_1_1obf_1_1transform_1_1ror__op__t.html">ror_op_t</a>* theo::obf::transform::ror_op_t::get </td>
<td class="memname">static <a class="el" href="../../db/d8f/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>
@ -138,20 +139,22 @@ Additional Inherited Members</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static</span> ror_op_t obj;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../da/d34/ror__op_8hpp_source.html#l00044">44</a> of file <a class="el" href="../../da/d34/ror__op_8hpp_source.html">ror_op.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> {</div>
<div class="line"><span class="lineno"> 45</span> <span class="keyword">static</span> ror_op_t obj;</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 47</span> }</div>
</div><!-- fragment -->
</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.hpp</a></li>
<li>include/obf/transform/<a class="el" href="../../da/d34/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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: examples/demo/hello_world_pass.hpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,36 +69,35 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">hello_world_pass.hpp File Reference</div> </div>
<div class="headertitle"><div class="title">hello_world_pass.hpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;spdlog/spdlog.h&gt;</code><br />
<code>#include &lt;<a class="el" href="../../">obf/pass.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="../../d8/d5a/pass_8hpp_source.html">obf/pass.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../db/dae/hello__world__pass_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="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</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="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html">theo::obf::hello_world_pass_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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>. <a href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#details">More...</a><br /></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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memitem:d5/da8/namespacetheo_1_1obf"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da8/namespacetheo_1_1obf.html">theo::obf</a></td></tr>
<tr class="memdesc:d5/da8/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>
</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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,135 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: examples/demo/hello_world_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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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_d28a4824dc47e487b107a5db32ef43c4.html">examples</a></li><li class="navelem"><a class="el" href="../../dir_e05ad14af1d92d65b2ce06383c709496.html">demo</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">hello_world_pass.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../db/dae/hello__world__pass_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;spdlog/spdlog.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><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 id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da8/namespacetheo_1_1obf.html" title="this is the main namespace for obfuscation related things.">theo::obf</a> {<span class="comment"></span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/// &lt;summary&gt;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/// hello world pass example of how to inherit pass_t.</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">/// &lt;/summary&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html"> 39</a></span><span class="comment"></span><span class="keyword">class </span><a class="code hl_class" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html" title="hello world pass example of how to inherit pass_t.">hello_world_pass_t</a> : <span class="keyword">public</span> <a class="code hl_class" 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> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <a class="code hl_class" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html" title="hello world pass example of how to inherit pass_t.">hello_world_pass_t</a>() : <a class="code hl_function" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611" title="the explicit constructor of the pass_t base class.">pass_t</a>(<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9a7d51179cde510c8a4070c51733aa9313">decomp::sym_type_t::all</a>) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> spdlog::info(<span class="stringliteral">&quot;created hello world pass...&quot;</span>);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> }</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#aa556436f48335fe485d96ebc44ac2293"> 45</a></span> <span class="keyword">static</span> <a class="code hl_class" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html" title="hello world pass example of how to inherit pass_t.">hello_world_pass_t</a>* <a class="code hl_function" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#aa556436f48335fe485d96ebc44ac2293">get</a>() {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">static</span> <a class="code hl_class" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html" title="hello world pass example of how to inherit pass_t.">hello_world_pass_t</a> obj;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> }</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df"> 50</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/d6a/classtheo_1_1obf_1_1hello__world__pass__t.html#a0d2d95f93ac083e157b2f12a8a56f1df" title="virtual method which must be implimented by the pass that inherits this class.">run</a>(<a class="code hl_class" 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>* sym) {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> spdlog::info(<span class="stringliteral">&quot;[hello_world_pass_t] symbol name: {}, symbol hash: {}&quot;</span>,</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a7c6dee036291ded334aa10d89293fc2a" title="gets the name of the symbol.">name</a>(), sym-&gt;<a class="code hl_function" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html#a8695d75670cc4d61d275464e9109ff06" title="gets the hash of the symbol name.">hash</a>());</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> }</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span>};</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>} <span class="comment">// namespace theo::obf</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,17 +70,15 @@ $(function() {
<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="../../d3/dee/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>
<a href="#pub-static-methods">Static Public Member Functions</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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">reloc_transform_pass.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a>&quot;</code></p>
<div class="dynheader">
Inheritance diagram for theo::obf::reloc_transform_pass_t:</div>
<div class="dyncontent">
@ -90,7 +89,7 @@ Inheritance diagram for theo::obf::reloc_transform_pass_t:</div>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">run</a> (<a class="el" href="../../d9/dd5/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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a24e122f6be18a88ea1809252ab3ec0b9">More...</a><br /></td></tr>
@ -99,24 +98,29 @@ Public Member Functions</h2></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="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#abd4ab22cc2822b968267be7f8397d611">pass_t</a> (<a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a> <a class="el" href="../../d4/dad/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="../../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> base class. <a href="../../d4/dad/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:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">run</a> (<a class="el" href="../../d9/dd5/classtheo_1_1decomp_1_1symbol__t.html">decomp::symbol_t</a> *sym)=0</td></tr>
<tr class="memdesc:acfadc013ff0754d66a18baffdb1a61d1 inherit pub_methods_classtheo_1_1obf_1_1pass__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual method which must be implimented by the pass that inherits this class. <a href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">More...</a><br /></td></tr>
<tr class="separator:acfadc013ff0754d66a18baffdb1a61d1 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="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9">decomp::sym_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dad/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="../../d4/dad/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>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a89aa46da5f721057cd8cf5189207d464"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../dc/d39/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="../../dc/d39/classtheo_1_1obf_1_1reloc__transform__pass__t.html#a89aa46da5f721057cd8cf5189207d464">get</a> ()</td></tr>
<tr class="separator:a89aa46da5f721057cd8cf5189207d464"><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
<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></div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a89aa46da5f721057cd8cf5189207d464"></a>
</pre>
<p class="definition">Definition at line <a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html#l00056">56</a> of file <a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a89aa46da5f721057cd8cf5189207d464" name="a89aa46da5f721057cd8cf5189207d464"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89aa46da5f721057cd8cf5189207d464">&#9670;&nbsp;</a></span>get()</h2>
<div class="memitem">
@ -138,14 +142,18 @@ ror rax, 0x5353
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">static</span> reloc_transform_pass_t obj;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div>
<p class="definition">Definition at line <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html#l00034">34</a> of file <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html">reloc_transform_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> {</div>
<div class="line"><span class="lineno"> 35</span> <span class="keyword">static</span> reloc_transform_pass_t obj;</div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">return</span> &amp;obj;</div>
<div class="line"><span class="lineno"> 37</span>}</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../df/d0a/main_8cpp_source.html#l00057">main()</a>.</p>
</div>
</div>
<a id="a24e122f6be18a88ea1809252ab3ec0b9"></a>
<a id="a24e122f6be18a88ea1809252ab3ec0b9" name="a24e122f6be18a88ea1809252ab3ec0b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24e122f6be18a88ea1809252ab3ec0b9">&#9670;&nbsp;</a></span>run()</h2>
<div class="memitem">
@ -178,43 +186,46 @@ ror rax, 0x5353
</dl>
<p>Implements <a class="el" href="../../d4/dad/classtheo_1_1obf_1_1pass__t.html#acfadc013ff0754d66a18baffdb1a61d1">theo::obf::pass_t</a>.</p>
<div class="fragment"><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; std::optional&lt;recomp::reloc_t*&gt; reloc;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (!(reloc = has_legit_reloc(sym)).has_value())</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span>;</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; spdlog::info(<span class="stringliteral">&quot;adding transformations to relocation in symbol: {}&quot;</span>,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; sym-&gt;name());</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; xed_error_enum_t err;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; xed_decoded_inst_t inst;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</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; <span class="keywordflow">if</span> ((err = xed_decode(&amp;inst, sym-&gt;data().data(), sym-&gt;data().size())) !=</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; XED_ERROR_NONE) {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; spdlog::error(<span class="stringliteral">&quot;failed to decode instruction, reason: {} in symbol: {}&quot;</span>,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; xed_error_enum_t2str(err), sym-&gt;name());</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; assert(err == XED_ERROR_NONE);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">auto</span> transforms_bytes = <a class="code" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">transform::generate</a>(&amp;inst, reloc.value(), 3, 6);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; sym-&gt;data().insert(sym-&gt;data().end(), transforms_bytes.begin(),</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; transforms_bytes.end());</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;};</div>
<div class="ttc" id="anamespacetheo_1_1obf_1_1transform_html_a416c6c93ce55a4ab9f70592951d15704"><div class="ttname"><a href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#a416c6c93ce55a4ab9f70592951d15704">theo::obf::transform::generate</a></div><div class="ttdeci">std::vector&lt; std::uint8_t &gt; generate(xed_decoded_inst_t *inst, recomp::reloc_t *reloc, std::uint8_t low, std::uint8_t high)</div><div class="ttdoc">generate a sequence of transformations given an instruction that has a relocation in it.</div><div class="ttdef"><b>Definition:</b> gen.hpp:45</div></div>
<p class="definition">Definition at line <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html#l00039">39</a> of file <a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html">reloc_transform_pass.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 39</span> {</div>
<div class="line"><span class="lineno"> 40</span> std::optional&lt;recomp::reloc_t*&gt; reloc;</div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">if</span> (!(reloc = has_legit_reloc(sym)).has_value())</div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">return</span>;</div>
<div class="line"><span class="lineno"> 43</span> </div>
<div class="line"><span class="lineno"> 44</span> spdlog::info(<span class="stringliteral">&quot;adding transformations to relocation in symbol: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 45</span> sym-&gt;name());</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> xed_error_enum_t err;</div>
<div class="line"><span class="lineno"> 48</span> xed_decoded_inst_t inst;</div>
<div class="line"><span class="lineno"> 49</span> xed_state_t istate{XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b};</div>
<div class="line"><span class="lineno"> 50</span> xed_decoded_inst_zero_set_mode(&amp;inst, &amp;istate);</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">if</span> ((err = xed_decode(&amp;inst, sym-&gt;data().data(), sym-&gt;data().size())) !=</div>
<div class="line"><span class="lineno"> 53</span> XED_ERROR_NONE) {</div>
<div class="line"><span class="lineno"> 54</span> spdlog::error(<span class="stringliteral">&quot;failed to decode instruction, reason: {} in symbol: {}&quot;</span>,</div>
<div class="line"><span class="lineno"> 55</span> xed_error_enum_t2str(err), sym-&gt;name());</div>
<div class="line"><span class="lineno"> 56</span> </div>
<div class="line"><span class="lineno"> 57</span> assert(err == XED_ERROR_NONE);</div>
<div class="line"><span class="lineno"> 58</span> }</div>
<div class="line"><span class="lineno"> 59</span> </div>
<div class="line"><span class="lineno"> 60</span> <span class="keyword">auto</span> transforms_bytes = <a class="code hl_function" href="../../d8/d82/namespacetheo_1_1obf_1_1transform.html#abb618f5ff8d88963dd77e682456ef982" title="generate a sequence of transformations given an instruction that has a relocation in it.">transform::generate</a>(&amp;inst, reloc.value(), 3, 6);</div>
<div class="line"><span class="lineno"> 61</span> sym-&gt;data().insert(sym-&gt;data().end(), transforms_bytes.begin(),</div>
<div class="line"><span class="lineno"> 62</span> transforms_bytes.end());</div>
<div class="line"><span class="lineno"> 63</span>};</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00076">theo::decomp::symbol_t::data()</a>, <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">theo::obf::transform::generate()</a>, and <a class="el" href="../../d8/d67/symbol_8cpp_source.html#l00052">theo::decomp::symbol_t::name()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/obf/passes/<a class="el" href="../../">reloc_transform_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../">reloc_transform_pass.cpp</a></li>
<li>include/obf/passes/<a class="el" href="../../de/d64/reloc__transform__pass_8hpp_source.html">reloc_transform_pass.hpp</a></li>
<li>src/obf/passes/<a class="el" href="../../d6/da4/reloc__transform__pass_8cpp_source.html">reloc_transform_pass.cpp</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
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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/decomp.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,27 +70,26 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">decomp.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">decomp.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="../../">decomp/decomp.hpp</a>&gt;</code><br />
<div class="textblock"><code>#include &lt;<a class="el" href="../../d2/d96/decomp_8hpp_source.html">decomp/decomp.hpp</a>&gt;</code><br />
</div>
<p><a href="">Go to the source code of this file.</a></p>
<p><a href="../../dc/d83/decomp_8cpp_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="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memitem:da/de6/namespacetheo"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/de6/namespacetheo.html">theo</a></td></tr>
<tr class="memdesc:da/de6/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:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memitem:d9/dbd/namespacetheo_1_1decomp"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbd/namespacetheo_1_1decomp.html">theo::decomp</a></td></tr>
<tr class="memdesc:d9/dbd/namespacetheo_1_1decomp"><td class="mdescLeft">&#160;</td><td class="mdescRight">the namespace that contains all of the decomposition related code. <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
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.3
</small></address>
</body>
</html>

@ -0,0 +1,380 @@
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Theodosius: src/decomp/decomp.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">decomp.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../dc/d83/decomp_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">// Copyright (c) 2022, _xeroxz</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">// All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">//</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">// Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">// modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">//</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">// 1. Redistributions of source code must retain the above copyright notice,</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">// this list of conditions and the following disclaimer.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">// 2. Redistributions in binary form must reproduce the above copyright notice,</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">// this list of conditions and the following disclaimer in the documentation</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">// and/or other materials provided with the distribution.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">//</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">// 3. Neither the name of the copyright holder nor the names of its</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">// contributors may be used to endorse or promote products derived from</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">// this software without specific prior written permission.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">//</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment">// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment">// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><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 id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment">// POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment">//</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><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 id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d9/dbd/namespacetheo_1_1decomp.html" title="the namespace that contains all of the decomposition related code.">theo::decomp</a> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68"> 34</a></span><a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a35cfac16bd918d576b29e04388690d68" title="the explicit constructor for decomp_t">decomp_t::decomp_t</a>(std::vector&lt;std::uint8_t&gt;&amp; lib, <a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a>* syms)</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> : m_lib(lib), m_syms(syms) {}</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469"> 37</a></span>std::optional&lt;recomp::symbol_table_t*&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#ae23353a4293aa30969b6d3fa37359469" title="decomposes (extracts) the symbols used. this function determines all used symbols given the entry poi...">decomp_t::decompose</a>(</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> std::string&amp; entry_sym) {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// extract obj files from the archive file...</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> ar::view&lt;false&gt; <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>(m_lib.data(), m_lib.size());</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> std::for_each(</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>.begin(), <a class="code hl_function" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2" title="gets a vector of bytes consisting of the lib file.">lib</a>.end(),</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> [&amp;](std::pair&lt;std::string_view, ar::entry_t&amp;&gt; itr) {</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// if the entry isnt the symbol table or the string table</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// then we know its an obj file...</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> if (!itr.second.is_symbol_table() &amp;&amp; !itr.second.is_string_table()) {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> spdlog::info(<span class="stringliteral">&quot;extracted obj from archive: {}&quot;</span>, itr.first);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> std::vector&lt;std::uint8_t&gt; data(itr.second.begin(), itr.second.end());</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> m_objs.push_back(data);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> });</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> std::for_each(</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> m_objs.begin(), m_objs.end(), [&amp;](std::vector&lt;std::uint8_t&gt;&amp; img_data) {</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> auto img = reinterpret_cast&lt;coff::image_t*&gt;(img_data.data());</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> for (auto idx = 0u; idx &lt; img-&gt;file_header.num_symbols; ++idx) {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> auto sym = img-&gt;get_symbol(idx);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> if (sym-&gt;section_index - 1 &gt; img-&gt;file_header.num_sections)</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> continue;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> auto sym_name = symbol_t::name(img, sym);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> if (sym_name.length()) {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> auto sym_hash = symbol_t::hash(sym_name.data());</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> auto sym_size =</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> sym-&gt;has_section()</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> ? next_sym(img, img-&gt;get_section(sym-&gt;section_index - 1),</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> sym)</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> : 0u;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> m_lookup_tbl[sym_hash].emplace_back(img, sym, sym_size);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> });</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// extract used symbols from objs and create a nice little set of them so that</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// we can easily decompose them... no need deal with every single symbol...</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> spdlog::info(<span class="stringliteral">&quot;extracted {} symbols being used...&quot;</span>,</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> ext_used_syms(entry_sym.data()));</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// generate symbols, populate section hash table, for each object file</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// extracted from the archive file...</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">//</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> std::for_each(m_used_syms.begin(), m_used_syms.end(), [&amp;](<a class="code hl_typedef" href="../../d9/dbd/namespacetheo_1_1decomp.html#abbf09e1f7eb9e42057ff9c9e8be41266" title="meta symbol data. consists of the coff image which contains the coff symbol, the coff symbol itself,...">sym_data_t</a> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>) {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> auto [img, sym, size] = data;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// populate section hash table with sections for the img of this</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// symbol... only populate the hash table if its not been populated for</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// this obj before...</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">//</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> if (m_processed_objs.emplace(img).second) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> for (auto idx = 0u; idx &lt; img-&gt;file_header.num_sections; ++idx) {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> auto scn = img-&gt;get_section(idx);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> auto scn_sym_name =</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> .append(std::to_string(idx))</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> .append(std::to_string(img-&gt;file_header.timedate_stamp));</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// hash the name of the section + the index + the timestamp of the</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// obj file it is in...</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">//</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> m_scn_hash_tbl.insert({scn, decomp::symbol_t::hash(scn_sym_name)});</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// if the symbol is a function then we are going to decompose it...</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// data symbols are handled after this...</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">//</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> if (sym-&gt;has_section()) {</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> if (sym-&gt;derived_type == coff::derived_type_id::function) {</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> auto dcmp_type =</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> scn-&gt;name.to_string(img-&gt;get_strings()) == INSTR_SPLIT_SECTION_NAME</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> ? decomp::sym_type_t::instruction</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> : decomp::sym_type_t::function;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> auto fn_size = next_sym(img, scn, sym);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> auto fn_bgn = scn-&gt;ptr_raw_data + reinterpret_cast&lt;std::uint8_t*&gt;(img) +</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> sym-&gt;value;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> std::vector&lt;std::uint8_t&gt; fn(fn_bgn, fn_bgn + fn_size);</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> decomp::routine_t rtn(sym, img, scn, fn, dcmp_type);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> auto syms = rtn.decompose();</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> m_syms-&gt;put_symbols(syms);</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> } <span class="keywordflow">else</span> if (sym-&gt;storage_class == coff::storage_class_id::public_symbol ||</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> sym-&gt;storage_class == coff::storage_class_id::private_symbol) {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> auto scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> auto scn_sym = m_syms-&gt;sym_from_hash(m_scn_hash_tbl[scn]);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// if the section doesnt have a symbol then make one and put it into</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// the symbol table...</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="comment">//</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> if (!scn_sym.has_value()) {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> auto scn_sym_name =</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> std::string(scn-&gt;name.to_string(img-&gt;get_strings()))</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> .append(<span class="stringliteral">&quot;#&quot;</span>)</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> .append(std::to_string(sym-&gt;section_index - 1))</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> .append(<span class="stringliteral">&quot;!&quot;</span>)</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> .append(std::to_string(img-&gt;file_header.timedate_stamp));</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> std::vector&lt;std::uint8_t&gt; scn_data(scn-&gt;size_raw_data);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> if (scn-&gt;characteristics.cnt_uninit_data) {</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> scn_data.insert(scn_data.begin(), scn-&gt;size_raw_data, 0);</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> } else {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> scn_data.insert(</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> scn_data.begin(),</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data,</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> reinterpret_cast&lt;std::uint8_t*&gt;(img) + scn-&gt;ptr_raw_data +</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> scn-&gt;size_raw_data);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> }</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> std::vector&lt;recomp::reloc_t&gt; relocs;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> auto scn_relocs = reinterpret_cast&lt;coff::reloc_t*&gt;(</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> scn-&gt;ptr_relocs + reinterpret_cast&lt;std::uint8_t*&gt;(img));</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> for (auto idx = 0u; idx &lt; scn-&gt;num_relocs; ++idx) {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> auto scn_reloc = &amp;scn_relocs[idx];</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> auto sym_reloc = img-&gt;get_symbol(scn_relocs[idx].symbol_index);</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> auto sym_name = symbol_t::name(img, sym_reloc);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> auto sym_hash = decomp::symbol_t::hash(sym_name.data());</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> relocs.push_back(</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> recomp::reloc_t(scn_reloc-&gt;virtual_address - sym-&gt;value,</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> sym_hash, sym_name.data()));</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> }</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> decomp::symbol_t new_scn_sym(img, scn_sym_name, 0, scn_data, scn, {},</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> relocs, sym_type_t::section);</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> m_syms-&gt;put_symbol(new_scn_sym);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> }</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// create a symbol for the data...</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="comment">//</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_class" 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> new_sym(img, symbol_t::name(img, sym).<a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>(),</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> sym-&gt;value, {}, scn, sym, {},</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> m_syms-&gt;put_symbol(new_sym);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> }</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sym-&gt;storage_class ==</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> coff::storage_class_id::</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> external_definition) { <span class="comment">// else if the symbol has no</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// section... these symbols</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// require the linker to allocate</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// space for them...</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> std::vector&lt;std::uint8_t&gt; data(sym-&gt;value, 0);</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> decomp::symbol_t bss_sym(img, symbol_t::name(img, sym).data(), {}, <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">data</a>,</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> {}, sym, {}, <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112">sym_type_t::data</a>);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> m_syms-&gt;put_symbol(bss_sym);</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> }</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> });</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="comment">// return the extract symbols to the caller...</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="comment">//</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span>}</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>std::uint32_t decomp_t::next_sym(coff::image_t* img,</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> coff::section_header_t* hdr,</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> coff::symbol_t* s) {</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// loop over all symbols in this object...</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// find the next symbol inside of the same section...</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// if there is no next symbol then we use the end of the section...</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> std::uint32_t res = hdr-&gt;size_raw_data;</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> idx = 0u; idx &lt; img-&gt;file_header.num_symbols; ++idx) {</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">auto</span> q = img-&gt;get_symbol(idx);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">if</span> (q-&gt;derived_type == <a class="code hl_enumvalue" href="../../d9/dbd/namespacetheo_1_1decomp.html#af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a">coff::derived_type_id::function</a> &amp;&amp;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> q-&gt;section_index == s-&gt;section_index &amp;&amp; q != s)</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">if</span> (q-&gt;value &gt; s-&gt;value &amp;&amp; q-&gt;value &lt; res)</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> res = q-&gt;value;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span>}</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span>std::uint32_t decomp_t::ext_used_syms(<span class="keyword">const</span> std::string&amp;&amp; entry_sym) {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> std::optional&lt;sym_data_t&gt; entry = get_symbol(entry_sym.data());</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">if</span> (!entry.has_value())</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordflow">return</span> 0u;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> std::set&lt;coff::symbol_t*&gt; cache;</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">const</span> <span class="keyword">auto</span> finding_syms = [&amp;]() -&gt; <span class="keywordtype">bool</span> {</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> itr = m_used_syms.begin(); itr != m_used_syms.end(); ++itr) {</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">auto</span> [img, sym, size] = *itr;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">if</span> (sym-&gt;has_section() &amp;&amp; !cache.count(sym) &amp;&amp; size) {</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keyword">auto</span> scn = img-&gt;get_section(sym-&gt;section_index - 1);</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">auto</span> num_relocs = scn-&gt;num_relocs;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keyword">auto</span> relocs = <span class="keyword">reinterpret_cast&lt;</span>coff::reloc_t*<span class="keyword">&gt;</span>(</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> scn-&gt;ptr_relocs + <span class="keyword">reinterpret_cast&lt;</span>std::uint8_t*<span class="keyword">&gt;</span>(img));</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> idx = 0u; idx &lt; num_relocs; ++idx) {</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">auto</span> reloc = &amp;relocs[idx];</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// if the reloc is inside of the current symbol...</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">if</span> (reloc-&gt;virtual_address &gt;= sym-&gt;value &amp;&amp;</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> reloc-&gt;virtual_address &lt; sym-&gt;value + size) {</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">auto</span> reloc_sym = img-&gt;get_symbol(reloc-&gt;symbol_index);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">auto</span> sym_name = symbol_t::name(img, reloc_sym);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> entry = get_symbol(sym_name);</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">if</span> (m_used_syms.emplace(entry.value()).second)</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> }</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> }</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> cache.emplace(sym);</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> }</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> };</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> m_used_syms.emplace(entry.value());</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordflow">for</span> (m_used_syms.emplace(entry.value()); finding_syms();)</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> ;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">return</span> m_used_syms.size();</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>}</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span>std::optional&lt;sym_data_t&gt; decomp_t::get_symbol(<span class="keyword">const</span> std::string_view&amp; name) {</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> coff::image_t* img = {};</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> coff::symbol_t* sym = {};</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> std::uint32_t size = {};</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">auto</span>&amp; syms = m_lookup_tbl[symbol_t::hash(name.data())];</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> idx = 0u; idx &lt; syms.size(); ++idx) {</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> img = std::get&lt;0&gt;(syms[idx]);</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> sym = std::get&lt;1&gt;(syms[idx]);</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> size = std::get&lt;2&gt;(syms[idx]);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">if</span> (sym-&gt;has_section())</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">return</span> {{img, sym, size}};</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> }</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">if</span> (img &amp;&amp; sym)</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">return</span> {{img, sym, size}};</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span>}</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> </div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a79c965ec0a996a936faae7f54b0e055e"> 281</a></span>std::vector&lt;routine_t&gt; decomp_t::rtns() {</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">return</span> m_rtns;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span>}</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#aa728bde8ec1c5c28ec09f86adf427ae2"> 285</a></span>std::vector&lt;std::uint8_t&gt; decomp_t::lib() {</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">return</span> m_lib;</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span>}</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a81ae70b313a9ef24ea5d8f404699baef"> 289</a></span>std::vector&lt;std::vector&lt;std::uint8_t&gt;&gt; decomp_t::objs() {</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">return</span> m_objs;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span>}</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a8630f2ee0f4fb9516f5b20014e4c6120"> 293</a></span><a class="code hl_class" href="../../db/d77/classtheo_1_1recomp_1_1symbol__table__t.html" title="this class is a high level wrapper for a hashmap that contains decomp::symbol_t values....">recomp::symbol_table_t</a>* decomp_t::syms() {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordflow">return</span> m_syms;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span>}</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> </div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="../../d6/d0e/classtheo_1_1decomp_1_1decomp__t.html#a860dddc3a5d12231b685dbaa12a0db06"> 297</a></span>std::map&lt;coff::section_header_t*, std::size_t&gt;&amp; decomp_t::scn_hash_tbl() {</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">return</span> m_scn_hash_tbl;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span>}</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span>} <span class="comment">// namespace theo::decomp</span></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.3
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<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 http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<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"/>
@ -19,33 +19,34 @@
<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>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../icon.png"/></td>
<td id="projectalign">
<div id="projectname">Theodosius<span id="projectnumber">&#160;v3.0</span>
</div>
<div id="projectbrief">Jit linker, mapper, obfuscator, and mutator</div>
<div id="projectbrief">Jit linker, symbol mapper, and obfuscator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.3 -->
<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 magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -68,19 +69,17 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d3/dd6/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>
<a href="#pub-methods">Public Member Functions</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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../">reloc.hpp</a>&gt;</code></p>
<p><code>#include &quot;<a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>&quot;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" 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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">reloc_t</a> (std::uint32_t <a class="el" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>, std::size_t <a class="el" href="../../dd/d37/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a7cb1cf1c58a6f3cdf7ae326d65948548">More...</a><br /></td></tr>
@ -100,14 +99,16 @@ Public Member Functions</h2></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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#ab5214a9ff9135672e25f40406c37fb10">add_transform</a> (std::pair&lt; <a class="el" href="../../d8/d82/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="../../dd/d37/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="../../d8/d82/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="../../dd/d37/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="../../dd/d37/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>
<tr class="memitem:af8abfa7a4f1052308a233629faf39a78"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::pair&lt; <a class="el" href="../../d8/d82/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="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78">get_transforms</a> ()</td></tr>
<tr class="memdesc:af8abfa7a4f1052308a233629faf39a78"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the vector of transformation. <a href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#af8abfa7a4f1052308a233629faf39a78">More...</a><br /></td></tr>
<tr class="separator:af8abfa7a4f1052308a233629faf39a78"><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>
<div class="textblock"><p >meta data about a relocation for a symbol </p>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00041">41</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7cb1cf1c58a6f3cdf7ae326d65948548"></a>
<a id="a7cb1cf1c58a6f3cdf7ae326d65948548" name="a7cb1cf1c58a6f3cdf7ae326d65948548"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cb1cf1c58a6f3cdf7ae326d65948548">&#9670;&nbsp;</a></span>reloc_t()</h2>
<div class="memitem">
@ -156,14 +157,14 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><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="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> reloc.hpp:75</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> reloc.hpp:61</div></div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00052">52</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 55</span> : m_offset(<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>), m_hash(<a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#aa340b2c2d5d1ac7f96a1dbee39f25461" title="returns the hash of the relocation symbol.">hash</a>), m_sym_name(sym_name) {}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ab5214a9ff9135672e25f40406c37fb10"></a>
<a id="ab5214a9ff9135672e25f40406c37fb10" name="ab5214a9ff9135672e25f40406c37fb10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5214a9ff9135672e25f40406c37fb10">&#9670;&nbsp;</a></span>add_transform()</h2>
<div class="memitem">
@ -194,14 +195,18 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</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>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00091">91</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 92</span> {</div>
<div class="line"><span class="lineno"> 93</span> m_transforms.push_back(entry);</div>
<div class="line"><span class="lineno"> 94</span> }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">theo::obf::transform::generate()</a>.</p>
</div>
</div>
<a id="ad49901bf8b6b0e3963e64d17d4b51aec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad49901bf8b6b0e3963e64d17d4b51aec">&#9670;&nbsp;</a></span>get_transforms()</h2>
<a id="af8abfa7a4f1052308a233629faf39a78" name="af8abfa7a4f1052308a233629faf39a78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8abfa7a4f1052308a233629faf39a78">&#9670;&nbsp;</a></span>get_transforms()</h2>
<div class="memitem">
<div class="memproto">
@ -210,7 +215,7 @@ Public Member Functions</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::pair&lt;<a class="el" href="../../d8/d82/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 class="memname">std::vector&lt; std::pair&lt; <a class="el" href="../../d8/d82/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>
@ -225,13 +230,17 @@ Public Member Functions</h2></td></tr>
<p>gets the vector of transformation. </p>
<dl class="section return"><dt>Returns</dt><dd>returns the vector of transformations.</dd></dl>
<div class="fragment"><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="keywordflow">return</span> m_transforms;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00101">101</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 101</span> {</div>
<div class="line"><span class="lineno"> 102</span> <span class="keywordflow">return</span> m_transforms;</div>
<div class="line"><span class="lineno"> 103</span> }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../d5/d18/gen_8hpp_source.html#l00045">theo::obf::transform::generate()</a>, and <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<a id="aa340b2c2d5d1ac7f96a1dbee39f25461"></a>
<a id="aa340b2c2d5d1ac7f96a1dbee39f25461" name="aa340b2c2d5d1ac7f96a1dbee39f25461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa340b2c2d5d1ac7f96a1dbee39f25461">&#9670;&nbsp;</a></span>hash()</h2>
<div class="memitem">
@ -256,11 +265,15 @@ Public Member Functions</h2></td></tr>
<p>returns the hash of the relocation symbol. </p>
<dl class="section return"><dt>Returns</dt><dd>hash of the relocation symbol</dd></dl>
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{ <span class="keywordflow">return</span> m_hash; }</div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00061">61</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 61</span>{ <span class="keywordflow">return</span> m_hash; }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<a id="aa181755df50bc566b164072b21788fec"></a>
<a id="aa181755df50bc566b164072b21788fec" name="aa181755df50bc566b164072b21788fec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa181755df50bc566b164072b21788fec">&#9670;&nbsp;</a></span>name()</h2>
<div class="memitem">
@ -285,11 +298,15 @@ Public Member Functions</h2></td></tr>
<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>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{ <span class="keywordflow">return</span> m_sym_name; }</div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00067">67</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 67</span>{ <span class="keywordflow">return</span> m_sym_name; }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<a id="a537836fcea3326e4269375a1486f0323"></a>
<a id="a537836fcea3326e4269375a1486f0323" name="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">
@ -314,11 +331,15 @@ Public Member Functions</h2></td></tr>
<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>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{ <span class="keywordflow">return</span> m_offset; }</div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00075">75</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 75</span>{ <span class="keywordflow">return</span> m_offset; }</div>
</div><!-- fragment -->
<p class="reference">Referenced by <a class="el" href="../../db/d55/recomp_8cpp_source.html#l00092">theo::recomp::recomp_t::resolve()</a>.</p>
</div>
</div>
<a id="a99e65270ace1ff4f080bd4040c8a43dd"></a>
<a id="a99e65270ace1ff4f080bd4040c8a43dd" name="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">
@ -349,17 +370,23 @@ Public Member Functions</h2></td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;{ m_offset = <a class="code" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323">offset</a>; }</div>
<p class="definition">Definition at line <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00082">82</a> of file <a class="el" href="../../d1/d82/reloc_8hpp_source.html">reloc.hpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 82</span>{ m_offset = <a class="code hl_function" href="../../dd/d37/classtheo_1_1recomp_1_1reloc__t.html#a537836fcea3326e4269375a1486f0323" title="returns the offset into the symbol to which the relocation will be applied. the offset is in bytes....">offset</a>; }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00082">offset()</a>.</p>
<p class="reference">Referenced by <a class="el" href="../../d1/d82/reloc_8hpp_source.html#l00082">offset()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/recomp/<a class="el" href="../../">reloc.hpp</a></li>
<li>include/recomp/<a class="el" href="../../d1/d82/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
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.3
</small></address>
</body>
</html>

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

Loading…
Cancel
Save