docs: update doxygen site from 2645951
+5
@@ -0,0 +1,5 @@
|
||||
# Doxygen Documentation
|
||||
|
||||
The generated API reference is published in this wiki under the doxygen directory.
|
||||
|
||||
- Open the HTML entry point: [doxygen/index.html](doxygen/index.html)
|
||||
@@ -0,0 +1,106 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: README.md File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('README_8md.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">README.md File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="README_8md.html">README.md</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Class List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('annotated.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Class List</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="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceobfuscator.html" target="_self">obfuscator</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html" target="_self">AdvancedObfuscator</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers.html" target="_self">transformers</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1attribute__transformer.html" target="_self">attribute_transformer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html" target="_self">AttributeTransformer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_1_" class="arrow" onclick="toggleFolder('1_1_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1class__analyzer.html" target="_self">class_analyzer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html" target="_self">ClassAnalyzer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_1_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html" target="_self">ClassMethodMap</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_2_" class="arrow" onclick="toggleFolder('1_2_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1class__mapper.html" target="_self">class_mapper</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_2_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html" target="_self">ClassMapAnalyzer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_2_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html" target="_self">ClassMapping</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_2_2_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html" target="_self">ClassTransformer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_3_" class="arrow" onclick="toggleFolder('1_3_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1control__flow.html" target="_self">control_flow</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_3_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html" target="_self">ControlFlowFlattener</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_4_" class="arrow" onclick="toggleFolder('1_4_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1rename.html" target="_self">rename</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_4_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html" target="_self">RenameTransformer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_5_" class="arrow" onclick="toggleFolder('1_5_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetransformers_1_1symbol__tree.html" target="_self">symbol_tree</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html" target="_self">ClassScope</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html" target="_self">ModuleScope</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_2_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html" target="_self">Scope</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html" target="_self">Symbol</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_4_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html" target="_self">SymbolTree</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html" target="_self">SymbolTreeBuilder</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_5_6_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html" target="_self">SymbolType</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceutils.html" target="_self">utils</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_2_0_" class="arrow" onclick="toggleFolder('2_0_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceutils_1_1encryption.html" target="_self">encryption</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html" target="_self">StringEncryptor</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_2_1_" class="arrow" onclick="toggleFolder('2_1_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceutils_1_1junk__gen.html" target="_self">junk_gen</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html" target="_self">JunkGenerator</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_2_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_2_2_" class="arrow" onclick="toggleFolder('2_2_')">▼</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceutils_1_1name__gen.html" target="_self">name_gen</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_2_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html" target="_self">NameGenerator</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,46 @@
|
||||
var annotated_dup =
|
||||
[
|
||||
[ "obfuscator", "namespaceobfuscator.html", [
|
||||
[ "AdvancedObfuscator", "classobfuscator_1_1AdvancedObfuscator.html", "classobfuscator_1_1AdvancedObfuscator" ]
|
||||
] ],
|
||||
[ "transformers", "namespacetransformers.html", [
|
||||
[ "attribute_transformer", "namespacetransformers_1_1attribute__transformer.html", [
|
||||
[ "AttributeTransformer", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer" ]
|
||||
] ],
|
||||
[ "class_analyzer", "namespacetransformers_1_1class__analyzer.html", [
|
||||
[ "ClassAnalyzer", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer" ],
|
||||
[ "ClassMethodMap", "classtransformers_1_1class__analyzer_1_1ClassMethodMap.html", "classtransformers_1_1class__analyzer_1_1ClassMethodMap" ]
|
||||
] ],
|
||||
[ "class_mapper", "namespacetransformers_1_1class__mapper.html", [
|
||||
[ "ClassMapAnalyzer", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer" ],
|
||||
[ "ClassMapping", "classtransformers_1_1class__mapper_1_1ClassMapping.html", "classtransformers_1_1class__mapper_1_1ClassMapping" ],
|
||||
[ "ClassTransformer", "classtransformers_1_1class__mapper_1_1ClassTransformer.html", "classtransformers_1_1class__mapper_1_1ClassTransformer" ]
|
||||
] ],
|
||||
[ "control_flow", "namespacetransformers_1_1control__flow.html", [
|
||||
[ "ControlFlowFlattener", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html", "classtransformers_1_1control__flow_1_1ControlFlowFlattener" ]
|
||||
] ],
|
||||
[ "rename", "namespacetransformers_1_1rename.html", [
|
||||
[ "RenameTransformer", "classtransformers_1_1rename_1_1RenameTransformer.html", "classtransformers_1_1rename_1_1RenameTransformer" ]
|
||||
] ],
|
||||
[ "symbol_tree", "namespacetransformers_1_1symbol__tree.html", [
|
||||
[ "ClassScope", "classtransformers_1_1symbol__tree_1_1ClassScope.html", "classtransformers_1_1symbol__tree_1_1ClassScope" ],
|
||||
[ "ModuleScope", "classtransformers_1_1symbol__tree_1_1ModuleScope.html", "classtransformers_1_1symbol__tree_1_1ModuleScope" ],
|
||||
[ "Scope", "classtransformers_1_1symbol__tree_1_1Scope.html", "classtransformers_1_1symbol__tree_1_1Scope" ],
|
||||
[ "Symbol", "classtransformers_1_1symbol__tree_1_1Symbol.html", "classtransformers_1_1symbol__tree_1_1Symbol" ],
|
||||
[ "SymbolTree", "classtransformers_1_1symbol__tree_1_1SymbolTree.html", "classtransformers_1_1symbol__tree_1_1SymbolTree" ],
|
||||
[ "SymbolTreeBuilder", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder" ],
|
||||
[ "SymbolType", "classtransformers_1_1symbol__tree_1_1SymbolType.html", "classtransformers_1_1symbol__tree_1_1SymbolType" ]
|
||||
] ]
|
||||
] ],
|
||||
[ "utils", "namespaceutils.html", [
|
||||
[ "encryption", "namespaceutils_1_1encryption.html", [
|
||||
[ "StringEncryptor", "classutils_1_1encryption_1_1StringEncryptor.html", "classutils_1_1encryption_1_1StringEncryptor" ]
|
||||
] ],
|
||||
[ "junk_gen", "namespaceutils_1_1junk__gen.html", [
|
||||
[ "JunkGenerator", "classutils_1_1junk__gen_1_1JunkGenerator.html", "classutils_1_1junk__gen_1_1JunkGenerator" ]
|
||||
] ],
|
||||
[ "name_gen", "namespaceutils_1_1name__gen.html", [
|
||||
[ "NameGenerator", "classutils_1_1name__gen_1_1NameGenerator.html", "classutils_1_1name__gen_1_1NameGenerator" ]
|
||||
] ]
|
||||
] ]
|
||||
];
|
||||
@@ -0,0 +1,124 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: attribute_transformer.py File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('attribute__transformer_8py.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#namespaces">Namespaces</a> </div>
|
||||
<div class="headertitle"><div class="title">attribute_transformer.py File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="attribute__transformer_8py_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 id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:namespacetransformers" id="r_namespacetransformers"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers.html">transformers</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespacetransformers_1_1attribute__transformer" id="r_namespacetransformers_1_1attribute__transformer"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1attribute__transformer.html">transformers.attribute_transformer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="attribute__transformer_8py.html">attribute_transformer.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
var attribute__transformer_8py =
|
||||
[
|
||||
[ "transformers.attribute_transformer.AttributeTransformer", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer" ]
|
||||
];
|
||||
@@ -0,0 +1,193 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: attribute_transformer.py 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="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function() { init_codefold(0); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('attribute__transformer_8py_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">attribute_transformer.py</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="attribute__transformer_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1attribute__transformer.html"> 1</a></span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="stringliteral">@file transformers/attribute_transformer.py</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="stringliteral">@brief Attribute access transformer for consistent class member renaming.</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="stringliteral">@details Ensures references like self.method and self.attr are kept consistent</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="stringliteral"> with class and attribute mappings produced by analysis.</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keyword">import</span> ast</div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">from</span> typing <span class="keyword">import</span> Dict, Optional</div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||
<div class="foldopen" id="foldopen00011" data-start="" data-end="">
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html"> 11</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">AttributeTransformer</a>(ast.NodeTransformer):</div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="stringliteral"> @brief Transform attribute access expressions for consistency.</span></div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="stringliteral"> @details Handles self.method and self.attr translations based on provided</span></div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="stringliteral"> mappings to keep calls and attributes aligned with obfuscated names.</span></div>
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="foldopen" id="foldopen00018" data-start="" data-end="">
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50"> 18</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50">__init__</a>(self, class_attr_mapping: Dict[str, Dict[str, str]], class_renames: Dict[str, str]):</div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="stringliteral"> @brief Initialize transformer with mapping dictionaries.</span></div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="stringliteral"> @param class_attr_mapping Maps class_name -> {attr_name -> obfuscated_attr_name}</span></div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="stringliteral"> @param class_renames Maps original_class_name -> obfuscated_class_name</span></div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c"> 24</a></span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a> = class_attr_mapping</div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13"> 25</a></span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a> = class_renames</div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a>: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00028" data-start="" data-end="">
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91"> 28</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91">visit_ClassDef</a>(self, node):</div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="stringliteral"> @brief Track the current class and process its body.</span></div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="stringliteral"> @param node ast.ClassDef being visited.</span></div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="stringliteral"> @return ast.ClassDef Potentially modified node.</span></div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> old_class = self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a></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="comment"># Get the obfuscated name for this class</span></div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> class_name = node.name</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a>:</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c"> 39</a></span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a> = self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a>[class_name]</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a> = class_name</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="comment"># Process the class body</span></div>
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> node = self.generic_visit(node)</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> <span class="comment"># Restore the previous class context</span></div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a> = old_class</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00050" data-start="" data-end="">
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e"> 50</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e">visit_Attribute</a>(self, node):</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="stringliteral"> @brief Transform attribute access for consistency within a class.</span></div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="stringliteral"> @param node ast.Attribute node to transform.</span></div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="stringliteral"> @return ast.AST Updated attribute node.</span></div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment"># First process any nested attributes</span></div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> node = self.generic_visit(node)</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"># Handle self.attr references within a class</span></div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">if</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span> <span class="keywordflow">and</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a>:</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a>:</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> attr_map = self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a>[self.<a class="code hl_variable" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a>]</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment"># Only substitute if node.attr is still in its original form (a mapping key)</span></div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> node.attr <span class="keywordflow">in</span> attr_map <span class="keywordflow">and</span> node.attr != attr_map[node.attr]:</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> node.attr = attr_map[node.attr]</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> <span class="keywordflow">return</span> node</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00011">attribute_transformer.py:11</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_a2a45c1b9df1d719347a72d72cbb2891c"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">transformers.attribute_transformer.AttributeTransformer.class_attr_mapping</a></div><div class="ttdeci">class_attr_mapping</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00024">attribute_transformer.py:24</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_a8bc2a45cb2e19075483d7b5b9c98ed50"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50">transformers.attribute_transformer.AttributeTransformer.__init__</a></div><div class="ttdeci">__init__(self, Dict[str, Dict[str, str]] class_attr_mapping, Dict[str, str] class_renames)</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00018">attribute_transformer.py:18</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_aa0bde339bf61f794e984dd890db8fd91"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef</a></div><div class="ttdeci">visit_ClassDef(self, node)</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00028">attribute_transformer.py:28</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_abe7e476c5bb7ecf22c0c5f7747cd1a9e"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e">transformers.attribute_transformer.AttributeTransformer.visit_Attribute</a></div><div class="ttdeci">visit_Attribute(self, node)</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00050">attribute_transformer.py:50</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_ad8426d8acb4d7fd20e18468414a15d5c"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">transformers.attribute_transformer.AttributeTransformer.current_class</a></div><div class="ttdeci">current_class</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00039">attribute_transformer.py:39</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1attribute__transformer_1_1AttributeTransformer_html_ade8fc4fc84a3bdddfd346bc95b711f13"><div class="ttname"><a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">transformers.attribute_transformer.AttributeTransformer.class_renames</a></div><div class="ttdeci">class_renames</div><div class="ttdef"><b>Definition</b> <a href="attribute__transformer_8py_source.html#l00025">attribute_transformer.py:25</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="attribute__transformer_8py.html">attribute_transformer.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 676 B |
Binary file not shown.
|
After Width: | Height: | Size: 635 B |
@@ -0,0 +1,134 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: class_analyzer.py File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('class__analyzer_8py.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#namespaces">Namespaces</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">class_analyzer.py File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="class__analyzer_8py_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 id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">transformers.class_analyzer.ClassMethodMap</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:namespacetransformers" id="r_namespacetransformers"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers.html">transformers</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespacetransformers_1_1class__analyzer" id="r_namespacetransformers_1_1class__analyzer"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__analyzer.html">transformers.class_analyzer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a6b97dea989b6eb9d37b5d9b53fae3b6d" id="r_a6b97dea989b6eb9d37b5d9b53fae3b6d"><td class="memItemLeft" align="right" valign="top">Tuple[bool, str] </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__analyzer.html#a6b97dea989b6eb9d37b5d9b53fae3b6d">transformers.class_analyzer.get_method_name</a> (ast.Attribute node)</td></tr>
|
||||
<tr class="separator:a6b97dea989b6eb9d37b5d9b53fae3b6d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a33c650248422029fa53952d08e4da438" id="r_a33c650248422029fa53952d08e4da438"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__analyzer.html#a33c650248422029fa53952d08e4da438">transformers.class_analyzer.update_obfuscator_with_class_mappings</a> (obfuscator, <a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a> class_map)</td></tr>
|
||||
<tr class="separator:a33c650248422029fa53952d08e4da438"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="class__analyzer_8py.html">class_analyzer.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
var class__analyzer_8py =
|
||||
[
|
||||
[ "transformers.class_analyzer.ClassAnalyzer", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer" ],
|
||||
[ "transformers.class_analyzer.ClassMethodMap", "classtransformers_1_1class__analyzer_1_1ClassMethodMap.html", "classtransformers_1_1class__analyzer_1_1ClassMethodMap" ],
|
||||
[ "get_method_name", "class__analyzer_8py.html#a6b97dea989b6eb9d37b5d9b53fae3b6d", null ],
|
||||
[ "update_obfuscator_with_class_mappings", "class__analyzer_8py.html#a33c650248422029fa53952d08e4da438", null ]
|
||||
];
|
||||
@@ -0,0 +1,385 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: class_analyzer.py 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="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function() { init_codefold(0); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('class__analyzer_8py_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">class_analyzer.py</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="class__analyzer_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__analyzer.html"> 1</a></span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="stringliteral">@file transformers/class_analyzer.py</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="stringliteral">@brief Class analysis utilities for consistent renaming.</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="stringliteral">@details Pre-analyzes classes, methods, attributes, and inheritance to build</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="stringliteral"> consistent mappings used by obfuscation transformers.</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keyword">import</span> ast</div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keyword">from</span> typing <span class="keyword">import</span> Dict, Set, Tuple, List</div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
|
||||
<div class="foldopen" id="foldopen00010" data-start="" data-end="">
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html"> 10</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a>:</div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="stringliteral"> @brief Stores method and attribute mappings for all classes.</span></div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="stringliteral"> """</span></div>
|
||||
<div class="foldopen" id="foldopen00014" data-start="" data-end="">
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd"> 14</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd">__init__</a>(self):</div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> <span class="comment"># Maps: original_class_name -> {original_method_name -> obfuscated_method_name}</span></div>
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> self.class_methods: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="comment"># Maps: original_class_name -> {original_attr_name -> obfuscated_attr_name}</span></div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> self.class_attributes: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="comment"># Maps: original_class_name -> obfuscated_class_name</span></div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> self.class_renames: Dict[str, str] = {}</div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># Track inheritance relationships: child_class -> [parent_classes]</span></div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> self.inheritance: Dict[str, List[str]] = {}</div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00028" data-start="" data-end="">
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html"> 28</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">ClassAnalyzer</a>(ast.NodeVisitor):</div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="stringliteral"> @brief Analyze classes for consistent method/attribute renaming.</span></div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="stringliteral"> @details Ensures self.method() calls match def method() definitions and records inheritance.</span></div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="stringliteral"> """</span></div>
|
||||
<div class="foldopen" id="foldopen00033" data-start="" data-end="">
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef"> 33</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef">__init__</a>(self, name_generator):</div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d"> 34</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a> = name_generator</div>
|
||||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790"> 35</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a> = <a class="code hl_class" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a>()</div>
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169"> 36</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a> = <span class="keywordtype">None</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="comment"># To avoid duplicate scanning</span></div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> self.scanned_classes: Set[str] = set()</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"># Track method calls within each class</span></div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> self.method_calls: Dict[str, Set[str]] = {}</div>
|
||||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00044" data-start="" data-end="">
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6"> 44</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6">analyze</a>(self, tree: ast.AST) -> ClassMethodMap:</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="stringliteral"> @brief Analyze the entire AST and produce mappings.</span></div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="stringliteral"> @param tree Parsed AST of the input module.</span></div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="stringliteral"> @return ClassMethodMap Populated mappings.</span></div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> self.visit(tree)</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> self.<a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88">_resolve_inheritance</a>()</div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> self.<a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861">_ensure_consistent_method_mapping</a>()</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a></div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00055" data-start="" data-end="">
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b"> 55</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b">visit_ClassDef</a>(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="stringliteral"> @brief Process a class definition and map methods/attrs.</span></div>
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="stringliteral"> @param node ast.ClassDef node being visited.</span></div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> prev_class = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a></div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a> = node.name</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> <span class="comment"># Skip if already processed this class</span></div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.scanned_classes:</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a> = prev_class</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</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="comment"># Initialize method calls tracking for this class</span></div>
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> self.method_calls[node.name] = set()</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> <span class="comment"># Record class inheritance</span></div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> parent_classes = []</div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">for</span> base <span class="keywordflow">in</span> node.bases:</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> isinstance(base, ast.Name):</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> parent_classes.append(base.id)</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="keywordflow">if</span> parent_classes:</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.inheritance[node.name] = parent_classes</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"># Initialize mappings for this class</span></div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[node.name] = {}</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="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_attributes:</div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_attributes[node.name] = {}</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> <span class="comment"># Create a consistent obfuscated name for this class</span></div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_renames:</div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> new_name = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_renames[node.name] = new_name</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="comment"># Process all method definitions in the class</span></div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment"># Methods</span></div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">if</span> isinstance(item, ast.FunctionDef):</div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> (item.name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> item.name.endswith(<span class="stringliteral">'__'</span>)):</div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment"># Generate a consistent obfuscated name for this method</span></div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> new_name = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[node.name][item.name] = new_name</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"># Visit the method body to find self.method() calls</span></div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> self.visit(item)</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"># Attributes in assignments</span></div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">elif</span> isinstance(item, ast.Assign):</div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> self.<a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021">visit_attribute_assign</a>(item)</div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment"># Visit other nodes (like if statements that might contain self.method calls)</span></div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> self.visit(item)</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> self.scanned_classes.add(node.name)</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> <span class="comment"># Visit any nested classes</span></div>
|
||||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordflow">if</span> isinstance(item, ast.ClassDef):</div>
|
||||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> self.visit(item)</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> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a> = prev_class</div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00121" data-start="" data-end="">
|
||||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021"> 121</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021">visit_attribute_assign</a>(self, node):</div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="stringliteral"> @brief Process self.attr assignments within a class.</span></div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="stringliteral"> @param node ast.Assign node of the assignment.</span></div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a>:</div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">if</span> isinstance(target, ast.Attribute) <span class="keywordflow">and</span> isinstance(target.value, ast.Name):</div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">if</span> target.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment"># This is a self.attribute assignment</span></div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> attr_name = target.attr</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> attr_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a>]:</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> new_name = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a>][attr_name] = new_name</div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment"># Visit the value part of the assignment for nested self.method() calls</span></div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> self.visit(node.value)</div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00141" data-start="" data-end="">
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745"> 141</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745">visit_Attribute</a>(self, node):</div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="stringliteral"> @brief Track self.method references for consistency checks.</span></div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="stringliteral"> @param node ast.Attribute being visited.</span></div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a>:</div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> is_self_method, method_name = <a class="code hl_function" href="namespacetransformers_1_1class__analyzer.html#a6b97dea989b6eb9d37b5d9b53fae3b6d">get_method_name</a>(node)</div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">if</span> is_self_method:</div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="comment"># Record this method call for consistency checks later</span></div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> self.method_calls[self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a>].add(method_name)</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> <span class="comment"># Continue traversing</span></div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> self.generic_visit(node)</div>
|
||||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00155" data-start="" data-end="">
|
||||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861"> 155</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861">_ensure_consistent_method_mapping</a>(self):</div>
|
||||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="stringliteral"> @brief Ensure all self.method() calls have mappings, even if undefined in class.</span></div>
|
||||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">for</span> class_name, method_calls <span class="keywordflow">in</span> self.method_calls.items():</div>
|
||||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">continue</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"> 163</span> class_methods = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[class_name]</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">for</span> method_name <span class="keywordflow">in</span> method_calls:</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> class_methods:</div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">if</span> method_name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> method_name.endswith(<span class="stringliteral">'__'</span>):</div>
|
||||
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="comment"># Existing check: mapping is generated only once.</span></div>
|
||||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> new_name = self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> class_methods[method_name] = new_name</div>
|
||||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00173" data-start="" data-end="">
|
||||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88"> 173</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88">_resolve_inheritance</a>(self):</div>
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="stringliteral"> @brief Propagate method mappings along inheritance hierarchies.</span></div>
|
||||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="stringliteral"> @details Ensures overridden methods reuse the same obfuscated name.</span></div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="comment"># Process inheritance depth-first to handle multi-level inheritance</span></div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">def </span>process_inheritance(class_name):</div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.inheritance:</div>
|
||||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">for</span> parent <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.inheritance[class_name]:</div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment"># Process parent's inheritance first</span></div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> process_inheritance(parent)</div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment"># Skip if parent isn't in our mappings (external class)</span></div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span> parent <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">continue</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> <span class="comment"># Inherit parent's methods if not overridden</span></div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">for</span> method_name, obf_name <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[parent].items():</div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[class_name]:</div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment"># Process inheritance for each class</span></div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">for</span> class_name <span class="keywordflow">in</span> list(self.<a class="code hl_variable" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a>.class_methods.keys()):</div>
|
||||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> process_inheritance(class_name)</div>
|
||||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
|
||||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00201" data-start="" data-end="">
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__analyzer.html#a6b97dea989b6eb9d37b5d9b53fae3b6d"> 201</a></span><span class="keyword">def </span><a class="code hl_function" href="namespacetransformers_1_1class__analyzer.html#a6b97dea989b6eb9d37b5d9b53fae3b6d">get_method_name</a>(node: ast.Attribute) -> Tuple[bool, str]:</div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="stringliteral"> @brief Determine if an attribute is a self.method() call.</span></div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="stringliteral"> @param node Attribute node to check.</span></div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="stringliteral"> @return Tuple[bool, str] (is_self_method, method_name)</span></div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">return</span> <span class="keyword">True</span>, node.attr</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> <span class="keyword">False</span>, <span class="stringliteral">""</span></div>
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00212" data-start="" data-end="">
|
||||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__analyzer.html#a33c650248422029fa53952d08e4da438"> 212</a></span><span class="keyword">def </span>update_obfuscator_with_class_mappings(obfuscator, class_map: ClassMethodMap):</div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="stringliteral"> @brief Update obfuscator with class/method/attribute mappings.</span></div>
|
||||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="stringliteral"> @param obfuscator AdvancedObfuscator instance to update.</span></div>
|
||||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="stringliteral"> @param class_map ClassMethodMap mappings produced by analysis.</span></div>
|
||||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="comment"># Update class name mappings in global_var_renames</span></div>
|
||||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">for</span> orig_name, obf_name <span class="keywordflow">in</span> class_map.class_renames.items():</div>
|
||||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> obfuscator.global_var_renames[orig_name] = obf_name</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="comment"># Update class attr mapping with our analyzed data</span></div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">for</span> class_name, class_obf_name <span class="keywordflow">in</span> class_map.class_renames.items():</div>
|
||||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="comment"># Initialize if needed</span></div>
|
||||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">if</span> class_obf_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> obfuscator.class_attr_mapping:</div>
|
||||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> obfuscator.class_attr_mapping[class_obf_name] = {}</div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> </div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="comment"># Copy method mappings</span></div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> class_map.class_methods:</div>
|
||||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keywordflow">for</span> method, obf_method <span class="keywordflow">in</span> class_map.class_methods[class_name].items():</div>
|
||||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> obfuscator.class_attr_mapping[class_obf_name][method] = obf_method</div>
|
||||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment"># Copy attribute mappings</span></div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> class_map.class_attributes:</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">for</span> attr, obf_attr <span class="keywordflow">in</span> class_map.class_attributes[class_name].items():</div>
|
||||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> obfuscator.class_attr_mapping[class_obf_name][attr] = obf_attr</div>
|
||||
</div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00028">class_analyzer.py:28</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a07cf975c27127718a00327be06695e5b"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef</a></div><div class="ttdeci">visit_ClassDef(self, ast.ClassDef node)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00055">class_analyzer.py:55</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a4145a8d6f13f330351df501d2c2acbef"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef">transformers.class_analyzer.ClassAnalyzer.__init__</a></div><div class="ttdeci">__init__(self, name_generator)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00033">class_analyzer.py:33</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a525167f88e08ed9d456beb58698a5861"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping</a></div><div class="ttdeci">_ensure_consistent_method_mapping(self)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00155">class_analyzer.py:155</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a602830de65e4ef41bcb031062d9bb169"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">transformers.class_analyzer.ClassAnalyzer.current_class</a></div><div class="ttdeci">current_class</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00036">class_analyzer.py:36</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a691ad5c2629a84762bf0f8ae82735021"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign</a></div><div class="ttdeci">visit_attribute_assign(self, node)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00121">class_analyzer.py:121</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a739a5193c309c36bd99184aba762a790"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">transformers.class_analyzer.ClassAnalyzer.method_map</a></div><div class="ttdeci">method_map</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00035">class_analyzer.py:35</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a7bc086b8807e7b51c4237d0b20b35c88"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88">transformers.class_analyzer.ClassAnalyzer._resolve_inheritance</a></div><div class="ttdeci">_resolve_inheritance(self)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00173">class_analyzer.py:173</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_a8a4d1b9cb7d27cbe667e8317d482b5b6"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6">transformers.class_analyzer.ClassAnalyzer.analyze</a></div><div class="ttdeci">ClassMethodMap analyze(self, ast.AST tree)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00044">class_analyzer.py:44</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_ab4fe116f7c092817a6cf585f965dd745"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745">transformers.class_analyzer.ClassAnalyzer.visit_Attribute</a></div><div class="ttdeci">visit_Attribute(self, node)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00141">class_analyzer.py:141</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassAnalyzer_html_ae2b710d2e7aa346663d6086b95b0230d"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">transformers.class_analyzer.ClassAnalyzer.name_generator</a></div><div class="ttdeci">name_generator</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00034">class_analyzer.py:34</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassMethodMap_html"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">transformers.class_analyzer.ClassMethodMap</a></div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00010">class_analyzer.py:10</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__analyzer_1_1ClassMethodMap_html_a26346b25523894f82d2e483b6da187fd"><div class="ttname"><a href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd">transformers.class_analyzer.ClassMethodMap.__init__</a></div><div class="ttdeci">__init__(self)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00014">class_analyzer.py:14</a></div></div>
|
||||
<div class="ttc" id="anamespacetransformers_1_1class__analyzer_html_a6b97dea989b6eb9d37b5d9b53fae3b6d"><div class="ttname"><a href="namespacetransformers_1_1class__analyzer.html#a6b97dea989b6eb9d37b5d9b53fae3b6d">transformers.class_analyzer.get_method_name</a></div><div class="ttdeci">Tuple[bool, str] get_method_name(ast.Attribute node)</div><div class="ttdef"><b>Definition</b> <a href="class__analyzer_8py_source.html#l00201">class_analyzer.py:201</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="class__analyzer_8py.html">class_analyzer.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: class_mapper.py File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('class__mapper_8py.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#namespaces">Namespaces</a> |
|
||||
<a href="#func-members">Functions</a> |
|
||||
<a href="#var-members">Variables</a> </div>
|
||||
<div class="headertitle"><div class="title">class_mapper.py File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="class__mapper_8py_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 id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">transformers.class_mapper.ClassMapping</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:namespacetransformers" id="r_namespacetransformers"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers.html">transformers</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespacetransformers_1_1class__mapper" id="r_namespacetransformers_1_1class__mapper"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__mapper.html">transformers.class_mapper</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a799073dc76d04c46febc20f3f88ff430" id="r_a799073dc76d04c46febc20f3f88ff430"><td class="memItemLeft" align="right" valign="top">ast.AST </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__mapper.html#a799073dc76d04c46febc20f3f88ff430">transformers.class_mapper.apply_class_mapping</a> (ast.AST tree, name_generator)</td></tr>
|
||||
<tr class="separator:a799073dc76d04c46febc20f3f88ff430"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Variables</h2></td></tr>
|
||||
<tr class="memitem:a9ce72747d2040877bfa3d561bbcfb046" id="r_a9ce72747d2040877bfa3d561bbcfb046"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__mapper.html#a9ce72747d2040877bfa3d561bbcfb046">transformers.class_mapper.level</a></td></tr>
|
||||
<tr class="separator:a9ce72747d2040877bfa3d561bbcfb046"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a77f334648be077cc4cf07b5862cc34f1" id="r_a77f334648be077cc4cf07b5862cc34f1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1class__mapper.html#a77f334648be077cc4cf07b5862cc34f1">transformers.class_mapper.logger</a> = logging.getLogger("ClassMapper")</td></tr>
|
||||
<tr class="separator:a77f334648be077cc4cf07b5862cc34f1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="class__mapper_8py.html">class_mapper.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
var class__mapper_8py =
|
||||
[
|
||||
[ "transformers.class_mapper.ClassMapAnalyzer", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer" ],
|
||||
[ "transformers.class_mapper.ClassMapping", "classtransformers_1_1class__mapper_1_1ClassMapping.html", "classtransformers_1_1class__mapper_1_1ClassMapping" ],
|
||||
[ "transformers.class_mapper.ClassTransformer", "classtransformers_1_1class__mapper_1_1ClassTransformer.html", "classtransformers_1_1class__mapper_1_1ClassTransformer" ],
|
||||
[ "apply_class_mapping", "class__mapper_8py.html#a799073dc76d04c46febc20f3f88ff430", null ],
|
||||
[ "level", "class__mapper_8py.html#a9ce72747d2040877bfa3d561bbcfb046", null ],
|
||||
[ "logger", "class__mapper_8py.html#a77f334648be077cc4cf07b5862cc34f1", null ]
|
||||
];
|
||||
@@ -0,0 +1,529 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: class_mapper.py 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="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function() { init_codefold(0); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('class__mapper_8py_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">class_mapper.py</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="class__mapper_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__mapper.html"> 1</a></span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="stringliteral">@file transformers/class_mapper.py</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="stringliteral">@brief Class, method, and attribute mapping analyzer and transformer.</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="stringliteral">@details Builds consistent rename mappings across classes, resolves inheritance,</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="stringliteral"> and applies the mappings back to the AST for coherent obfuscation.</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keyword">import</span> ast</div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">from</span> typing <span class="keyword">import</span> Dict, Set, List, Tuple, Optional</div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">import</span> logging</div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"># Configure logging</span></div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__mapper.html#a9ce72747d2040877bfa3d561bbcfb046"> 13</a></span>logging.basicConfig(level=logging.INFO)</div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__mapper.html#a77f334648be077cc4cf07b5862cc34f1"> 14</a></span>logger = logging.getLogger(<span class="stringliteral">"ClassMapper"</span>)</div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="foldopen" id="foldopen00016" data-start="" data-end="">
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapping.html"> 16</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a>:</div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="stringliteral"> @brief Stores all mappings related to classes in a centralized way.</span></div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="stringliteral"> @details Tracks class renames, method and attribute mappings, inheritance structure,</span></div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="stringliteral"> and seen method calls to ensure complete coverage.</span></div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
||||
<div class="foldopen" id="foldopen00023" data-start="" data-end="">
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba"> 23</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba">__init__</a>(self):</div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># Original class name -> obfuscated class name</span></div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> self.class_names: Dict[str, str] = {}</div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># Original class name -> {original method name -> obfuscated method name}</span></div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> self.class_methods: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment"># Original class name -> {original attr name -> obfuscated attr name}</span></div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> self.class_attributes: Dict[str, Dict[str, str]] = {}</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="comment"># Child class -> list of parent classes (original names)</span></div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> self.inheritance: Dict[str, List[str]] = {}</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="comment"># Track all seen method calls to ensure complete coverage</span></div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> self.seen_method_calls: Dict[str, Set[str]] = {}</div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00039" data-start="" data-end="">
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2"> 39</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2">debug_info</a>(self) -> str:</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="stringliteral">"""Return debug information about mappings."""</span></div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> info = []</div>
|
||||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> info.append(f<span class="stringliteral">"Class mappings: {len(self.class_names)} classes"</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="keywordflow">for</span> cls_name, obf_name <span class="keywordflow">in</span> self.class_names.items():</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> info.append(f<span class="stringliteral">" {cls_name} -> {obf_name}"</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="keywordflow">if</span> cls_name <span class="keywordflow">in</span> self.class_methods:</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> methods = self.class_methods[cls_name]</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> info.append(f<span class="stringliteral">" Methods: {len(methods)}"</span>)</div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">for</span> method, obf_method <span class="keywordflow">in</span> methods.items():</div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> info.append(f<span class="stringliteral">" {method} -> {obf_method}"</span>)</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> <span class="keywordflow">if</span> cls_name <span class="keywordflow">in</span> self.class_attributes:</div>
|
||||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> attrs = self.class_attributes[cls_name]</div>
|
||||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> info.append(f<span class="stringliteral">" Attributes: {len(attrs)}"</span>)</div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">for</span> attr, obf_attr <span class="keywordflow">in</span> attrs.items():</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> info.append(f<span class="stringliteral">" {attr} -> {obf_attr}"</span>)</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="keywordflow">return</span> <span class="stringliteral">"\n"</span>.join(info)</div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00062" data-start="" data-end="">
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html"> 62</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">ClassMapAnalyzer</a>(ast.NodeVisitor):</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="stringliteral"> @brief Analyze the AST to create a complete class mapping.</span></div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="stringliteral"> @details Performs multi-pass analysis to collect classes, methods, attributes,</span></div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="stringliteral"> inheritance, and method-call references and builds consistent mappings.</span></div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
|
||||
<div class="foldopen" id="foldopen00069" data-start="" data-end="">
|
||||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94"> 69</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94">__init__</a>(self, name_generator):</div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278"> 70</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a> = name_generator</div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10"> 71</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a> = <a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a>()</div>
|
||||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a>: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> self.processed_classes: Set[str] = set()</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00076" data-start="" data-end="">
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb"> 76</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb">analyze</a>(self, tree: ast.AST) -> ClassMapping:</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="stringliteral"> @brief Perform a complete analysis of the AST.</span></div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="stringliteral"> @param tree Parsed AST to analyze.</span></div>
|
||||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="stringliteral"> @return ClassMapping Aggregated mappings for class renaming and members.</span></div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment"># First pass: collect all class definitions, methods, and inheritance</span></div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> self.visit(tree)</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"># Second pass: resolve inheritance and method mappings</span></div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> self.<a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799">_resolve_inheritance</a>()</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> self.<a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76">_ensure_complete_method_mapping</a>()</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> logger.info(f<span class="stringliteral">"Class analysis complete: {len(self.mapping.class_names)} classes processed"</span>)</div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> logger.debug(self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.debug_info())</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="keywordflow">return</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a></div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00094" data-start="" data-end="">
|
||||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f"> 94</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f">visit_ClassDef</a>(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="stringliteral"> @brief Process a class definition.</span></div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="stringliteral"> @param node ast.ClassDef node.</span></div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> prev_class = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a></div>
|
||||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc"> 100</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a> = node.name</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"># Skip if already processed</span></div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.processed_classes:</div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a> = prev_class</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</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"># Add class name mapping</span></div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_names:</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_names[node.name] = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a>.generate_name()</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="comment"># Initialize dictionaries</span></div>
|
||||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[node.name] = {}</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> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_attributes:</div>
|
||||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_attributes[node.name] = {}</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="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.seen_method_calls:</div>
|
||||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.seen_method_calls[node.name] = set()</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"># Record inheritance</span></div>
|
||||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> parent_classes = []</div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="keywordflow">for</span> base <span class="keywordflow">in</span> node.bases:</div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> isinstance(base, ast.Name):</div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> parent_classes.append(base.id)</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="keywordflow">if</span> parent_classes:</div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.inheritance[node.name] = parent_classes</div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="comment"># Process class body</span></div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> isinstance(item, ast.FunctionDef):</div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> self.<a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d">visit_method_def</a>(item)</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">elif</span> isinstance(item, ast.Assign):</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> self.<a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f">visit_assign_in_class</a>(item)</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">elif</span> isinstance(item, ast.Expr):</div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment"># Could contain calls to self.methods</span></div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> self.visit(item)</div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">elif</span> isinstance(item, ast.ClassDef):</div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment"># Nested class</span></div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> self.visit(item)</div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment"># Other nodes that might contain self.method calls</span></div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> self.visit(item)</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> self.processed_classes.add(node.name)</div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a> = prev_class</div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00149" data-start="" data-end="">
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d"> 149</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d">visit_method_def</a>(self, node: ast.FunctionDef):</div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="stringliteral"> @brief Process a method definition in a class.</span></div>
|
||||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="stringliteral"> @param node ast.FunctionDef node.</span></div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>:</div>
|
||||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
|
||||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> prev_method = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a></div>
|
||||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35"> 158</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a> = node.name</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> <span class="comment"># Skip dunder methods from obfuscation</span></div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> (node.name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> node.name.endswith(<span class="stringliteral">'__'</span>)):</div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment"># Map method name if not already mapped</span></div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>]:</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> obf_name = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>][node.name] = obf_name</div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> logger.debug(f<span class="stringliteral">"Mapped method {self.current_class}.{node.name} to {obf_name}"</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"> 168</span> <span class="comment"># Visit method body to find self.method calls and self.attr assignments</span></div>
|
||||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> self.visit(item)</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"> 172</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a> = prev_method</div>
|
||||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00174" data-start="" data-end="">
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f"> 174</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f">visit_assign_in_class</a>(self, node: ast.Assign):</div>
|
||||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="stringliteral"> @brief Process assignments in class body or methods.</span></div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="stringliteral"> @param node ast.Assign possibly containing self.attr writes.</span></div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>:</div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">return</span></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> <span class="comment"># Check for self.attribute assignments</span></div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">if</span> isinstance(target, ast.Attribute) <span class="keywordflow">and</span> isinstance(target.value, ast.Name) <span class="keywordflow">and</span> target.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> attr_name = target.attr</div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment"># Map attribute name if not already mapped</span></div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">if</span> attr_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>]:</div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> obf_name = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>][attr_name] = obf_name</div>
|
||||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> logger.debug(f<span class="stringliteral">"Mapped attribute {self.current_class}.{attr_name} to {obf_name}"</span>)</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="comment"># Visit the value to find nested self.method calls</span></div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> self.visit(node.value)</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00196" data-start="" data-end="">
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98"> 196</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98">visit_Attribute</a>(self, node: ast.Attribute):</div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="stringliteral"> @brief Process attribute access like self.method or self.attr.</span></div>
|
||||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="stringliteral"> @param node ast.Attribute node.</span></div>
|
||||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a> <span class="keywordflow">and</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="comment"># Record this access for later processing</span></div>
|
||||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> method_name = node.attr</div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.seen_method_calls[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a>].add(method_name)</div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> logger.debug(f<span class="stringliteral">"Recorded method call: {self.current_class}.{method_name}"</span>)</div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="comment"># Continue traversal</span></div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> self.generic_visit(node)</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00210" data-start="" data-end="">
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72"> 210</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72">visit_Assign</a>(self, node: ast.Assign):</div>
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="stringliteral"> @brief Process assignments that might contain self.attr references.</span></div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="stringliteral"> @param node ast.Assign node.</span></div>
|
||||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment"># Visit both sides of the assignment</span></div>
|
||||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> self.visit(target)</div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> self.visit(node.value)</div>
|
||||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00220" data-start="" data-end="">
|
||||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799"> 220</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799">_resolve_inheritance</a>(self):</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="stringliteral"> @brief Ensure child classes inherit method mappings from parent classes.</span></div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="stringliteral"> @details Copies parent method mappings into children when not overridden.</span></div>
|
||||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">def </span>process_inheritance(class_name):</div>
|
||||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.inheritance:</div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">for</span> parent <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.inheritance[class_name]:</div>
|
||||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment"># Process parent's inheritance first</span></div>
|
||||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> process_inheritance(parent)</div>
|
||||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment"># Skip if parent isn't in our mappings</span></div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">if</span> parent <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
|
||||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="comment"># Copy parent's method mappings to child if not overridden</span></div>
|
||||
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">for</span> method_name, obf_name <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[parent].items():</div>
|
||||
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[class_name]:</div>
|
||||
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> logger.debug(f<span class="stringliteral">"Inherited method {class_name}.{method_name} from {parent}"</span>)</div>
|
||||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> </div>
|
||||
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="comment"># Process all classes</span></div>
|
||||
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">for</span> class_name <span class="keywordflow">in</span> list(self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods.keys()):</div>
|
||||
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> process_inheritance(class_name)</div>
|
||||
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00247" data-start="" data-end="">
|
||||
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76"> 247</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76">_ensure_complete_method_mapping</a>(self):</div>
|
||||
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="stringliteral"> @brief Ensure all method calls have corresponding mappings.</span></div>
|
||||
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="stringliteral"> @details Handles methods called but not defined in the class.</span></div>
|
||||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">for</span> class_name, method_calls <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.seen_method_calls.items():</div>
|
||||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods:</div>
|
||||
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
|
||||
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">for</span> method_name <span class="keywordflow">in</span> method_calls:</div>
|
||||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">if</span> method_name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> method_name.endswith(<span class="stringliteral">'__'</span>):</div>
|
||||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">continue</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> <span class="comment"># Add mapping if method was called but not defined</span></div>
|
||||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[class_name]:</div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> obf_name = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a>.generate_name()</div>
|
||||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a>.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> logger.debug(f<span class="stringliteral">"Added mapping for called method {class_name}.{method_name} -> {obf_name}"</span>)</div>
|
||||
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
|
||||
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00268" data-start="" data-end="">
|
||||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html"> 268</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">ClassTransformer</a>(ast.NodeTransformer):</div>
|
||||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="stringliteral"> @brief Transform class-related nodes using the mapping.</span></div>
|
||||
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="stringliteral"> @details Renames class names, methods, and self.attr/self.method references</span></div>
|
||||
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="stringliteral"> according to the analyzed mappings.</span></div>
|
||||
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
|
||||
<div class="foldopen" id="foldopen00275" data-start="" data-end="">
|
||||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e"> 275</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e">__init__</a>(self, mapping: ClassMapping):</div>
|
||||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc"> 276</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a> = mapping</div>
|
||||
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00279" data-start="" data-end="">
|
||||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3"> 279</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3">visit_ClassDef</a>(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span><span class="stringliteral"> @brief Transform class name and process its body.</span></div>
|
||||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span><span class="stringliteral"> @param node ast.ClassDef node.</span></div>
|
||||
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span><span class="stringliteral"> @return ast.ClassDef Transformed class node.</span></div>
|
||||
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> prev_class = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a></div>
|
||||
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> orig_name = node.name</div>
|
||||
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5"> 287</a></span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> = orig_name</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"> 289</span> <span class="comment"># Rename class if it's in our mapping</span></div>
|
||||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_names:</div>
|
||||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> node.name = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_names[node.name]</div>
|
||||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> logger.debug(f<span class="stringliteral">"Transformed class {orig_name} -> {node.name}"</span>)</div>
|
||||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
|
||||
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="comment"># Process class body</span></div>
|
||||
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> node.body = [self.visit(item) <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body]</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"> 297</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> = prev_class</div>
|
||||
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00300" data-start="" data-end="">
|
||||
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3"> 300</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3">visit_FunctionDef</a>(self, node: ast.FunctionDef):</div>
|
||||
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="stringliteral"> @brief Transform method name.</span></div>
|
||||
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="stringliteral"> @param node ast.FunctionDef node.</span></div>
|
||||
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="stringliteral"> @return ast.FunctionDef Transformed method node.</span></div>
|
||||
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> <span class="keywordflow">and</span> node.name <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_methods.get(self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>, {}):</div>
|
||||
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> orig_name = node.name</div>
|
||||
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> node.name = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_methods[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>][node.name]</div>
|
||||
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> logger.debug(f<span class="stringliteral">"Transformed method {self.current_class}.{orig_name} -> {node.name}"</span>)</div>
|
||||
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </div>
|
||||
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="comment"># Visit the method body</span></div>
|
||||
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> node.body = [self.visit(item) <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body]</div>
|
||||
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00315" data-start="" data-end="">
|
||||
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e"> 315</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e">visit_Attribute</a>(self, node: ast.Attribute):</div>
|
||||
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="stringliteral"> @brief Transform self.method and self.attr references.</span></div>
|
||||
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="stringliteral"> @param node ast.Attribute node.</span></div>
|
||||
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="stringliteral"> @return ast.Attribute Transformed attribute node.</span></div>
|
||||
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <span class="comment"># Process any child nodes first (for nested attributes)</span></div>
|
||||
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> node.value = self.visit(node.value)</div>
|
||||
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> </div>
|
||||
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="comment"># Check if this is a self.attr or self.method reference</span></div>
|
||||
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> <span class="keywordflow">and</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> orig_name = node.attr</div>
|
||||
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
|
||||
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="comment"># Check in method mappings first</span></div>
|
||||
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_methods <span class="keywordflow">and</span> node.attr <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_methods[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>]:</div>
|
||||
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> node.attr = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_methods[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>][node.attr]</div>
|
||||
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> logger.debug(f<span class="stringliteral">"Transformed self.method {self.current_class}.{orig_name} -> {node.attr}"</span>)</div>
|
||||
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
|
||||
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="comment"># Then check attribute mappings</span></div>
|
||||
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="keywordflow">elif</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_attributes <span class="keywordflow">and</span> node.attr <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>]:</div>
|
||||
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> node.attr = self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>.class_attributes[self.<a class="code hl_variable" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a>][node.attr]</div>
|
||||
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> logger.debug(f<span class="stringliteral">"Transformed self.attr {self.current_class}.{orig_name} -> {node.attr}"</span>)</div>
|
||||
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
|
||||
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
|
||||
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span><span class="comment"># Helper function to apply the class mapping transformation</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00341" data-start="" data-end="">
|
||||
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1class__mapper.html#a799073dc76d04c46febc20f3f88ff430"> 341</a></span><span class="keyword">def </span>apply_class_mapping(tree: ast.AST, name_generator) -> ast.AST:</div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="stringliteral"> @brief Analyze and transform classes consistently.</span></div>
|
||||
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="stringliteral"> @param tree Input AST.</span></div>
|
||||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="stringliteral"> @param name_generator Name generator used to create obfuscated identifiers.</span></div>
|
||||
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span><span class="stringliteral"> @return Tuple[ast.AST, ClassMapping] Transformed AST and the mapping produced.</span></div>
|
||||
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="comment"># First pass: analyze all classes</span></div>
|
||||
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> analyzer = <a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">ClassMapAnalyzer</a>(name_generator)</div>
|
||||
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> mapping = analyzer.analyze(tree)</div>
|
||||
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
|
||||
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="comment"># Second pass: transform using the mapping</span></div>
|
||||
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> transformer = <a class="code hl_class" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">ClassTransformer</a>(mapping)</div>
|
||||
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> transformed = transformer.visit(tree)</div>
|
||||
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> </div>
|
||||
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <span class="keywordflow">return</span> transformed, mapping</div>
|
||||
</div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00062">class_mapper.py:62</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_a13817b3df73643f9bb8b9601e3e040cb"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb">transformers.class_mapper.ClassMapAnalyzer.analyze</a></div><div class="ttdeci">ClassMapping analyze(self, ast.AST tree)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00076">class_mapper.py:76</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_a34c03faa2fef07c3a5f0e56745b8e799"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance</a></div><div class="ttdeci">_resolve_inheritance(self)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00220">class_mapper.py:220</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_a6ba0759719762c8b373d3009b7caed98"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute</a></div><div class="ttdeci">visit_Attribute(self, ast.Attribute node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00196">class_mapper.py:196</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_a6bcd45016a2ae5cb4be6a3cb942bdf9d"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d">transformers.class_mapper.ClassMapAnalyzer.visit_method_def</a></div><div class="ttdeci">visit_method_def(self, ast.FunctionDef node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00149">class_mapper.py:149</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_a93c02ece387c4611fa249e808f39bf10"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">transformers.class_mapper.ClassMapAnalyzer.mapping</a></div><div class="ttdeci">mapping</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00071">class_mapper.py:71</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_ac0d803c97db3802b92b824d036b14bcc"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">transformers.class_mapper.ClassMapAnalyzer.current_class</a></div><div class="ttdeci">current_class</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00100">class_mapper.py:100</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_ad185e02d3dc16d55b1b6ad232203ef35"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">transformers.class_mapper.ClassMapAnalyzer.current_method</a></div><div class="ttdeci">current_method</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00158">class_mapper.py:158</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_ad196ea0fd82543968f2514f4cebbba94"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94">transformers.class_mapper.ClassMapAnalyzer.__init__</a></div><div class="ttdeci">__init__(self, name_generator)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00069">class_mapper.py:69</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_ad4df47c9f65fc7cc70ac7159b7116278"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">transformers.class_mapper.ClassMapAnalyzer.name_generator</a></div><div class="ttdeci">name_generator</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00070">class_mapper.py:70</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_aeebda718232e13cd5a3e583db024da6f"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef</a></div><div class="ttdeci">visit_ClassDef(self, ast.ClassDef node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00094">class_mapper.py:94</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_af584a55f0c308a55d109181485e1ae76"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping</a></div><div class="ttdeci">_ensure_complete_method_mapping(self)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00247">class_mapper.py:247</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_afd6498b69da44c6ec6e0b2afa725c67f"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class</a></div><div class="ttdeci">visit_assign_in_class(self, ast.Assign node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00174">class_mapper.py:174</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapAnalyzer_html_afdc5a0eb9fd40b5d0e9b70cea0de1f72"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72">transformers.class_mapper.ClassMapAnalyzer.visit_Assign</a></div><div class="ttdeci">visit_Assign(self, ast.Assign node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00210">class_mapper.py:210</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapping_html"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapping.html">transformers.class_mapper.ClassMapping</a></div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00016">class_mapper.py:16</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapping_html_a1fa5906a282c1ed833160badb1f674a2"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2">transformers.class_mapper.ClassMapping.debug_info</a></div><div class="ttdeci">str debug_info(self)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00039">class_mapper.py:39</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassMapping_html_a9327faa5f8de53e9da48588245d332ba"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba">transformers.class_mapper.ClassMapping.__init__</a></div><div class="ttdeci">__init__(self)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00023">class_mapper.py:23</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00268">class_mapper.py:268</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_a02e62f7a280ff5bfabb39f312c0f58fc"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">transformers.class_mapper.ClassTransformer.mapping</a></div><div class="ttdeci">mapping</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00276">class_mapper.py:276</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_a0a61d0cd34072cb712df523d6fc504e3"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3">transformers.class_mapper.ClassTransformer.visit_FunctionDef</a></div><div class="ttdeci">visit_FunctionDef(self, ast.FunctionDef node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00300">class_mapper.py:300</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_a18fb4582603ee59841361810858c680e"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e">transformers.class_mapper.ClassTransformer.visit_Attribute</a></div><div class="ttdeci">visit_Attribute(self, ast.Attribute node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00315">class_mapper.py:315</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_a4cfb94377152b62a164976d6bd5e2fc5"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">transformers.class_mapper.ClassTransformer.current_class</a></div><div class="ttdeci">current_class</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00287">class_mapper.py:287</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_a54db45ae6b1b4e8ffdf6c56ae4c67fd3"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3">transformers.class_mapper.ClassTransformer.visit_ClassDef</a></div><div class="ttdeci">visit_ClassDef(self, ast.ClassDef node)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00279">class_mapper.py:279</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1class__mapper_1_1ClassTransformer_html_af7356231305781d4b6287bde4fe38f9e"><div class="ttname"><a href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e">transformers.class_mapper.ClassTransformer.__init__</a></div><div class="ttdeci">__init__(self, ClassMapping mapping)</div><div class="ttdef"><b>Definition</b> <a href="class__mapper_8py_source.html#l00275">class_mapper.py:275</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="class__mapper_8py.html">class_mapper.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+129
@@ -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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Class 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>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classes.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Class Index</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a></div>
|
||||
<div class="classindex">
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_A" name="letter_A">A</a></dt>
|
||||
<dd><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">AdvancedObfuscator</a> (<a class="el" href="namespaceobfuscator.html">obfuscator</a>)</dd><dd><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">AttributeTransformer</a> (<a class="el" href="namespacetransformers_1_1attribute__transformer.html">transformers.attribute_transformer</a>)</dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
|
||||
<dd><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">ClassAnalyzer</a> (<a class="el" href="namespacetransformers_1_1class__analyzer.html">transformers.class_analyzer</a>)</dd><dd><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">ClassMapAnalyzer</a> (<a class="el" href="namespacetransformers_1_1class__mapper.html">transformers.class_mapper</a>)</dd><dd><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a> (<a class="el" href="namespacetransformers_1_1class__mapper.html">transformers.class_mapper</a>)</dd><dd><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a> (<a class="el" href="namespacetransformers_1_1class__analyzer.html">transformers.class_analyzer</a>)</dd><dd><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">ClassScope</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd><dd><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">ClassTransformer</a> (<a class="el" href="namespacetransformers_1_1class__mapper.html">transformers.class_mapper</a>)</dd><dd><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">ControlFlowFlattener</a> (<a class="el" href="namespacetransformers_1_1control__flow.html">transformers.control_flow</a>)</dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_J" name="letter_J">J</a></dt>
|
||||
<dd><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">JunkGenerator</a> (<a class="el" href="namespaceutils_1_1junk__gen.html">utils.junk_gen</a>)</dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt>
|
||||
<dd><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">ModuleScope</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_N" name="letter_N">N</a></dt>
|
||||
<dd><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">NameGenerator</a> (<a class="el" href="namespaceutils_1_1name__gen.html">utils.name_gen</a>)</dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
|
||||
<dd><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">RenameTransformer</a> (<a class="el" href="namespacetransformers_1_1rename.html">transformers.rename</a>)</dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
|
||||
<dd><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd><dd><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">StringEncryptor</a> (<a class="el" href="namespaceutils_1_1encryption.html">utils.encryption</a>)</dd><dd><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd><dd><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd><dd><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">SymbolTreeBuilder</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd><dd><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a> (<a class="el" href="namespacetransformers_1_1symbol__tree.html">transformers.symbol_tree</a>)</dd></dl>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classobfuscator_1_1AdvancedObfuscator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">obfuscator.AdvancedObfuscator Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aaffc65fd026066b5db7b28c767113b2b">__init__</a>(self, debug_mode=False)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a424ba5de0c9a2ea94ffe39f58b6a04b8">_build_symbol_tree</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aab379b03fecc184395d84df866849bdb">_flatten_control_flow</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#ac72c695b2382f94015e9133254c60ba8">_generate_final_code</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#ac5445e1980a8addc56b5e9e4b134f2a7">_rename_and_encrypt</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aef5016cadd430585e9e3bf6cd651766b">class_attr_mapping</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a4c05fe283ed840c34d9a4b1b8b90297b">debug_data</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a755ab23358e464b4a4d8ea144d84c5db">debug_mode</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aa5653d0e597359d527b772223acb9c54">detect_issues</a>(self)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a3ec1e13df931c1508ce87c1d43319d9e">global_var_renames</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aaae69f3be557e46d9538d68caa5f2959">junk_gen</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#add2f1a570ef241ad62e977d434973ddf">log_debug</a>(self, category, data)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#abaeb1135a6445bef98ac6574f827d6df">name_generator</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a0bae5229abba4f829e01b84cb9c9ffd7">obfuscate</a>(self, str code)</td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a6b389da576cc61f0404f71d31768ea80">primary_key</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aef1166ac92f95772a86271833cf0dc8d">salt</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a5a777b8774460385c5640e6a7fd8abd3">secondary_key</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a663f90581cbf805979af75ac48f400a3">symbol_tree</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a9df466e5d1c16e8f5209573b5283fd2e">used_names</a></td><td class="entry"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">obfuscator.AdvancedObfuscator</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,953 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: obfuscator.AdvancedObfuscator Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classobfuscator_1_1AdvancedObfuscator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="classobfuscator_1_1AdvancedObfuscator-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">obfuscator.AdvancedObfuscator Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:aaffc65fd026066b5db7b28c767113b2b" id="r_aaffc65fd026066b5db7b28c767113b2b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aaffc65fd026066b5db7b28c767113b2b">__init__</a> (self, <a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a755ab23358e464b4a4d8ea144d84c5db">debug_mode</a>=False)</td></tr>
|
||||
<tr class="separator:aaffc65fd026066b5db7b28c767113b2b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa5653d0e597359d527b772223acb9c54" id="r_aa5653d0e597359d527b772223acb9c54"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aa5653d0e597359d527b772223acb9c54">detect_issues</a> (self)</td></tr>
|
||||
<tr class="separator:aa5653d0e597359d527b772223acb9c54"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:add2f1a570ef241ad62e977d434973ddf" id="r_add2f1a570ef241ad62e977d434973ddf"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#add2f1a570ef241ad62e977d434973ddf">log_debug</a> (self, category, data)</td></tr>
|
||||
<tr class="separator:add2f1a570ef241ad62e977d434973ddf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0bae5229abba4f829e01b84cb9c9ffd7" id="r_a0bae5229abba4f829e01b84cb9c9ffd7"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a0bae5229abba4f829e01b84cb9c9ffd7">obfuscate</a> (self, str code)</td></tr>
|
||||
<tr class="separator:a0bae5229abba4f829e01b84cb9c9ffd7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:aef5016cadd430585e9e3bf6cd651766b" id="r_aef5016cadd430585e9e3bf6cd651766b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aef5016cadd430585e9e3bf6cd651766b">class_attr_mapping</a></td></tr>
|
||||
<tr class="separator:aef5016cadd430585e9e3bf6cd651766b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4c05fe283ed840c34d9a4b1b8b90297b" id="r_a4c05fe283ed840c34d9a4b1b8b90297b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a4c05fe283ed840c34d9a4b1b8b90297b">debug_data</a></td></tr>
|
||||
<tr class="separator:a4c05fe283ed840c34d9a4b1b8b90297b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a755ab23358e464b4a4d8ea144d84c5db" id="r_a755ab23358e464b4a4d8ea144d84c5db"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a755ab23358e464b4a4d8ea144d84c5db">debug_mode</a></td></tr>
|
||||
<tr class="separator:a755ab23358e464b4a4d8ea144d84c5db"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3ec1e13df931c1508ce87c1d43319d9e" id="r_a3ec1e13df931c1508ce87c1d43319d9e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a3ec1e13df931c1508ce87c1d43319d9e">global_var_renames</a></td></tr>
|
||||
<tr class="separator:a3ec1e13df931c1508ce87c1d43319d9e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aaae69f3be557e46d9538d68caa5f2959" id="r_aaae69f3be557e46d9538d68caa5f2959"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aaae69f3be557e46d9538d68caa5f2959">junk_gen</a></td></tr>
|
||||
<tr class="separator:aaae69f3be557e46d9538d68caa5f2959"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abaeb1135a6445bef98ac6574f827d6df" id="r_abaeb1135a6445bef98ac6574f827d6df"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#abaeb1135a6445bef98ac6574f827d6df">name_generator</a></td></tr>
|
||||
<tr class="separator:abaeb1135a6445bef98ac6574f827d6df"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6b389da576cc61f0404f71d31768ea80" id="r_a6b389da576cc61f0404f71d31768ea80"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a6b389da576cc61f0404f71d31768ea80">primary_key</a></td></tr>
|
||||
<tr class="separator:a6b389da576cc61f0404f71d31768ea80"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aef1166ac92f95772a86271833cf0dc8d" id="r_aef1166ac92f95772a86271833cf0dc8d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aef1166ac92f95772a86271833cf0dc8d">salt</a></td></tr>
|
||||
<tr class="separator:aef1166ac92f95772a86271833cf0dc8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5a777b8774460385c5640e6a7fd8abd3" id="r_a5a777b8774460385c5640e6a7fd8abd3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a5a777b8774460385c5640e6a7fd8abd3">secondary_key</a></td></tr>
|
||||
<tr class="separator:a5a777b8774460385c5640e6a7fd8abd3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a663f90581cbf805979af75ac48f400a3" id="r_a663f90581cbf805979af75ac48f400a3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a663f90581cbf805979af75ac48f400a3">symbol_tree</a></td></tr>
|
||||
<tr class="separator:a663f90581cbf805979af75ac48f400a3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9df466e5d1c16e8f5209573b5283fd2e" id="r_a9df466e5d1c16e8f5209573b5283fd2e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a9df466e5d1c16e8f5209573b5283fd2e">used_names</a></td></tr>
|
||||
<tr class="separator:a9df466e5d1c16e8f5209573b5283fd2e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a424ba5de0c9a2ea94ffe39f58b6a04b8" id="r_a424ba5de0c9a2ea94ffe39f58b6a04b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#a424ba5de0c9a2ea94ffe39f58b6a04b8">_build_symbol_tree</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:a424ba5de0c9a2ea94ffe39f58b6a04b8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aab379b03fecc184395d84df866849bdb" id="r_aab379b03fecc184395d84df866849bdb"><td class="memItemLeft" align="right" valign="top">ast.AST </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#aab379b03fecc184395d84df866849bdb">_flatten_control_flow</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:aab379b03fecc184395d84df866849bdb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac72c695b2382f94015e9133254c60ba8" id="r_ac72c695b2382f94015e9133254c60ba8"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#ac72c695b2382f94015e9133254c60ba8">_generate_final_code</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:ac72c695b2382f94015e9133254c60ba8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac5445e1980a8addc56b5e9e4b134f2a7" id="r_ac5445e1980a8addc56b5e9e4b134f2a7"><td class="memItemLeft" align="right" valign="top">ast.AST </td><td class="memItemRight" valign="bottom"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html#ac5445e1980a8addc56b5e9e4b134f2a7">_rename_and_encrypt</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:ac5445e1980a8addc56b5e9e4b134f2a7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Core obfuscation engine orchestrating all transformations.
|
||||
@details Coordinates name generation, symbol tree construction, AST transformations
|
||||
for renaming and string encryption, control-flow flattening, and final
|
||||
code generation with junk injection. Optionally records detailed debug data.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00025">25</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="aaffc65fd026066b5db7b28c767113b2b" name="aaffc65fd026066b5db7b28c767113b2b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaffc65fd026066b5db7b28c767113b2b">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>debug_mode</em> = <code>False</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00032">32</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 32</span> <span class="keyword">def </span>__init__(self, debug_mode=False):</div>
|
||||
<div class="line"><span class="lineno"> 33</span> self.used_names = set()</div>
|
||||
<div class="line"><span class="lineno"> 34</span> self.name_generator = NameGenerator()</div>
|
||||
<div class="line"><span class="lineno"> 35</span> </div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="comment"># Generate keys for string encryption</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span> self.primary_key = bytes([random.randint(65, 90) <span class="keywordflow">for</span> _ <span class="keywordflow">in</span> range(16)])</div>
|
||||
<div class="line"><span class="lineno"> 38</span> self.secondary_key = bytes([random.randint(65, 90) <span class="keywordflow">for</span> _ <span class="keywordflow">in</span> range(8)])</div>
|
||||
<div class="line"><span class="lineno"> 39</span> self.salt = bytes([random.randint(65, 90) <span class="keywordflow">for</span> _ <span class="keywordflow">in</span> range(4)])</div>
|
||||
<div class="line"><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="comment"># Symbol tree for global tracking of all symbols</span></div>
|
||||
<div class="line"><span class="lineno"> 42</span> self.symbol_tree = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><span class="lineno"> 44</span> <span class="comment"># Legacy mappings for backward compatibility</span></div>
|
||||
<div class="line"><span class="lineno"> 45</span> self.class_attr_mapping = {}</div>
|
||||
<div class="line"><span class="lineno"> 46</span> self.global_var_renames = {}</div>
|
||||
<div class="line"><span class="lineno"> 47</span> </div>
|
||||
<div class="line"><span class="lineno"> 48</span> <span class="comment"># Initialize junk generator</span></div>
|
||||
<div class="line"><span class="lineno"> 49</span> self.junk_gen = JunkGenerator(self.name_generator)</div>
|
||||
<div class="line"><span class="lineno"> 50</span> </div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="comment"># Debugging flags and data structures</span></div>
|
||||
<div class="line"><span class="lineno"> 52</span> self.debug_mode = debug_mode</div>
|
||||
<div class="line"><span class="lineno"> 53</span> self.debug_data = {</div>
|
||||
<div class="line"><span class="lineno"> 54</span> <span class="stringliteral">"timestamp"</span>: datetime.now().isoformat(),</div>
|
||||
<div class="line"><span class="lineno"> 55</span> <span class="stringliteral">"transformations"</span>: [],</div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="stringliteral">"class_mappings"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 57</span> <span class="stringliteral">"variable_mappings"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 58</span> <span class="stringliteral">"method_mappings"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 59</span> <span class="stringliteral">"string_encryption"</span>: [],</div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="stringliteral">"issues_detected"</span>: [],</div>
|
||||
<div class="line"><span class="lineno"> 61</span> <span class="stringliteral">"control_flow_stats"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 62</span> <span class="stringliteral">"junk_stats"</span>: {<span class="stringliteral">"count"</span>: 0, <span class="stringliteral">"snippets"</span>: []}</div>
|
||||
<div class="line"><span class="lineno"> 63</span> }</div>
|
||||
<div class="line"><span class="lineno"> 64</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a424ba5de0c9a2ea94ffe39f58b6a04b8" name="a424ba5de0c9a2ea94ffe39f58b6a04b8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a424ba5de0c9a2ea94ffe39f58b6a04b8">◆ </a></span>_build_symbol_tree()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a> obfuscator.AdvancedObfuscator._build_symbol_tree </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Build a global symbol tree from the parsed AST.
|
||||
@param tree Parsed AST of the input source.
|
||||
@return SymbolTree Populated symbol tree with rename mappings and metadata.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00115">115</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 115</span> <span class="keyword">def </span>_build_symbol_tree(self, tree: ast.AST) -> SymbolTree:</div>
|
||||
<div class="line"><span class="lineno"> 116</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 117</span><span class="stringliteral"> @brief Build a global symbol tree from the parsed AST.</span></div>
|
||||
<div class="line"><span class="lineno"> 118</span><span class="stringliteral"> @param tree Parsed AST of the input source.</span></div>
|
||||
<div class="line"><span class="lineno"> 119</span><span class="stringliteral"> @return SymbolTree Populated symbol tree with rename mappings and metadata.</span></div>
|
||||
<div class="line"><span class="lineno"> 120</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">if</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 122</span> self.log_debug(<span class="stringliteral">"symbol_tree_building"</span>, <span class="stringliteral">"Building global symbol tree"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 123</span> </div>
|
||||
<div class="line"><span class="lineno"> 124</span> builder = SymbolTreeBuilder()</div>
|
||||
<div class="line"><span class="lineno"> 125</span> symbol_tree = builder.build_tree(tree)</div>
|
||||
<div class="line"><span class="lineno"> 126</span> </div>
|
||||
<div class="line"><span class="lineno"> 127</span> <span class="comment"># Apply name generator to all symbols</span></div>
|
||||
<div class="line"><span class="lineno"> 128</span> symbol_tree.apply_name_generator(self.name_generator)</div>
|
||||
<div class="line"><span class="lineno"> 129</span> </div>
|
||||
<div class="line"><span class="lineno"> 130</span> <span class="comment"># Populate legacy mappings for backward compatibility</span></div>
|
||||
<div class="line"><span class="lineno"> 131</span> rename_mapping = symbol_tree.get_rename_mapping()</div>
|
||||
<div class="line"><span class="lineno"> 132</span> </div>
|
||||
<div class="line"><span class="lineno"> 133</span> <span class="comment"># Update class and method mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">for</span> class_name, class_obf_name <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"classes"</span>].items():</div>
|
||||
<div class="line"><span class="lineno"> 135</span> self.global_var_renames[class_name] = class_obf_name</div>
|
||||
<div class="line"><span class="lineno"> 136</span> </div>
|
||||
<div class="line"><span class="lineno"> 137</span> <span class="comment"># Initialize class_attr_mapping entry</span></div>
|
||||
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">if</span> class_obf_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.class_attr_mapping:</div>
|
||||
<div class="line"><span class="lineno"> 139</span> self.class_attr_mapping[class_obf_name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 140</span> </div>
|
||||
<div class="line"><span class="lineno"> 141</span> <span class="comment"># Copy method mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 142</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"methods"</span>]:</div>
|
||||
<div class="line"><span class="lineno"> 143</span> <span class="keywordflow">for</span> method_name, method_obf_name <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"methods"</span>][class_name].items():</div>
|
||||
<div class="line"><span class="lineno"> 144</span> self.class_attr_mapping[class_obf_name][method_name] = method_obf_name</div>
|
||||
<div class="line"><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><span class="lineno"> 146</span> <span class="comment"># Copy attribute mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"attributes"</span>]:</div>
|
||||
<div class="line"><span class="lineno"> 148</span> <span class="keywordflow">for</span> attr_name, attr_obf_name <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"attributes"</span>][class_name].items():</div>
|
||||
<div class="line"><span class="lineno"> 149</span> self.class_attr_mapping[class_obf_name][attr_name] = attr_obf_name</div>
|
||||
<div class="line"><span class="lineno"> 150</span> </div>
|
||||
<div class="line"><span class="lineno"> 151</span> <span class="comment"># Update function and variable mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 152</span> self.global_var_renames.update(rename_mapping[<span class="stringliteral">"functions"</span>])</div>
|
||||
<div class="line"><span class="lineno"> 153</span> self.global_var_renames.update(rename_mapping[<span class="stringliteral">"variables"</span>])</div>
|
||||
<div class="line"><span class="lineno"> 154</span> </div>
|
||||
<div class="line"><span class="lineno"> 155</span> <span class="keywordflow">if</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 156</span> self.log_debug(<span class="stringliteral">"symbol_tree_stats"</span>, {</div>
|
||||
<div class="line"><span class="lineno"> 157</span> <span class="stringliteral">"classes"</span>: len(rename_mapping[<span class="stringliteral">"classes"</span>]),</div>
|
||||
<div class="line"><span class="lineno"> 158</span> <span class="stringliteral">"methods"</span>: sum(len(methods) <span class="keywordflow">for</span> methods <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"methods"</span>].values()),</div>
|
||||
<div class="line"><span class="lineno"> 159</span> <span class="stringliteral">"attributes"</span>: sum(len(attrs) <span class="keywordflow">for</span> attrs <span class="keywordflow">in</span> rename_mapping[<span class="stringliteral">"attributes"</span>].values()),</div>
|
||||
<div class="line"><span class="lineno"> 160</span> <span class="stringliteral">"functions"</span>: len(rename_mapping[<span class="stringliteral">"functions"</span>]),</div>
|
||||
<div class="line"><span class="lineno"> 161</span> <span class="stringliteral">"variables"</span>: len(rename_mapping[<span class="stringliteral">"variables"</span>])</div>
|
||||
<div class="line"><span class="lineno"> 162</span> })</div>
|
||||
<div class="line"><span class="lineno"> 163</span> </div>
|
||||
<div class="line"><span class="lineno"> 164</span> <span class="keywordflow">return</span> symbol_tree</div>
|
||||
<div class="line"><span class="lineno"> 165</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00045">obfuscator.AdvancedObfuscator.class_attr_mapping</a>, <a class="el" href="attribute__transformer_8py_source.html#l00024">transformers.attribute_transformer.AttributeTransformer.class_attr_mapping</a>, <a class="el" href="rename_8py_source.html#l00027">transformers.rename.RenameTransformer.class_attr_mapping</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>, <a class="el" href="obfuscator_8py_source.html#l00046">obfuscator.AdvancedObfuscator.global_var_renames</a>, <a class="el" href="rename_8py_source.html#l00026">transformers.rename.RenameTransformer.global_var_renames</a>, <a class="el" href="obfuscator_8py_source.html#l00065">obfuscator.AdvancedObfuscator.log_debug()</a>, <a class="el" href="control__flow_8py_source.html#l00036">transformers.control_flow.ControlFlowFlattener.log_debug()</a>, <a class="el" href="rename_8py_source.html#l00056">transformers.rename.RenameTransformer.log_debug()</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aab379b03fecc184395d84df866849bdb" name="aab379b03fecc184395d84df866849bdb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aab379b03fecc184395d84df866849bdb">◆ </a></span>_flatten_control_flow()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> ast.AST obfuscator.AdvancedObfuscator._flatten_control_flow </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Flatten control flow into a state-machine dispatch form.
|
||||
@param tree AST after renaming/encryption.
|
||||
@return ast.AST Transformed AST with flattened control flow.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00196">196</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 196</span> <span class="keyword">def </span>_flatten_control_flow(self, tree: ast.AST) -> ast.AST:</div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 198</span><span class="stringliteral"> @brief Flatten control flow into a state-machine dispatch form.</span></div>
|
||||
<div class="line"><span class="lineno"> 199</span><span class="stringliteral"> @param tree AST after renaming/encryption.</span></div>
|
||||
<div class="line"><span class="lineno"> 200</span><span class="stringliteral"> @return ast.AST Transformed AST with flattened control flow.</span></div>
|
||||
<div class="line"><span class="lineno"> 201</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 202</span> flattener = ControlFlowFlattener(debug_mode=self.debug_mode)</div>
|
||||
<div class="line"><span class="lineno"> 203</span> tree = flattener.visit(tree)</div>
|
||||
<div class="line"><span class="lineno"> 204</span> </div>
|
||||
<div class="line"><span class="lineno"> 205</span> <span class="comment"># Capture debug data from flattener if available</span></div>
|
||||
<div class="line"><span class="lineno"> 206</span> <span class="keywordflow">if</span> self.debug_mode <span class="keywordflow">and</span> hasattr(flattener, <span class="stringliteral">'debug_data'</span>):</div>
|
||||
<div class="line"><span class="lineno"> 207</span> self.debug_data[<span class="stringliteral">"control_flow_stats"</span>] = flattener.debug_data</div>
|
||||
<div class="line"><span class="lineno"> 208</span> </div>
|
||||
<div class="line"><span class="lineno"> 209</span> ast.fix_missing_locations(tree)</div>
|
||||
<div class="line"><span class="lineno"> 210</span> <span class="keywordflow">return</span> tree</div>
|
||||
<div class="line"><span class="lineno"> 211</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, and <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00278">obfuscator.AdvancedObfuscator.obfuscate()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac72c695b2382f94015e9133254c60ba8" name="ac72c695b2382f94015e9133254c60ba8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac72c695b2382f94015e9133254c60ba8">◆ </a></span>_generate_final_code()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str obfuscator.AdvancedObfuscator._generate_final_code </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Generate final Python source from the AST and inject junk code.
|
||||
@param tree AST after all transformations.
|
||||
@return str Final obfuscated Python source code.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00212">212</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 212</span> <span class="keyword">def </span>_generate_final_code(self, tree: ast.AST) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 213</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 214</span><span class="stringliteral"> @brief Generate final Python source from the AST and inject junk code.</span></div>
|
||||
<div class="line"><span class="lineno"> 215</span><span class="stringliteral"> @param tree AST after all transformations.</span></div>
|
||||
<div class="line"><span class="lineno"> 216</span><span class="stringliteral"> @return str Final obfuscated Python source code.</span></div>
|
||||
<div class="line"><span class="lineno"> 217</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 218</span> lines = ast.unparse(tree).split(<span class="stringliteral">'\n'</span>)</div>
|
||||
<div class="line"><span class="lineno"> 219</span> in_multiline = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 220</span> skip_for_n = 0</div>
|
||||
<div class="line"><span class="lineno"> 221</span> junk_count = 0</div>
|
||||
<div class="line"><span class="lineno"> 222</span> junk_snippets = []</div>
|
||||
<div class="line"><span class="lineno"> 223</span> </div>
|
||||
<div class="line"><span class="lineno"> 224</span> <span class="keyword">def </span>in_try_block(ls, ci):</div>
|
||||
<div class="line"><span class="lineno"> 225</span> c_line = ls[ci]</div>
|
||||
<div class="line"><span class="lineno"> 226</span> c_strip = c_line.lstrip()</div>
|
||||
<div class="line"><span class="lineno"> 227</span> c_indent = len(c_line) - len(c_strip)</div>
|
||||
<div class="line"><span class="lineno"> 228</span> saw_try = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 229</span> <span class="keywordflow">for</span> idx <span class="keywordflow">in</span> range(ci - 1, -1, -1):</div>
|
||||
<div class="line"><span class="lineno"> 230</span> l = ls[idx]</div>
|
||||
<div class="line"><span class="lineno"> 231</span> s = l.lstrip()</div>
|
||||
<div class="line"><span class="lineno"> 232</span> i_amount = len(l) - len(s)</div>
|
||||
<div class="line"><span class="lineno"> 233</span> <span class="keywordflow">if</span> s.startswith((<span class="stringliteral">"except "</span>, <span class="stringliteral">"finally:"</span>)) <span class="keywordflow">and</span> i_amount <= c_indent:</div>
|
||||
<div class="line"><span class="lineno"> 234</span> <span class="keywordflow">break</span></div>
|
||||
<div class="line"><span class="lineno"> 235</span> <span class="keywordflow">if</span> s.startswith(<span class="stringliteral">"try:"</span>) <span class="keywordflow">and</span> i_amount <= c_indent:</div>
|
||||
<div class="line"><span class="lineno"> 236</span> saw_try = <span class="keyword">True</span></div>
|
||||
<div class="line"><span class="lineno"> 237</span> <span class="keywordflow">break</span></div>
|
||||
<div class="line"><span class="lineno"> 238</span> <span class="keywordflow">return</span> saw_try</div>
|
||||
<div class="line"><span class="lineno"> 239</span> </div>
|
||||
<div class="line"><span class="lineno"> 240</span> <span class="comment"># We add these two lines at the top to ensure random is imported </span></div>
|
||||
<div class="line"><span class="lineno"> 241</span> result = [<span class="stringliteral">"import random"</span>]</div>
|
||||
<div class="line"><span class="lineno"> 242</span> </div>
|
||||
<div class="line"><span class="lineno"> 243</span> <span class="keywordflow">for</span> i, line <span class="keywordflow">in</span> enumerate(lines):</div>
|
||||
<div class="line"><span class="lineno"> 244</span> strip = line.lstrip()</div>
|
||||
<div class="line"><span class="lineno"> 245</span> <span class="keywordflow">if</span> <span class="stringliteral">'"""'</span> <span class="keywordflow">in</span> strip <span class="keywordflow">or</span> <span class="stringliteral">"'''"</span> <span class="keywordflow">in</span> strip:</div>
|
||||
<div class="line"><span class="lineno"> 246</span> in_multiline = <span class="keywordflow">not</span> in_multiline</div>
|
||||
<div class="line"><span class="lineno"> 247</span> </div>
|
||||
<div class="line"><span class="lineno"> 248</span> <span class="comment"># Conditions to inject junk</span></div>
|
||||
<div class="line"><span class="lineno"> 249</span> can_inject = (</div>
|
||||
<div class="line"><span class="lineno"> 250</span> <span class="keywordflow">not</span> in_multiline</div>
|
||||
<div class="line"><span class="lineno"> 251</span> <span class="keywordflow">and</span> <span class="keywordflow">not</span> in_try_block(lines, i)</div>
|
||||
<div class="line"><span class="lineno"> 252</span> <span class="keywordflow">and</span> skip_for_n == 0</div>
|
||||
<div class="line"><span class="lineno"> 253</span> <span class="keywordflow">and</span> <span class="keywordflow">not</span> strip.startswith(</div>
|
||||
<div class="line"><span class="lineno"> 254</span> (</div>
|
||||
<div class="line"><span class="lineno"> 255</span> <span class="stringliteral">"def "</span>, <span class="stringliteral">"class "</span>, <span class="stringliteral">"@"</span>, <span class="stringliteral">"try:"</span>, <span class="stringliteral">"except "</span>, <span class="stringliteral">"finally:"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 256</span> <span class="stringliteral">"import "</span>, <span class="stringliteral">"from "</span>, <span class="stringliteral">"elif "</span>, <span class="stringliteral">"else:"</span>, <span class="stringliteral">"return"</span>, <span class="stringliteral">"raise"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 257</span> <span class="stringliteral">"pass"</span>, <span class="stringliteral">"break"</span>, <span class="stringliteral">"continue"</span></div>
|
||||
<div class="line"><span class="lineno"> 258</span> )</div>
|
||||
<div class="line"><span class="lineno"> 259</span> )</div>
|
||||
<div class="line"><span class="lineno"> 260</span> )</div>
|
||||
<div class="line"><span class="lineno"> 261</span> <span class="keywordflow">if</span> can_inject:</div>
|
||||
<div class="line"><span class="lineno"> 262</span> junk = self.junk_gen.generate_junk()</div>
|
||||
<div class="line"><span class="lineno"> 263</span> result.append(junk)</div>
|
||||
<div class="line"><span class="lineno"> 264</span> junk_snippets.append(junk)</div>
|
||||
<div class="line"><span class="lineno"> 265</span> junk_count += 1</div>
|
||||
<div class="line"><span class="lineno"> 266</span> skip_for_n = random.randint(5, 15)</div>
|
||||
<div class="line"><span class="lineno"> 267</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 268</span> skip_for_n = max(0, skip_for_n - 1)</div>
|
||||
<div class="line"><span class="lineno"> 269</span> </div>
|
||||
<div class="line"><span class="lineno"> 270</span> result.append(line)</div>
|
||||
<div class="line"><span class="lineno"> 271</span> </div>
|
||||
<div class="line"><span class="lineno"> 272</span> <span class="keywordflow">if</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 273</span> self.debug_data[<span class="stringliteral">"junk_stats"</span>][<span class="stringliteral">"count"</span>] = junk_count</div>
|
||||
<div class="line"><span class="lineno"> 274</span> self.debug_data[<span class="stringliteral">"junk_stats"</span>][<span class="stringliteral">"snippets"</span>] = junk_snippets</div>
|
||||
<div class="line"><span class="lineno"> 275</span> </div>
|
||||
<div class="line"><span class="lineno"> 276</span> <span class="keywordflow">return</span> <span class="stringliteral">'\n'</span>.join(result)</div>
|
||||
<div class="line"><span class="lineno"> 277</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>, and <a class="el" href="obfuscator_8py_source.html#l00049">obfuscator.AdvancedObfuscator.junk_gen</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00278">obfuscator.AdvancedObfuscator.obfuscate()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac5445e1980a8addc56b5e9e4b134f2a7" name="ac5445e1980a8addc56b5e9e4b134f2a7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac5445e1980a8addc56b5e9e4b134f2a7">◆ </a></span>_rename_and_encrypt()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> ast.AST obfuscator.AdvancedObfuscator._rename_and_encrypt </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Rename identifiers and encrypt string literals in the AST.
|
||||
@param tree Input AST prior to control-flow transformations.
|
||||
@return ast.AST Transformed AST with consistent renames and encrypted strings.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00166">166</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 166</span> <span class="keyword">def </span>_rename_and_encrypt(self, tree: ast.AST) -> ast.AST:</div>
|
||||
<div class="line"><span class="lineno"> 167</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 168</span><span class="stringliteral"> @brief Rename identifiers and encrypt string literals in the AST.</span></div>
|
||||
<div class="line"><span class="lineno"> 169</span><span class="stringliteral"> @param tree Input AST prior to control-flow transformations.</span></div>
|
||||
<div class="line"><span class="lineno"> 170</span><span class="stringliteral"> @return ast.AST Transformed AST with consistent renames and encrypted strings.</span></div>
|
||||
<div class="line"><span class="lineno"> 171</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 172</span> <span class="comment"># First, build a comprehensive symbol tree</span></div>
|
||||
<div class="line"><span class="lineno"> 173</span> self.symbol_tree = self._build_symbol_tree(tree)</div>
|
||||
<div class="line"><span class="lineno"> 174</span> </div>
|
||||
<div class="line"><span class="lineno"> 175</span> <span class="comment"># Now perform the main transformation with consistent mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 176</span> transformer = RenameTransformer(</div>
|
||||
<div class="line"><span class="lineno"> 177</span> self.name_generator,</div>
|
||||
<div class="line"><span class="lineno"> 178</span> self.global_var_renames, </div>
|
||||
<div class="line"><span class="lineno"> 179</span> self.class_attr_mapping,</div>
|
||||
<div class="line"><span class="lineno"> 180</span> self.primary_key,</div>
|
||||
<div class="line"><span class="lineno"> 181</span> self.secondary_key,</div>
|
||||
<div class="line"><span class="lineno"> 182</span> self.salt,</div>
|
||||
<div class="line"><span class="lineno"> 183</span> debug_mode=self.debug_mode</div>
|
||||
<div class="line"><span class="lineno"> 184</span> )</div>
|
||||
<div class="line"><span class="lineno"> 185</span> </div>
|
||||
<div class="line"><span class="lineno"> 186</span> tree = transformer.visit(tree)</div>
|
||||
<div class="line"><span class="lineno"> 187</span> </div>
|
||||
<div class="line"><span class="lineno"> 188</span> <span class="comment"># Capture debug data from transformer if available</span></div>
|
||||
<div class="line"><span class="lineno"> 189</span> <span class="keywordflow">if</span> self.debug_mode <span class="keywordflow">and</span> hasattr(transformer, <span class="stringliteral">'debug_data'</span>):</div>
|
||||
<div class="line"><span class="lineno"> 190</span> self.debug_data[<span class="stringliteral">"variable_mappings"</span>] = transformer.debug_data.get(<span class="stringliteral">"variable_mappings"</span>, {})</div>
|
||||
<div class="line"><span class="lineno"> 191</span> self.debug_data[<span class="stringliteral">"string_encryption"</span>] = transformer.debug_data.get(<span class="stringliteral">"string_encryption"</span>, [])</div>
|
||||
<div class="line"><span class="lineno"> 192</span> </div>
|
||||
<div class="line"><span class="lineno"> 193</span> ast.fix_missing_locations(tree)</div>
|
||||
<div class="line"><span class="lineno"> 194</span> <span class="keywordflow">return</span> tree</div>
|
||||
<div class="line"><span class="lineno"> 195</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="obfuscator_8py_source.html#l00045">obfuscator.AdvancedObfuscator.class_attr_mapping</a>, <a class="el" href="attribute__transformer_8py_source.html#l00024">transformers.attribute_transformer.AttributeTransformer.class_attr_mapping</a>, <a class="el" href="rename_8py_source.html#l00027">transformers.rename.RenameTransformer.class_attr_mapping</a>, <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>, <a class="el" href="obfuscator_8py_source.html#l00046">obfuscator.AdvancedObfuscator.global_var_renames</a>, <a class="el" href="rename_8py_source.html#l00026">transformers.rename.RenameTransformer.global_var_renames</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>, <a class="el" href="obfuscator_8py_source.html#l00037">obfuscator.AdvancedObfuscator.primary_key</a>, <a class="el" href="encryption_8py_source.html#l00027">utils.encryption.StringEncryptor.primary_key</a>, <a class="el" href="obfuscator_8py_source.html#l00039">obfuscator.AdvancedObfuscator.salt</a>, <a class="el" href="encryption_8py_source.html#l00029">utils.encryption.StringEncryptor.salt</a>, <a class="el" href="obfuscator_8py_source.html#l00038">obfuscator.AdvancedObfuscator.secondary_key</a>, <a class="el" href="encryption_8py_source.html#l00028">utils.encryption.StringEncryptor.secondary_key</a>, and <a class="el" href="obfuscator_8py_source.html#l00042">obfuscator.AdvancedObfuscator.symbol_tree</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00278">obfuscator.AdvancedObfuscator.obfuscate()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa5653d0e597359d527b772223acb9c54" name="aa5653d0e597359d527b772223acb9c54"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa5653d0e597359d527b772223acb9c54">◆ </a></span>detect_issues()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.detect_issues </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Run integrity checks and record any issues to debug data.
|
||||
@details Aggregates issues from the symbol tree and legacy name-collision
|
||||
checks to help diagnose transformation inconsistencies.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00078">78</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 78</span> <span class="keyword">def </span>detect_issues(self):</div>
|
||||
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"> @brief Run integrity checks and record any issues to debug data.</span></div>
|
||||
<div class="line"><span class="lineno"> 81</span><span class="stringliteral"> @details Aggregates issues from the symbol tree and legacy name-collision</span></div>
|
||||
<div class="line"><span class="lineno"> 82</span><span class="stringliteral"> checks to help diagnose transformation inconsistencies.</span></div>
|
||||
<div class="line"><span class="lineno"> 83</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 84</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 86</span> </div>
|
||||
<div class="line"><span class="lineno"> 87</span> <span class="comment"># First check issues in the symbol tree</span></div>
|
||||
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">if</span> self.symbol_tree:</div>
|
||||
<div class="line"><span class="lineno"> 89</span> symbol_tree_issues = self.symbol_tree.check_for_issues()</div>
|
||||
<div class="line"><span class="lineno"> 90</span> <span class="keywordflow">for</span> issue <span class="keywordflow">in</span> symbol_tree_issues:</div>
|
||||
<div class="line"><span class="lineno"> 91</span> self.debug_data[<span class="stringliteral">"issues_detected"</span>].append(issue)</div>
|
||||
<div class="line"><span class="lineno"> 92</span> </div>
|
||||
<div class="line"><span class="lineno"> 93</span> <span class="comment"># Legacy checks for backwards compatibility</span></div>
|
||||
<div class="line"><span class="lineno"> 94</span> used_renames = set()</div>
|
||||
<div class="line"><span class="lineno"> 95</span> duplicates = []</div>
|
||||
<div class="line"><span class="lineno"> 96</span> </div>
|
||||
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">for</span> orig, renamed <span class="keywordflow">in</span> self.global_var_renames.items():</div>
|
||||
<div class="line"><span class="lineno"> 98</span> <span class="keywordflow">if</span> renamed <span class="keywordflow">in</span> used_renames:</div>
|
||||
<div class="line"><span class="lineno"> 99</span> duplicates.append(renamed)</div>
|
||||
<div class="line"><span class="lineno"> 100</span> used_renames.add(renamed)</div>
|
||||
<div class="line"><span class="lineno"> 101</span> </div>
|
||||
<div class="line"><span class="lineno"> 102</span> <span class="comment"># Check if our renamed values match any original names (could lead to conflicts)</span></div>
|
||||
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">if</span> renamed <span class="keywordflow">in</span> self.global_var_renames.keys():</div>
|
||||
<div class="line"><span class="lineno"> 104</span> self.debug_data[<span class="stringliteral">"issues_detected"</span>].append({</div>
|
||||
<div class="line"><span class="lineno"> 105</span> <span class="stringliteral">"type"</span>: <span class="stringliteral">"name_collision"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 106</span> <span class="stringliteral">"info"</span>: f<span class="stringliteral">"Renamed value '{renamed}' matches an original name"</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="keywordflow">if</span> duplicates:</div>
|
||||
<div class="line"><span class="lineno"> 110</span> self.debug_data[<span class="stringliteral">"issues_detected"</span>].append({</div>
|
||||
<div class="line"><span class="lineno"> 111</span> <span class="stringliteral">"type"</span>: <span class="stringliteral">"duplicate_names"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 112</span> <span class="stringliteral">"names"</span>: duplicates</div>
|
||||
<div class="line"><span class="lineno"> 113</span> })</div>
|
||||
<div class="line"><span class="lineno"> 114</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>, <a class="el" href="obfuscator_8py_source.html#l00046">obfuscator.AdvancedObfuscator.global_var_renames</a>, <a class="el" href="rename_8py_source.html#l00026">transformers.rename.RenameTransformer.global_var_renames</a>, and <a class="el" href="obfuscator_8py_source.html#l00042">obfuscator.AdvancedObfuscator.symbol_tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="add2f1a570ef241ad62e977d434973ddf" name="add2f1a570ef241ad62e977d434973ddf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#add2f1a570ef241ad62e977d434973ddf">◆ </a></span>log_debug()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.log_debug </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>category</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>data</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Append a structured debug entry if debug mode is enabled.
|
||||
@param category Logical stage or component name.
|
||||
@param data Arbitrary JSON-serializable payload to record.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00065">65</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 65</span> <span class="keyword">def </span>log_debug(self, category, data):</div>
|
||||
<div class="line"><span class="lineno"> 66</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"> @brief Append a structured debug entry if debug mode is enabled.</span></div>
|
||||
<div class="line"><span class="lineno"> 68</span><span class="stringliteral"> @param category Logical stage or component name.</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span><span class="stringliteral"> @param data Arbitrary JSON-serializable payload to record.</span></div>
|
||||
<div class="line"><span class="lineno"> 70</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">if</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 72</span> self.debug_data[<span class="stringliteral">"transformations"</span>].append({</div>
|
||||
<div class="line"><span class="lineno"> 73</span> <span class="stringliteral">"stage"</span>: category,</div>
|
||||
<div class="line"><span class="lineno"> 74</span> <span class="stringliteral">"data"</span>: data,</div>
|
||||
<div class="line"><span class="lineno"> 75</span> <span class="stringliteral">"timestamp"</span>: datetime.now().isoformat()</div>
|
||||
<div class="line"><span class="lineno"> 76</span> })</div>
|
||||
<div class="line"><span class="lineno"> 77</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, and <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="control__flow_8py_source.html#l00178">transformers.control_flow.ControlFlowFlattener.generate_junk_code()</a>, <a class="el" href="control__flow_8py_source.html#l00424">transformers.control_flow.ControlFlowFlattener.visit_Break()</a>, <a class="el" href="control__flow_8py_source.html#l00442">transformers.control_flow.ControlFlowFlattener.visit_Continue()</a>, <a class="el" href="control__flow_8py_source.html#l00259">transformers.control_flow.ControlFlowFlattener.visit_For()</a>, <a class="el" href="control__flow_8py_source.html#l00044">transformers.control_flow.ControlFlowFlattener.visit_FunctionDef()</a>, <a class="el" href="control__flow_8py_source.html#l00222">transformers.control_flow.ControlFlowFlattener.visit_If()</a>, <a class="el" href="control__flow_8py_source.html#l00463">transformers.control_flow.ControlFlowFlattener.visit_Return()</a>, and <a class="el" href="control__flow_8py_source.html#l00365">transformers.control_flow.ControlFlowFlattener.visit_While()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0bae5229abba4f829e01b84cb9c9ffd7" name="a0bae5229abba4f829e01b84cb9c9ffd7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bae5229abba4f829e01b84cb9c9ffd7">◆ </a></span>obfuscate()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str obfuscator.AdvancedObfuscator.obfuscate </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>code</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief End-to-end obfuscation entry point.
|
||||
@param code Original Python source code.
|
||||
@return str Obfuscated Python source code.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00278">278</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 278</span> <span class="keyword">def </span>obfuscate(self, code: str) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 279</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 280</span><span class="stringliteral"> @brief End-to-end obfuscation entry point.</span></div>
|
||||
<div class="line"><span class="lineno"> 281</span><span class="stringliteral"> @param code Original Python source code.</span></div>
|
||||
<div class="line"><span class="lineno"> 282</span><span class="stringliteral"> @return str Obfuscated Python source code.</span></div>
|
||||
<div class="line"><span class="lineno"> 283</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 284</span> tree = ast.parse(code)</div>
|
||||
<div class="line"><span class="lineno"> 285</span> </div>
|
||||
<div class="line"><span class="lineno"> 286</span> <span class="comment"># Step 1: Rename and encrypt</span></div>
|
||||
<div class="line"><span class="lineno"> 287</span> tree = self._rename_and_encrypt(tree)</div>
|
||||
<div class="line"><span class="lineno"> 288</span> </div>
|
||||
<div class="line"><span class="lineno"> 289</span> <span class="comment"># Step 2: Flatten control flow</span></div>
|
||||
<div class="line"><span class="lineno"> 290</span> tree = self._flatten_control_flow(tree)</div>
|
||||
<div class="line"><span class="lineno"> 291</span> </div>
|
||||
<div class="line"><span class="lineno"> 292</span> <span class="comment"># Step 3: Generate final obfuscated code</span></div>
|
||||
<div class="line"><span class="lineno"> 293</span> final_code = self._generate_final_code(tree)</div>
|
||||
<div class="line"><span class="lineno"> 294</span> </div>
|
||||
<div class="line"><span class="lineno"> 295</span> <span class="keywordflow">if</span> self.debug_mode:</div>
|
||||
<div class="line"><span class="lineno"> 296</span> debug_output_path = os.path.join(<span class="stringliteral">"debug"</span>, f<span class="stringliteral">"debug_{self.debug_data['timestamp']}.json"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 297</span> os.makedirs(os.path.dirname(debug_output_path), exist_ok=<span class="keyword">True</span>)</div>
|
||||
<div class="line"><span class="lineno"> 298</span> <span class="keyword">with</span> open(debug_output_path, <span class="stringliteral">"w"</span>) <span class="keyword">as</span> debug_file:</div>
|
||||
<div class="line"><span class="lineno"> 299</span> json.dump(self.debug_data, debug_file, indent=4)</div>
|
||||
<div class="line"><span class="lineno"> 300</span> </div>
|
||||
<div class="line"><span class="lineno"> 301</span> <span class="keywordflow">return</span> final_code</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00196">obfuscator.AdvancedObfuscator._flatten_control_flow()</a>, <a class="el" href="obfuscator_8py_source.html#l00212">obfuscator.AdvancedObfuscator._generate_final_code()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="obfuscator_8py_source.html#l00053">obfuscator.AdvancedObfuscator.debug_data</a>, <a class="el" href="control__flow_8py_source.html#l00030">transformers.control_flow.ControlFlowFlattener.debug_data</a>, <a class="el" href="rename_8py_source.html#l00049">transformers.rename.RenameTransformer.debug_data</a>, <a class="el" href="obfuscator_8py_source.html#l00052">obfuscator.AdvancedObfuscator.debug_mode</a>, <a class="el" href="control__flow_8py_source.html#l00026">transformers.control_flow.ControlFlowFlattener.debug_mode</a>, and <a class="el" href="rename_8py_source.html#l00047">transformers.rename.RenameTransformer.debug_mode</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="aef5016cadd430585e9e3bf6cd651766b" name="aef5016cadd430585e9e3bf6cd651766b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aef5016cadd430585e9e3bf6cd651766b">◆ </a></span>class_attr_mapping</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.class_attr_mapping</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00045">45</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4c05fe283ed840c34d9a4b1b8b90297b" name="a4c05fe283ed840c34d9a4b1b8b90297b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4c05fe283ed840c34d9a4b1b8b90297b">◆ </a></span>debug_data</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.debug_data</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00053">53</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00196">obfuscator.AdvancedObfuscator._flatten_control_flow()</a>, <a class="el" href="obfuscator_8py_source.html#l00212">obfuscator.AdvancedObfuscator._generate_final_code()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="obfuscator_8py_source.html#l00078">obfuscator.AdvancedObfuscator.detect_issues()</a>, <a class="el" href="obfuscator_8py_source.html#l00065">obfuscator.AdvancedObfuscator.log_debug()</a>, <a class="el" href="control__flow_8py_source.html#l00036">transformers.control_flow.ControlFlowFlattener.log_debug()</a>, <a class="el" href="rename_8py_source.html#l00056">transformers.rename.RenameTransformer.log_debug()</a>, <a class="el" href="obfuscator_8py_source.html#l00278">obfuscator.AdvancedObfuscator.obfuscate()</a>, and <a class="el" href="control__flow_8py_source.html#l00044">transformers.control_flow.ControlFlowFlattener.visit_FunctionDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a755ab23358e464b4a4d8ea144d84c5db" name="a755ab23358e464b4a4d8ea144d84c5db"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a755ab23358e464b4a4d8ea144d84c5db">◆ </a></span>debug_mode</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.debug_mode</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00052">52</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="obfuscator_8py_source.html#l00196">obfuscator.AdvancedObfuscator._flatten_control_flow()</a>, <a class="el" href="obfuscator_8py_source.html#l00212">obfuscator.AdvancedObfuscator._generate_final_code()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="obfuscator_8py_source.html#l00078">obfuscator.AdvancedObfuscator.detect_issues()</a>, <a class="el" href="control__flow_8py_source.html#l00178">transformers.control_flow.ControlFlowFlattener.generate_junk_code()</a>, <a class="el" href="obfuscator_8py_source.html#l00065">obfuscator.AdvancedObfuscator.log_debug()</a>, <a class="el" href="control__flow_8py_source.html#l00036">transformers.control_flow.ControlFlowFlattener.log_debug()</a>, <a class="el" href="rename_8py_source.html#l00056">transformers.rename.RenameTransformer.log_debug()</a>, <a class="el" href="obfuscator_8py_source.html#l00278">obfuscator.AdvancedObfuscator.obfuscate()</a>, <a class="el" href="control__flow_8py_source.html#l00424">transformers.control_flow.ControlFlowFlattener.visit_Break()</a>, <a class="el" href="control__flow_8py_source.html#l00442">transformers.control_flow.ControlFlowFlattener.visit_Continue()</a>, <a class="el" href="control__flow_8py_source.html#l00259">transformers.control_flow.ControlFlowFlattener.visit_For()</a>, <a class="el" href="control__flow_8py_source.html#l00044">transformers.control_flow.ControlFlowFlattener.visit_FunctionDef()</a>, <a class="el" href="control__flow_8py_source.html#l00222">transformers.control_flow.ControlFlowFlattener.visit_If()</a>, <a class="el" href="control__flow_8py_source.html#l00463">transformers.control_flow.ControlFlowFlattener.visit_Return()</a>, and <a class="el" href="control__flow_8py_source.html#l00365">transformers.control_flow.ControlFlowFlattener.visit_While()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3ec1e13df931c1508ce87c1d43319d9e" name="a3ec1e13df931c1508ce87c1d43319d9e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3ec1e13df931c1508ce87c1d43319d9e">◆ </a></span>global_var_renames</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.global_var_renames</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00046">46</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="obfuscator_8py_source.html#l00078">obfuscator.AdvancedObfuscator.detect_issues()</a>, <a class="el" href="rename_8py_source.html#l00201">transformers.rename.RenameTransformer.visit_comprehension()</a>, <a class="el" href="rename_8py_source.html#l00283">transformers.rename.RenameTransformer.visit_FunctionDef()</a>, <a class="el" href="rename_8py_source.html#l00150">transformers.rename.RenameTransformer.visit_Global()</a>, <a class="el" href="rename_8py_source.html#l00063">transformers.rename.RenameTransformer.visit_Module()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aaae69f3be557e46d9538d68caa5f2959" name="aaae69f3be557e46d9538d68caa5f2959"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaae69f3be557e46d9538d68caa5f2959">◆ </a></span>junk_gen</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.junk_gen</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00049">49</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00212">obfuscator.AdvancedObfuscator._generate_final_code()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abaeb1135a6445bef98ac6574f827d6df" name="abaeb1135a6445bef98ac6574f827d6df"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abaeb1135a6445bef98ac6574f827d6df">◆ </a></span>name_generator</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.name_generator</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00034">34</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="junk__gen_8py_source.html#l00023">utils.junk_gen.JunkGenerator.add_junk()</a>, <a class="el" href="junk__gen_8py_source.html#l00052">utils.junk_gen.JunkGenerator.generate_junk()</a>, <a class="el" href="rename_8py_source.html#l00125">transformers.rename.RenameTransformer.scan_class_methods()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00201">transformers.rename.RenameTransformer.visit_comprehension()</a>, <a class="el" href="rename_8py_source.html#l00283">transformers.rename.RenameTransformer.visit_FunctionDef()</a>, <a class="el" href="rename_8py_source.html#l00150">transformers.rename.RenameTransformer.visit_Global()</a>, <a class="el" href="rename_8py_source.html#l00063">transformers.rename.RenameTransformer.visit_Module()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6b389da576cc61f0404f71d31768ea80" name="a6b389da576cc61f0404f71d31768ea80"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6b389da576cc61f0404f71d31768ea80">◆ </a></span>primary_key</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.primary_key</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00037">37</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aef1166ac92f95772a86271833cf0dc8d" name="aef1166ac92f95772a86271833cf0dc8d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aef1166ac92f95772a86271833cf0dc8d">◆ </a></span>salt</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.salt</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00039">39</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5a777b8774460385c5640e6a7fd8abd3" name="a5a777b8774460385c5640e6a7fd8abd3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5a777b8774460385c5640e6a7fd8abd3">◆ </a></span>secondary_key</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.secondary_key</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00038">38</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a663f90581cbf805979af75ac48f400a3" name="a663f90581cbf805979af75ac48f400a3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a663f90581cbf805979af75ac48f400a3">◆ </a></span>symbol_tree</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.symbol_tree</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00042">42</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="obfuscator_8py_source.html#l00078">obfuscator.AdvancedObfuscator.detect_issues()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9df466e5d1c16e8f5209573b5283fd2e" name="a9df466e5d1c16e8f5209573b5283fd2e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9df466e5d1c16e8f5209573b5283fd2e">◆ </a></span>used_names</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">obfuscator.AdvancedObfuscator.used_names</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="obfuscator_8py_source.html#l00033">33</a> of file <a class="el" href="obfuscator_8py_source.html">obfuscator.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="name__gen_8py_source.html#l00033">utils.name_gen.NameGenerator.generate_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="obfuscator_8py_source.html">obfuscator.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceobfuscator.html">obfuscator</a></li><li class="navelem"><a class="el" href="classobfuscator_1_1AdvancedObfuscator.html">AdvancedObfuscator</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,22 @@
|
||||
var classobfuscator_1_1AdvancedObfuscator =
|
||||
[
|
||||
[ "__init__", "classobfuscator_1_1AdvancedObfuscator.html#aaffc65fd026066b5db7b28c767113b2b", null ],
|
||||
[ "_build_symbol_tree", "classobfuscator_1_1AdvancedObfuscator.html#a424ba5de0c9a2ea94ffe39f58b6a04b8", null ],
|
||||
[ "_flatten_control_flow", "classobfuscator_1_1AdvancedObfuscator.html#aab379b03fecc184395d84df866849bdb", null ],
|
||||
[ "_generate_final_code", "classobfuscator_1_1AdvancedObfuscator.html#ac72c695b2382f94015e9133254c60ba8", null ],
|
||||
[ "_rename_and_encrypt", "classobfuscator_1_1AdvancedObfuscator.html#ac5445e1980a8addc56b5e9e4b134f2a7", null ],
|
||||
[ "detect_issues", "classobfuscator_1_1AdvancedObfuscator.html#aa5653d0e597359d527b772223acb9c54", null ],
|
||||
[ "log_debug", "classobfuscator_1_1AdvancedObfuscator.html#add2f1a570ef241ad62e977d434973ddf", null ],
|
||||
[ "obfuscate", "classobfuscator_1_1AdvancedObfuscator.html#a0bae5229abba4f829e01b84cb9c9ffd7", null ],
|
||||
[ "class_attr_mapping", "classobfuscator_1_1AdvancedObfuscator.html#aef5016cadd430585e9e3bf6cd651766b", null ],
|
||||
[ "debug_data", "classobfuscator_1_1AdvancedObfuscator.html#a4c05fe283ed840c34d9a4b1b8b90297b", null ],
|
||||
[ "debug_mode", "classobfuscator_1_1AdvancedObfuscator.html#a755ab23358e464b4a4d8ea144d84c5db", null ],
|
||||
[ "global_var_renames", "classobfuscator_1_1AdvancedObfuscator.html#a3ec1e13df931c1508ce87c1d43319d9e", null ],
|
||||
[ "junk_gen", "classobfuscator_1_1AdvancedObfuscator.html#aaae69f3be557e46d9538d68caa5f2959", null ],
|
||||
[ "name_generator", "classobfuscator_1_1AdvancedObfuscator.html#abaeb1135a6445bef98ac6574f827d6df", null ],
|
||||
[ "primary_key", "classobfuscator_1_1AdvancedObfuscator.html#a6b389da576cc61f0404f71d31768ea80", null ],
|
||||
[ "salt", "classobfuscator_1_1AdvancedObfuscator.html#aef1166ac92f95772a86271833cf0dc8d", null ],
|
||||
[ "secondary_key", "classobfuscator_1_1AdvancedObfuscator.html#a5a777b8774460385c5640e6a7fd8abd3", null ],
|
||||
[ "symbol_tree", "classobfuscator_1_1AdvancedObfuscator.html#a663f90581cbf805979af75ac48f400a3", null ],
|
||||
[ "used_names", "classobfuscator_1_1AdvancedObfuscator.html#a9df466e5d1c16e8f5209573b5283fd2e", null ]
|
||||
];
|
||||
@@ -0,0 +1,114 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.attribute_transformer.AttributeTransformer Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50">__init__</a>(self, Dict[str, Dict[str, str]] class_attr_mapping, Dict[str, str] class_renames)</td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a></td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a></td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e">visit_Attribute</a>(self, node)</td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91">visit_ClassDef</a>(self, node)</td><td class="entry"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">transformers.attribute_transformer.AttributeTransformer</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,368 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.attribute_transformer.AttributeTransformer Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.attribute_transformer.AttributeTransformer Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.attribute_transformer.AttributeTransformer:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1attribute__transformer_1_1AttributeTransformer__inherit__graph.png" border="0" usemap="#atransformers_8attribute__transformer_8AttributeTransformer_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.attribute_transformer.AttributeTransformer:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1attribute__transformer_1_1AttributeTransformer__coll__graph.png" border="0" usemap="#atransformers_8attribute__transformer_8AttributeTransformer_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:a8bc2a45cb2e19075483d7b5b9c98ed50" id="r_a8bc2a45cb2e19075483d7b5b9c98ed50"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50">__init__</a> (self, Dict[str, Dict[str, str]] <a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a>, Dict[str, str] <a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a>)</td></tr>
|
||||
<tr class="separator:a8bc2a45cb2e19075483d7b5b9c98ed50"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abe7e476c5bb7ecf22c0c5f7747cd1a9e" id="r_abe7e476c5bb7ecf22c0c5f7747cd1a9e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e">visit_Attribute</a> (self, node)</td></tr>
|
||||
<tr class="separator:abe7e476c5bb7ecf22c0c5f7747cd1a9e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa0bde339bf61f794e984dd890db8fd91" id="r_aa0bde339bf61f794e984dd890db8fd91"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91">visit_ClassDef</a> (self, node)</td></tr>
|
||||
<tr class="separator:aa0bde339bf61f794e984dd890db8fd91"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a2a45c1b9df1d719347a72d72cbb2891c" id="r_a2a45c1b9df1d719347a72d72cbb2891c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c">class_attr_mapping</a></td></tr>
|
||||
<tr class="separator:a2a45c1b9df1d719347a72d72cbb2891c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ade8fc4fc84a3bdddfd346bc95b711f13" id="r_ade8fc4fc84a3bdddfd346bc95b711f13"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13">class_renames</a></td></tr>
|
||||
<tr class="separator:ade8fc4fc84a3bdddfd346bc95b711f13"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad8426d8acb4d7fd20e18468414a15d5c" id="r_ad8426d8acb4d7fd20e18468414a15d5c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c">current_class</a></td></tr>
|
||||
<tr class="separator:ad8426d8acb4d7fd20e18468414a15d5c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Transform attribute access expressions for consistency.
|
||||
@details Handles self.method and self.attr translations based on provided
|
||||
mappings to keep calls and attributes aligned with obfuscated names.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00011">11</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a8bc2a45cb2e19075483d7b5b9c98ed50" name="a8bc2a45cb2e19075483d7b5b9c98ed50"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8bc2a45cb2e19075483d7b5b9c98ed50">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Dict[str, Dict[str, str]] </td>
|
||||
<td class="paramname"><em>class_attr_mapping</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Dict[str, str] </td>
|
||||
<td class="paramname"><em>class_renames</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Initialize transformer with mapping dictionaries.
|
||||
@param class_attr_mapping Maps class_name -> {attr_name -> obfuscated_attr_name}
|
||||
@param class_renames Maps original_class_name -> obfuscated_class_name
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00018">18</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 18</span> <span class="keyword">def </span>__init__(self, class_attr_mapping: Dict[str, Dict[str, str]], class_renames: Dict[str, str]):</div>
|
||||
<div class="line"><span class="lineno"> 19</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 20</span><span class="stringliteral"> @brief Initialize transformer with mapping dictionaries.</span></div>
|
||||
<div class="line"><span class="lineno"> 21</span><span class="stringliteral"> @param class_attr_mapping Maps class_name -> {attr_name -> obfuscated_attr_name}</span></div>
|
||||
<div class="line"><span class="lineno"> 22</span><span class="stringliteral"> @param class_renames Maps original_class_name -> obfuscated_class_name</span></div>
|
||||
<div class="line"><span class="lineno"> 23</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 24</span> self.class_attr_mapping = class_attr_mapping</div>
|
||||
<div class="line"><span class="lineno"> 25</span> self.class_renames = class_renames</div>
|
||||
<div class="line"><span class="lineno"> 26</span> self.current_class: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 27</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="abe7e476c5bb7ecf22c0c5f7747cd1a9e" name="abe7e476c5bb7ecf22c0c5f7747cd1a9e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abe7e476c5bb7ecf22c0c5f7747cd1a9e">◆ </a></span>visit_Attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.visit_Attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Transform attribute access for consistency within a class.
|
||||
@param node ast.Attribute node to transform.
|
||||
@return ast.AST Updated attribute node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00050">50</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 50</span> <span class="keyword">def </span>visit_Attribute(self, node):</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 52</span><span class="stringliteral"> @brief Transform attribute access for consistency within a class.</span></div>
|
||||
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"> @param node ast.Attribute node to transform.</span></div>
|
||||
<div class="line"><span class="lineno"> 54</span><span class="stringliteral"> @return ast.AST Updated attribute node.</span></div>
|
||||
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="comment"># First process any nested attributes</span></div>
|
||||
<div class="line"><span class="lineno"> 57</span> node = self.generic_visit(node)</div>
|
||||
<div class="line"><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><span class="lineno"> 59</span> <span class="comment"># Handle self.attr references within a class</span></div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">if</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span> <span class="keywordflow">and</span> self.current_class:</div>
|
||||
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">if</span> self.current_class <span class="keywordflow">in</span> self.class_attr_mapping:</div>
|
||||
<div class="line"><span class="lineno"> 62</span> attr_map = self.class_attr_mapping[self.current_class]</div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="comment"># Only substitute if node.attr is still in its original form (a mapping key)</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> node.attr <span class="keywordflow">in</span> attr_map <span class="keywordflow">and</span> node.attr != attr_map[node.attr]:</div>
|
||||
<div class="line"><span class="lineno"> 65</span> node.attr = attr_map[node.attr]</div>
|
||||
<div class="line"><span class="lineno"> 66</span> </div>
|
||||
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">return</span> node</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00045">obfuscator.AdvancedObfuscator.class_attr_mapping</a>, <a class="el" href="attribute__transformer_8py_source.html#l00024">transformers.attribute_transformer.AttributeTransformer.class_attr_mapping</a>, <a class="el" href="rename_8py_source.html#l00027">transformers.rename.RenameTransformer.class_attr_mapping</a>, <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, and <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa0bde339bf61f794e984dd890db8fd91" name="aa0bde339bf61f794e984dd890db8fd91"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa0bde339bf61f794e984dd890db8fd91">◆ </a></span>visit_ClassDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Track the current class and process its body.
|
||||
@param node ast.ClassDef being visited.
|
||||
@return ast.ClassDef Potentially modified node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00028">28</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 28</span> <span class="keyword">def </span>visit_ClassDef(self, node):</div>
|
||||
<div class="line"><span class="lineno"> 29</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> @brief Track the current class and process its body.</span></div>
|
||||
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"> @param node ast.ClassDef being visited.</span></div>
|
||||
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"> @return ast.ClassDef Potentially modified node.</span></div>
|
||||
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 34</span> old_class = self.current_class</div>
|
||||
<div class="line"><span class="lineno"> 35</span> </div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="comment"># Get the obfuscated name for this class</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span> class_name = node.name</div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">in</span> self.class_renames:</div>
|
||||
<div class="line"><span class="lineno"> 39</span> self.current_class = self.class_renames[class_name]</div>
|
||||
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 41</span> self.current_class = class_name</div>
|
||||
<div class="line"><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><span class="lineno"> 43</span> <span class="comment"># Process the class body</span></div>
|
||||
<div class="line"><span class="lineno"> 44</span> node = self.generic_visit(node)</div>
|
||||
<div class="line"><span class="lineno"> 45</span> </div>
|
||||
<div class="line"><span class="lineno"> 46</span> <span class="comment"># Restore the previous class context</span></div>
|
||||
<div class="line"><span class="lineno"> 47</span> self.current_class = old_class</div>
|
||||
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><span class="lineno"> 49</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00025">transformers.attribute_transformer.AttributeTransformer.class_renames</a>, <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, and <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a2a45c1b9df1d719347a72d72cbb2891c" name="a2a45c1b9df1d719347a72d72cbb2891c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2a45c1b9df1d719347a72d72cbb2891c">◆ </a></span>class_attr_mapping</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.class_attr_mapping</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00024">24</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ade8fc4fc84a3bdddfd346bc95b711f13" name="ade8fc4fc84a3bdddfd346bc95b711f13"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ade8fc4fc84a3bdddfd346bc95b711f13">◆ </a></span>class_renames</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.class_renames</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00025">25</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00014">transformers.class_analyzer.ClassMethodMap.__init__()</a>, and <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad8426d8acb4d7fd20e18468414a15d5c" name="ad8426d8acb4d7fd20e18468414a15d5c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad8426d8acb4d7fd20e18468414a15d5c">◆ </a></span>current_class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.attribute_transformer.AttributeTransformer.current_class</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="attribute__transformer_8py_source.html#l00039">39</a> of file <a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00141">transformers.class_analyzer.ClassAnalyzer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00094">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00279">transformers.class_mapper.ClassTransformer.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>, and <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="attribute__transformer_8py_source.html">attribute_transformer.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1attribute__transformer.html">attribute_transformer</a></li><li class="navelem"><a class="el" href="classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html">AttributeTransformer</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
var classtransformers_1_1attribute__transformer_1_1AttributeTransformer =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a8bc2a45cb2e19075483d7b5b9c98ed50", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#abe7e476c5bb7ecf22c0c5f7747cd1a9e", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#aa0bde339bf61f794e984dd890db8fd91", null ],
|
||||
[ "class_attr_mapping", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#a2a45c1b9df1d719347a72d72cbb2891c", null ],
|
||||
[ "class_renames", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ade8fc4fc84a3bdddfd346bc95b711f13", null ],
|
||||
[ "current_class", "classtransformers_1_1attribute__transformer_1_1AttributeTransformer.html#ad8426d8acb4d7fd20e18468414a15d5c", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.attribute_transformer.AttributeTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.attribute\l_transformer.AttributeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast::NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.attribute_transformer.AttributeTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.attribute\l_transformer.AttributeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast::NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.class_analyzer.ClassAnalyzer Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef">__init__</a>(self, name_generator)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861">_ensure_consistent_method_mapping</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88">_resolve_inheritance</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6">analyze</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745">visit_Attribute</a>(self, node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021">visit_attribute_assign</a>(self, node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b">visit_ClassDef</a>(self, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">transformers.class_analyzer.ClassAnalyzer</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,624 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.class_analyzer.ClassAnalyzer Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.class_analyzer.ClassAnalyzer Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.class_analyzer.ClassAnalyzer:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__analyzer_1_1ClassAnalyzer__inherit__graph.png" border="0" usemap="#atransformers_8class__analyzer_8ClassAnalyzer_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.class_analyzer.ClassAnalyzer:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__analyzer_1_1ClassAnalyzer__coll__graph.png" border="0" usemap="#atransformers_8class__analyzer_8ClassAnalyzer_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:a4145a8d6f13f330351df501d2c2acbef" id="r_a4145a8d6f13f330351df501d2c2acbef"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef">__init__</a> (self, <a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a>)</td></tr>
|
||||
<tr class="separator:a4145a8d6f13f330351df501d2c2acbef"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8a4d1b9cb7d27cbe667e8317d482b5b6" id="r_a8a4d1b9cb7d27cbe667e8317d482b5b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6">analyze</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:a8a4d1b9cb7d27cbe667e8317d482b5b6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab4fe116f7c092817a6cf585f965dd745" id="r_ab4fe116f7c092817a6cf585f965dd745"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745">visit_Attribute</a> (self, node)</td></tr>
|
||||
<tr class="separator:ab4fe116f7c092817a6cf585f965dd745"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a691ad5c2629a84762bf0f8ae82735021" id="r_a691ad5c2629a84762bf0f8ae82735021"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021">visit_attribute_assign</a> (self, node)</td></tr>
|
||||
<tr class="separator:a691ad5c2629a84762bf0f8ae82735021"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a07cf975c27127718a00327be06695e5b" id="r_a07cf975c27127718a00327be06695e5b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b">visit_ClassDef</a> (self, ast.ClassDef node)</td></tr>
|
||||
<tr class="separator:a07cf975c27127718a00327be06695e5b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a602830de65e4ef41bcb031062d9bb169" id="r_a602830de65e4ef41bcb031062d9bb169"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169">current_class</a></td></tr>
|
||||
<tr class="separator:a602830de65e4ef41bcb031062d9bb169"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a739a5193c309c36bd99184aba762a790" id="r_a739a5193c309c36bd99184aba762a790"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790">method_map</a></td></tr>
|
||||
<tr class="separator:a739a5193c309c36bd99184aba762a790"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae2b710d2e7aa346663d6086b95b0230d" id="r_ae2b710d2e7aa346663d6086b95b0230d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d">name_generator</a></td></tr>
|
||||
<tr class="separator:ae2b710d2e7aa346663d6086b95b0230d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a525167f88e08ed9d456beb58698a5861" id="r_a525167f88e08ed9d456beb58698a5861"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861">_ensure_consistent_method_mapping</a> (self)</td></tr>
|
||||
<tr class="separator:a525167f88e08ed9d456beb58698a5861"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7bc086b8807e7b51c4237d0b20b35c88" id="r_a7bc086b8807e7b51c4237d0b20b35c88"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88">_resolve_inheritance</a> (self)</td></tr>
|
||||
<tr class="separator:a7bc086b8807e7b51c4237d0b20b35c88"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Analyze classes for consistent method/attribute renaming.
|
||||
@details Ensures self.method() calls match def method() definitions and records inheritance.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00028">28</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a4145a8d6f13f330351df501d2c2acbef" name="a4145a8d6f13f330351df501d2c2acbef"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4145a8d6f13f330351df501d2c2acbef">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>name_generator</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00033">33</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 33</span> <span class="keyword">def </span>__init__(self, name_generator):</div>
|
||||
<div class="line"><span class="lineno"> 34</span> self.name_generator = name_generator</div>
|
||||
<div class="line"><span class="lineno"> 35</span> self.method_map = ClassMethodMap()</div>
|
||||
<div class="line"><span class="lineno"> 36</span> self.current_class = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span> </div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="comment"># To avoid duplicate scanning</span></div>
|
||||
<div class="line"><span class="lineno"> 39</span> self.scanned_classes: Set[str] = set()</div>
|
||||
<div class="line"><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="comment"># Track method calls within each class</span></div>
|
||||
<div class="line"><span class="lineno"> 42</span> self.method_calls: Dict[str, Set[str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 43</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a525167f88e08ed9d456beb58698a5861" name="a525167f88e08ed9d456beb58698a5861"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a525167f88e08ed9d456beb58698a5861">◆ </a></span>_ensure_consistent_method_mapping()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Ensure all self.method() calls have mappings, even if undefined in class.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00155">155</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 155</span> <span class="keyword">def </span>_ensure_consistent_method_mapping(self):</div>
|
||||
<div class="line"><span class="lineno"> 156</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 157</span><span class="stringliteral"> @brief Ensure all self.method() calls have mappings, even if undefined in class.</span></div>
|
||||
<div class="line"><span class="lineno"> 158</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 159</span> <span class="keywordflow">for</span> class_name, method_calls <span class="keywordflow">in</span> self.method_calls.items():</div>
|
||||
<div class="line"><span class="lineno"> 160</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 161</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 162</span> </div>
|
||||
<div class="line"><span class="lineno"> 163</span> class_methods = self.method_map.class_methods[class_name]</div>
|
||||
<div class="line"><span class="lineno"> 164</span> <span class="keywordflow">for</span> method_name <span class="keywordflow">in</span> method_calls:</div>
|
||||
<div class="line"><span class="lineno"> 165</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 166</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><span class="lineno"> 167</span> <span class="keywordflow">if</span> method_name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> method_name.endswith(<span class="stringliteral">'__'</span>):</div>
|
||||
<div class="line"><span class="lineno"> 168</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 169</span> <span class="comment"># Existing check: mapping is generated only once.</span></div>
|
||||
<div class="line"><span class="lineno"> 170</span> new_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 171</span> class_methods[method_name] = new_name</div>
|
||||
<div class="line"><span class="lineno"> 172</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__analyzer_8py_source.html#l00035">transformers.class_analyzer.ClassAnalyzer.method_map</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00044">transformers.class_analyzer.ClassAnalyzer.analyze()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7bc086b8807e7b51c4237d0b20b35c88" name="a7bc086b8807e7b51c4237d0b20b35c88"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7bc086b8807e7b51c4237d0b20b35c88">◆ </a></span>_resolve_inheritance()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer._resolve_inheritance </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Propagate method mappings along inheritance hierarchies.
|
||||
@details Ensures overridden methods reuse the same obfuscated name.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00173">173</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 173</span> <span class="keyword">def </span>_resolve_inheritance(self):</div>
|
||||
<div class="line"><span class="lineno"> 174</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 175</span><span class="stringliteral"> @brief Propagate method mappings along inheritance hierarchies.</span></div>
|
||||
<div class="line"><span class="lineno"> 176</span><span class="stringliteral"> @details Ensures overridden methods reuse the same obfuscated name.</span></div>
|
||||
<div class="line"><span class="lineno"> 177</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 178</span> <span class="comment"># Process inheritance depth-first to handle multi-level inheritance</span></div>
|
||||
<div class="line"><span class="lineno"> 179</span> <span class="keyword">def </span>process_inheritance(class_name):</div>
|
||||
<div class="line"><span class="lineno"> 180</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.inheritance:</div>
|
||||
<div class="line"><span class="lineno"> 181</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 182</span> </div>
|
||||
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">for</span> parent <span class="keywordflow">in</span> self.method_map.inheritance[class_name]:</div>
|
||||
<div class="line"><span class="lineno"> 184</span> <span class="comment"># Process parent's inheritance first</span></div>
|
||||
<div class="line"><span class="lineno"> 185</span> process_inheritance(parent)</div>
|
||||
<div class="line"><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><span class="lineno"> 187</span> <span class="comment"># Skip if parent isn't in our mappings (external class)</span></div>
|
||||
<div class="line"><span class="lineno"> 188</span> <span class="keywordflow">if</span> parent <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 189</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 190</span> </div>
|
||||
<div class="line"><span class="lineno"> 191</span> <span class="comment"># Inherit parent's methods if not overridden</span></div>
|
||||
<div class="line"><span class="lineno"> 192</span> <span class="keywordflow">for</span> method_name, obf_name <span class="keywordflow">in</span> self.method_map.class_methods[parent].items():</div>
|
||||
<div class="line"><span class="lineno"> 193</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_methods[class_name]:</div>
|
||||
<div class="line"><span class="lineno"> 194</span> self.method_map.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><span class="lineno"> 196</span> <span class="comment"># Process inheritance for each class</span></div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="keywordflow">for</span> class_name <span class="keywordflow">in</span> list(self.method_map.class_methods.keys()):</div>
|
||||
<div class="line"><span class="lineno"> 198</span> process_inheritance(class_name)</div>
|
||||
<div class="line"><span class="lineno"> 199</span> </div>
|
||||
<div class="line"><span class="lineno"> 200</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__analyzer_8py_source.html#l00035">transformers.class_analyzer.ClassAnalyzer.method_map</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00044">transformers.class_analyzer.ClassAnalyzer.analyze()</a>, and <a class="el" href="class__mapper_8py_source.html#l00076">transformers.class_mapper.ClassMapAnalyzer.analyze()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8a4d1b9cb7d27cbe667e8317d482b5b6" name="a8a4d1b9cb7d27cbe667e8317d482b5b6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8a4d1b9cb7d27cbe667e8317d482b5b6">◆ </a></span>analyze()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a> transformers.class_analyzer.ClassAnalyzer.analyze </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Analyze the entire AST and produce mappings.
|
||||
@param tree Parsed AST of the input module.
|
||||
@return ClassMethodMap Populated mappings.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00044">44</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 44</span> <span class="keyword">def </span>analyze(self, tree: ast.AST) -> ClassMethodMap:</div>
|
||||
<div class="line"><span class="lineno"> 45</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"> @brief Analyze the entire AST and produce mappings.</span></div>
|
||||
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> @param tree Parsed AST of the input module.</span></div>
|
||||
<div class="line"><span class="lineno"> 48</span><span class="stringliteral"> @return ClassMethodMap Populated mappings.</span></div>
|
||||
<div class="line"><span class="lineno"> 49</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 50</span> self.visit(tree)</div>
|
||||
<div class="line"><span class="lineno"> 51</span> self._resolve_inheritance()</div>
|
||||
<div class="line"><span class="lineno"> 52</span> self._ensure_consistent_method_mapping()</div>
|
||||
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">return</span> self.method_map</div>
|
||||
<div class="line"><span class="lineno"> 54</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00173">transformers.class_analyzer.ClassAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__mapper_8py_source.html#l00220">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance()</a>, and <a class="el" href="class__analyzer_8py_source.html#l00035">transformers.class_analyzer.ClassAnalyzer.method_map</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab4fe116f7c092817a6cf585f965dd745" name="ab4fe116f7c092817a6cf585f965dd745"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab4fe116f7c092817a6cf585f965dd745">◆ </a></span>visit_Attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.visit_Attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Track self.method references for consistency checks.
|
||||
@param node ast.Attribute being visited.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00141">141</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 141</span> <span class="keyword">def </span>visit_Attribute(self, node):</div>
|
||||
<div class="line"><span class="lineno"> 142</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 143</span><span class="stringliteral"> @brief Track self.method references for consistency checks.</span></div>
|
||||
<div class="line"><span class="lineno"> 144</span><span class="stringliteral"> @param node ast.Attribute being visited.</span></div>
|
||||
<div class="line"><span class="lineno"> 145</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 146</span> <span class="keywordflow">if</span> self.current_class:</div>
|
||||
<div class="line"><span class="lineno"> 147</span> is_self_method, method_name = get_method_name(node)</div>
|
||||
<div class="line"><span class="lineno"> 148</span> <span class="keywordflow">if</span> is_self_method:</div>
|
||||
<div class="line"><span class="lineno"> 149</span> <span class="comment"># Record this method call for consistency checks later</span></div>
|
||||
<div class="line"><span class="lineno"> 150</span> self.method_calls[self.current_class].add(method_name)</div>
|
||||
<div class="line"><span class="lineno"> 151</span> </div>
|
||||
<div class="line"><span class="lineno"> 152</span> <span class="comment"># Continue traversing</span></div>
|
||||
<div class="line"><span class="lineno"> 153</span> self.generic_visit(node)</div>
|
||||
<div class="line"><span class="lineno"> 154</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, and <a class="el" href="class__analyzer_8py_source.html#l00201">transformers.class_analyzer.get_method_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a691ad5c2629a84762bf0f8ae82735021" name="a691ad5c2629a84762bf0f8ae82735021"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a691ad5c2629a84762bf0f8ae82735021">◆ </a></span>visit_attribute_assign()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process self.attr assignments within a class.
|
||||
@param node ast.Assign node of the assignment.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00121">121</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 121</span> <span class="keyword">def </span>visit_attribute_assign(self, node):</div>
|
||||
<div class="line"><span class="lineno"> 122</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 123</span><span class="stringliteral"> @brief Process self.attr assignments within a class.</span></div>
|
||||
<div class="line"><span class="lineno"> 124</span><span class="stringliteral"> @param node ast.Assign node of the assignment.</span></div>
|
||||
<div class="line"><span class="lineno"> 125</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 126</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.current_class:</div>
|
||||
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><span class="lineno"> 129</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><span class="lineno"> 130</span> <span class="keywordflow">if</span> isinstance(target, ast.Attribute) <span class="keywordflow">and</span> isinstance(target.value, ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">if</span> target.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><span class="lineno"> 132</span> <span class="comment"># This is a self.attribute assignment</span></div>
|
||||
<div class="line"><span class="lineno"> 133</span> attr_name = target.attr</div>
|
||||
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">if</span> attr_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_attributes[self.current_class]:</div>
|
||||
<div class="line"><span class="lineno"> 135</span> new_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 136</span> self.method_map.class_attributes[self.current_class][attr_name] = new_name</div>
|
||||
<div class="line"><span class="lineno"> 137</span> </div>
|
||||
<div class="line"><span class="lineno"> 138</span> <span class="comment"># Visit the value part of the assignment for nested self.method() calls</span></div>
|
||||
<div class="line"><span class="lineno"> 139</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 140</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00035">transformers.class_analyzer.ClassAnalyzer.method_map</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a07cf975c27127718a00327be06695e5b" name="a07cf975c27127718a00327be06695e5b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a07cf975c27127718a00327be06695e5b">◆ </a></span>visit_ClassDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ClassDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process a class definition and map methods/attrs.
|
||||
@param node ast.ClassDef node being visited.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00055">55</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 55</span> <span class="keyword">def </span>visit_ClassDef(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 57</span><span class="stringliteral"> @brief Process a class definition and map methods/attrs.</span></div>
|
||||
<div class="line"><span class="lineno"> 58</span><span class="stringliteral"> @param node ast.ClassDef node being visited.</span></div>
|
||||
<div class="line"><span class="lineno"> 59</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 60</span> prev_class = self.current_class</div>
|
||||
<div class="line"><span class="lineno"> 61</span> self.current_class = node.name</div>
|
||||
<div class="line"><span class="lineno"> 62</span> </div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="comment"># Skip if already processed this class</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.scanned_classes:</div>
|
||||
<div class="line"><span class="lineno"> 65</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 67</span> </div>
|
||||
<div class="line"><span class="lineno"> 68</span> <span class="comment"># Initialize method calls tracking for this class</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span> self.method_calls[node.name] = set()</div>
|
||||
<div class="line"><span class="lineno"> 70</span> </div>
|
||||
<div class="line"><span class="lineno"> 71</span> <span class="comment"># Record class inheritance</span></div>
|
||||
<div class="line"><span class="lineno"> 72</span> parent_classes = []</div>
|
||||
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">for</span> base <span class="keywordflow">in</span> node.bases:</div>
|
||||
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">if</span> isinstance(base, ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 75</span> parent_classes.append(base.id)</div>
|
||||
<div class="line"><span class="lineno"> 76</span> </div>
|
||||
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">if</span> parent_classes:</div>
|
||||
<div class="line"><span class="lineno"> 78</span> self.method_map.inheritance[node.name] = parent_classes</div>
|
||||
<div class="line"><span class="lineno"> 79</span> </div>
|
||||
<div class="line"><span class="lineno"> 80</span> <span class="comment"># Initialize mappings for this class</span></div>
|
||||
<div class="line"><span class="lineno"> 81</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 82</span> self.method_map.class_methods[node.name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 83</span> </div>
|
||||
<div class="line"><span class="lineno"> 84</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_attributes:</div>
|
||||
<div class="line"><span class="lineno"> 85</span> self.method_map.class_attributes[node.name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 86</span> </div>
|
||||
<div class="line"><span class="lineno"> 87</span> <span class="comment"># Create a consistent obfuscated name for this class</span></div>
|
||||
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.method_map.class_renames:</div>
|
||||
<div class="line"><span class="lineno"> 89</span> new_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 90</span> self.method_map.class_renames[node.name] = new_name</div>
|
||||
<div class="line"><span class="lineno"> 91</span> </div>
|
||||
<div class="line"><span class="lineno"> 92</span> <span class="comment"># Process all method definitions in the class</span></div>
|
||||
<div class="line"><span class="lineno"> 93</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 94</span> <span class="comment"># Methods</span></div>
|
||||
<div class="line"><span class="lineno"> 95</span> <span class="keywordflow">if</span> isinstance(item, ast.FunctionDef):</div>
|
||||
<div class="line"><span class="lineno"> 96</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> (item.name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> item.name.endswith(<span class="stringliteral">'__'</span>)):</div>
|
||||
<div class="line"><span class="lineno"> 98</span> <span class="comment"># Generate a consistent obfuscated name for this method</span></div>
|
||||
<div class="line"><span class="lineno"> 99</span> new_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 100</span> self.method_map.class_methods[node.name][item.name] = new_name</div>
|
||||
<div class="line"><span class="lineno"> 101</span> </div>
|
||||
<div class="line"><span class="lineno"> 102</span> <span class="comment"># Visit the method body to find self.method() calls</span></div>
|
||||
<div class="line"><span class="lineno"> 103</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 104</span> </div>
|
||||
<div class="line"><span class="lineno"> 105</span> <span class="comment"># Attributes in assignments</span></div>
|
||||
<div class="line"><span class="lineno"> 106</span> <span class="keywordflow">elif</span> isinstance(item, ast.Assign):</div>
|
||||
<div class="line"><span class="lineno"> 107</span> self.visit_attribute_assign(item)</div>
|
||||
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 109</span> <span class="comment"># Visit other nodes (like if statements that might contain self.method calls)</span></div>
|
||||
<div class="line"><span class="lineno"> 110</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 111</span> </div>
|
||||
<div class="line"><span class="lineno"> 112</span> self.scanned_classes.add(node.name)</div>
|
||||
<div class="line"><span class="lineno"> 113</span> </div>
|
||||
<div class="line"><span class="lineno"> 114</span> <span class="comment"># Visit any nested classes</span></div>
|
||||
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">if</span> isinstance(item, ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 117</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 118</span> </div>
|
||||
<div class="line"><span class="lineno"> 119</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 120</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00035">transformers.class_analyzer.ClassAnalyzer.method_map</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>, and <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a602830de65e4ef41bcb031062d9bb169" name="a602830de65e4ef41bcb031062d9bb169"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a602830de65e4ef41bcb031062d9bb169">◆ </a></span>current_class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.current_class</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00036">36</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00141">transformers.class_analyzer.ClassAnalyzer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00094">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00279">transformers.class_mapper.ClassTransformer.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>, and <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a739a5193c309c36bd99184aba762a790" name="a739a5193c309c36bd99184aba762a790"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a739a5193c309c36bd99184aba762a790">◆ </a></span>method_map</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.method_map</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00035">35</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00173">transformers.class_analyzer.ClassAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__analyzer_8py_source.html#l00044">transformers.class_analyzer.ClassAnalyzer.analyze()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, and <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae2b710d2e7aa346663d6086b95b0230d" name="ae2b710d2e7aa346663d6086b95b0230d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae2b710d2e7aa346663d6086b95b0230d">◆ </a></span>name_generator</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassAnalyzer.name_generator</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00034">34</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="junk__gen_8py_source.html#l00023">utils.junk_gen.JunkGenerator.add_junk()</a>, <a class="el" href="junk__gen_8py_source.html#l00052">utils.junk_gen.JunkGenerator.generate_junk()</a>, <a class="el" href="rename_8py_source.html#l00125">transformers.rename.RenameTransformer.scan_class_methods()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00201">transformers.rename.RenameTransformer.visit_comprehension()</a>, <a class="el" href="rename_8py_source.html#l00283">transformers.rename.RenameTransformer.visit_FunctionDef()</a>, <a class="el" href="rename_8py_source.html#l00150">transformers.rename.RenameTransformer.visit_Global()</a>, <a class="el" href="rename_8py_source.html#l00063">transformers.rename.RenameTransformer.visit_Module()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1class__analyzer.html">class_analyzer</a></li><li class="navelem"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html">ClassAnalyzer</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,13 @@
|
||||
var classtransformers_1_1class__analyzer_1_1ClassAnalyzer =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a4145a8d6f13f330351df501d2c2acbef", null ],
|
||||
[ "_ensure_consistent_method_mapping", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a525167f88e08ed9d456beb58698a5861", null ],
|
||||
[ "_resolve_inheritance", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a7bc086b8807e7b51c4237d0b20b35c88", null ],
|
||||
[ "analyze", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a8a4d1b9cb7d27cbe667e8317d482b5b6", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ab4fe116f7c092817a6cf585f965dd745", null ],
|
||||
[ "visit_attribute_assign", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a691ad5c2629a84762bf0f8ae82735021", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a07cf975c27127718a00327be06695e5b", null ],
|
||||
[ "current_class", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a602830de65e4ef41bcb031062d9bb169", null ],
|
||||
[ "method_map", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#a739a5193c309c36bd99184aba762a790", null ],
|
||||
[ "name_generator", "classtransformers_1_1class__analyzer_1_1ClassAnalyzer.html#ae2b710d2e7aa346663d6086b95b0230d", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_analyzer.ClassAnalyzer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_analyzer.ClassAnalyzer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast::NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_analyzer.ClassAnalyzer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_analyzer.ClassAnalyzer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast::NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__analyzer_1_1ClassMethodMap.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.class_analyzer.ClassMethodMap Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">transformers.class_analyzer.ClassMethodMap</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd">__init__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">transformers.class_analyzer.ClassMethodMap</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,159 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.class_analyzer.ClassMethodMap Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__analyzer_1_1ClassMethodMap.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classtransformers_1_1class__analyzer_1_1ClassMethodMap-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.class_analyzer.ClassMethodMap Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:a26346b25523894f82d2e483b6da187fd" id="r_a26346b25523894f82d2e483b6da187fd"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd">__init__</a> (self)</td></tr>
|
||||
<tr class="separator:a26346b25523894f82d2e483b6da187fd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Stores method and attribute mappings for all classes.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00010">10</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a26346b25523894f82d2e483b6da187fd" name="a26346b25523894f82d2e483b6da187fd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a26346b25523894f82d2e483b6da187fd">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_analyzer.ClassMethodMap.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__analyzer_8py_source.html#l00014">14</a> of file <a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 14</span> <span class="keyword">def </span>__init__(self):</div>
|
||||
<div class="line"><span class="lineno"> 15</span> <span class="comment"># Maps: original_class_name -> {original_method_name -> obfuscated_method_name}</span></div>
|
||||
<div class="line"><span class="lineno"> 16</span> self.class_methods: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><span class="lineno"> 18</span> <span class="comment"># Maps: original_class_name -> {original_attr_name -> obfuscated_attr_name}</span></div>
|
||||
<div class="line"><span class="lineno"> 19</span> self.class_attributes: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 20</span> </div>
|
||||
<div class="line"><span class="lineno"> 21</span> <span class="comment"># Maps: original_class_name -> obfuscated_class_name</span></div>
|
||||
<div class="line"><span class="lineno"> 22</span> self.class_renames: Dict[str, str] = {}</div>
|
||||
<div class="line"><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><span class="lineno"> 24</span> <span class="comment"># Track inheritance relationships: child_class -> [parent_classes]</span></div>
|
||||
<div class="line"><span class="lineno"> 25</span> self.inheritance: Dict[str, List[str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 26</span> </div>
|
||||
<div class="line"><span class="lineno"> 27</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00025">transformers.attribute_transformer.AttributeTransformer.class_renames</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="class__analyzer_8py_source.html">class_analyzer.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1class__analyzer.html">class_analyzer</a></li><li class="navelem"><a class="el" href="classtransformers_1_1class__analyzer_1_1ClassMethodMap.html">ClassMethodMap</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
var classtransformers_1_1class__analyzer_1_1ClassMethodMap =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1class__analyzer_1_1ClassMethodMap.html#a26346b25523894f82d2e483b6da187fd", null ]
|
||||
];
|
||||
@@ -0,0 +1,121 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassMapAnalyzer Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94">__init__</a>(self, name_generator)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76">_ensure_complete_method_mapping</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799">_resolve_inheritance</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb">analyze</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72">visit_Assign</a>(self, ast.Assign node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f">visit_assign_in_class</a>(self, ast.Assign node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98">visit_Attribute</a>(self, ast.Attribute node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f">visit_ClassDef</a>(self, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d">visit_method_def</a>(self, ast.FunctionDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">transformers.class_mapper.ClassMapAnalyzer</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,745 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.class_mapper.ClassMapAnalyzer Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassMapAnalyzer Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.class_mapper.ClassMapAnalyzer:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer__inherit__graph.png" border="0" usemap="#atransformers_8class__mapper_8ClassMapAnalyzer_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.class_mapper.ClassMapAnalyzer:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer__coll__graph.png" border="0" usemap="#atransformers_8class__mapper_8ClassMapAnalyzer_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:ad196ea0fd82543968f2514f4cebbba94" id="r_ad196ea0fd82543968f2514f4cebbba94"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94">__init__</a> (self, <a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a>)</td></tr>
|
||||
<tr class="separator:ad196ea0fd82543968f2514f4cebbba94"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a13817b3df73643f9bb8b9601e3e040cb" id="r_a13817b3df73643f9bb8b9601e3e040cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb">analyze</a> (self, ast.AST tree)</td></tr>
|
||||
<tr class="separator:a13817b3df73643f9bb8b9601e3e040cb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afdc5a0eb9fd40b5d0e9b70cea0de1f72" id="r_afdc5a0eb9fd40b5d0e9b70cea0de1f72"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72">visit_Assign</a> (self, ast.Assign node)</td></tr>
|
||||
<tr class="separator:afdc5a0eb9fd40b5d0e9b70cea0de1f72"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afd6498b69da44c6ec6e0b2afa725c67f" id="r_afd6498b69da44c6ec6e0b2afa725c67f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f">visit_assign_in_class</a> (self, ast.Assign node)</td></tr>
|
||||
<tr class="separator:afd6498b69da44c6ec6e0b2afa725c67f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6ba0759719762c8b373d3009b7caed98" id="r_a6ba0759719762c8b373d3009b7caed98"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98">visit_Attribute</a> (self, ast.Attribute node)</td></tr>
|
||||
<tr class="separator:a6ba0759719762c8b373d3009b7caed98"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aeebda718232e13cd5a3e583db024da6f" id="r_aeebda718232e13cd5a3e583db024da6f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f">visit_ClassDef</a> (self, ast.ClassDef node)</td></tr>
|
||||
<tr class="separator:aeebda718232e13cd5a3e583db024da6f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6bcd45016a2ae5cb4be6a3cb942bdf9d" id="r_a6bcd45016a2ae5cb4be6a3cb942bdf9d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d">visit_method_def</a> (self, ast.FunctionDef node)</td></tr>
|
||||
<tr class="separator:a6bcd45016a2ae5cb4be6a3cb942bdf9d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ac0d803c97db3802b92b824d036b14bcc" id="r_ac0d803c97db3802b92b824d036b14bcc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc">current_class</a></td></tr>
|
||||
<tr class="separator:ac0d803c97db3802b92b824d036b14bcc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad185e02d3dc16d55b1b6ad232203ef35" id="r_ad185e02d3dc16d55b1b6ad232203ef35"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35">current_method</a></td></tr>
|
||||
<tr class="separator:ad185e02d3dc16d55b1b6ad232203ef35"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a93c02ece387c4611fa249e808f39bf10" id="r_a93c02ece387c4611fa249e808f39bf10"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10">mapping</a></td></tr>
|
||||
<tr class="separator:a93c02ece387c4611fa249e808f39bf10"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad4df47c9f65fc7cc70ac7159b7116278" id="r_ad4df47c9f65fc7cc70ac7159b7116278"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278">name_generator</a></td></tr>
|
||||
<tr class="separator:ad4df47c9f65fc7cc70ac7159b7116278"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:af584a55f0c308a55d109181485e1ae76" id="r_af584a55f0c308a55d109181485e1ae76"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76">_ensure_complete_method_mapping</a> (self)</td></tr>
|
||||
<tr class="separator:af584a55f0c308a55d109181485e1ae76"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a34c03faa2fef07c3a5f0e56745b8e799" id="r_a34c03faa2fef07c3a5f0e56745b8e799"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799">_resolve_inheritance</a> (self)</td></tr>
|
||||
<tr class="separator:a34c03faa2fef07c3a5f0e56745b8e799"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Analyze the AST to create a complete class mapping.
|
||||
@details Performs multi-pass analysis to collect classes, methods, attributes,
|
||||
inheritance, and method-call references and builds consistent mappings.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00062">62</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="ad196ea0fd82543968f2514f4cebbba94" name="ad196ea0fd82543968f2514f4cebbba94"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad196ea0fd82543968f2514f4cebbba94">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>name_generator</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00069">69</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 69</span> <span class="keyword">def </span>__init__(self, name_generator):</div>
|
||||
<div class="line"><span class="lineno"> 70</span> self.name_generator = name_generator</div>
|
||||
<div class="line"><span class="lineno"> 71</span> self.mapping = ClassMapping()</div>
|
||||
<div class="line"><span class="lineno"> 72</span> self.current_class: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 73</span> self.current_method: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 74</span> self.processed_classes: Set[str] = set()</div>
|
||||
<div class="line"><span class="lineno"> 75</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="af584a55f0c308a55d109181485e1ae76" name="af584a55f0c308a55d109181485e1ae76"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af584a55f0c308a55d109181485e1ae76">◆ </a></span>_ensure_complete_method_mapping()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Ensure all method calls have corresponding mappings.
|
||||
@details Handles methods called but not defined in the class.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00247">247</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 247</span> <span class="keyword">def </span>_ensure_complete_method_mapping(self):</div>
|
||||
<div class="line"><span class="lineno"> 248</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 249</span><span class="stringliteral"> @brief Ensure all method calls have corresponding mappings.</span></div>
|
||||
<div class="line"><span class="lineno"> 250</span><span class="stringliteral"> @details Handles methods called but not defined in the class.</span></div>
|
||||
<div class="line"><span class="lineno"> 251</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 252</span> <span class="keywordflow">for</span> class_name, method_calls <span class="keywordflow">in</span> self.mapping.seen_method_calls.items():</div>
|
||||
<div class="line"><span class="lineno"> 253</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 254</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 255</span> </div>
|
||||
<div class="line"><span class="lineno"> 256</span> <span class="keywordflow">for</span> method_name <span class="keywordflow">in</span> method_calls:</div>
|
||||
<div class="line"><span class="lineno"> 257</span> <span class="comment"># Skip dunder methods</span></div>
|
||||
<div class="line"><span class="lineno"> 258</span> <span class="keywordflow">if</span> method_name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> method_name.endswith(<span class="stringliteral">'__'</span>):</div>
|
||||
<div class="line"><span class="lineno"> 259</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 260</span> </div>
|
||||
<div class="line"><span class="lineno"> 261</span> <span class="comment"># Add mapping if method was called but not defined</span></div>
|
||||
<div class="line"><span class="lineno"> 262</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods[class_name]:</div>
|
||||
<div class="line"><span class="lineno"> 263</span> obf_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 264</span> self.mapping.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><span class="lineno"> 265</span> logger.debug(f<span class="stringliteral">"Added mapping for called method {class_name}.{method_name} -> {obf_name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 266</span> </div>
|
||||
<div class="line"><span class="lineno"> 267</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00076">transformers.class_mapper.ClassMapAnalyzer.analyze()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a34c03faa2fef07c3a5f0e56745b8e799" name="a34c03faa2fef07c3a5f0e56745b8e799"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a34c03faa2fef07c3a5f0e56745b8e799">◆ </a></span>_resolve_inheritance()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Ensure child classes inherit method mappings from parent classes.
|
||||
@details Copies parent method mappings into children when not overridden.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00220">220</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 220</span> <span class="keyword">def </span>_resolve_inheritance(self):</div>
|
||||
<div class="line"><span class="lineno"> 221</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 222</span><span class="stringliteral"> @brief Ensure child classes inherit method mappings from parent classes.</span></div>
|
||||
<div class="line"><span class="lineno"> 223</span><span class="stringliteral"> @details Copies parent method mappings into children when not overridden.</span></div>
|
||||
<div class="line"><span class="lineno"> 224</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 225</span> <span class="keyword">def </span>process_inheritance(class_name):</div>
|
||||
<div class="line"><span class="lineno"> 226</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.inheritance:</div>
|
||||
<div class="line"><span class="lineno"> 227</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 228</span> </div>
|
||||
<div class="line"><span class="lineno"> 229</span> <span class="keywordflow">for</span> parent <span class="keywordflow">in</span> self.mapping.inheritance[class_name]:</div>
|
||||
<div class="line"><span class="lineno"> 230</span> <span class="comment"># Process parent's inheritance first</span></div>
|
||||
<div class="line"><span class="lineno"> 231</span> process_inheritance(parent)</div>
|
||||
<div class="line"><span class="lineno"> 232</span> </div>
|
||||
<div class="line"><span class="lineno"> 233</span> <span class="comment"># Skip if parent isn't in our mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 234</span> <span class="keywordflow">if</span> parent <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 235</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 236</span> </div>
|
||||
<div class="line"><span class="lineno"> 237</span> <span class="comment"># Copy parent's method mappings to child if not overridden</span></div>
|
||||
<div class="line"><span class="lineno"> 238</span> <span class="keywordflow">for</span> method_name, obf_name <span class="keywordflow">in</span> self.mapping.class_methods[parent].items():</div>
|
||||
<div class="line"><span class="lineno"> 239</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods[class_name]:</div>
|
||||
<div class="line"><span class="lineno"> 240</span> self.mapping.class_methods[class_name][method_name] = obf_name</div>
|
||||
<div class="line"><span class="lineno"> 241</span> logger.debug(f<span class="stringliteral">"Inherited method {class_name}.{method_name} from {parent}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 242</span> </div>
|
||||
<div class="line"><span class="lineno"> 243</span> <span class="comment"># Process all classes</span></div>
|
||||
<div class="line"><span class="lineno"> 244</span> <span class="keywordflow">for</span> class_name <span class="keywordflow">in</span> list(self.mapping.class_methods.keys()):</div>
|
||||
<div class="line"><span class="lineno"> 245</span> process_inheritance(class_name)</div>
|
||||
<div class="line"><span class="lineno"> 246</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, and <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__analyzer_8py_source.html#l00044">transformers.class_analyzer.ClassAnalyzer.analyze()</a>, and <a class="el" href="class__mapper_8py_source.html#l00076">transformers.class_mapper.ClassMapAnalyzer.analyze()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a13817b3df73643f9bb8b9601e3e040cb" name="a13817b3df73643f9bb8b9601e3e040cb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a13817b3df73643f9bb8b9601e3e040cb">◆ </a></span>analyze()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a> transformers.class_mapper.ClassMapAnalyzer.analyze </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Perform a complete analysis of the AST.
|
||||
@param tree Parsed AST to analyze.
|
||||
@return ClassMapping Aggregated mappings for class renaming and members.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00076">76</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 76</span> <span class="keyword">def </span>analyze(self, tree: ast.AST) -> ClassMapping:</div>
|
||||
<div class="line"><span class="lineno"> 77</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 78</span><span class="stringliteral"> @brief Perform a complete analysis of the AST.</span></div>
|
||||
<div class="line"><span class="lineno"> 79</span><span class="stringliteral"> @param tree Parsed AST to analyze.</span></div>
|
||||
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"> @return ClassMapping Aggregated mappings for class renaming and members.</span></div>
|
||||
<div class="line"><span class="lineno"> 81</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 82</span> <span class="comment"># First pass: collect all class definitions, methods, and inheritance</span></div>
|
||||
<div class="line"><span class="lineno"> 83</span> self.visit(tree)</div>
|
||||
<div class="line"><span class="lineno"> 84</span> </div>
|
||||
<div class="line"><span class="lineno"> 85</span> <span class="comment"># Second pass: resolve inheritance and method mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 86</span> self._resolve_inheritance()</div>
|
||||
<div class="line"><span class="lineno"> 87</span> self._ensure_complete_method_mapping()</div>
|
||||
<div class="line"><span class="lineno"> 88</span> </div>
|
||||
<div class="line"><span class="lineno"> 89</span> logger.info(f<span class="stringliteral">"Class analysis complete: {len(self.mapping.class_names)} classes processed"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 90</span> logger.debug(self.mapping.debug_info())</div>
|
||||
<div class="line"><span class="lineno"> 91</span> </div>
|
||||
<div class="line"><span class="lineno"> 92</span> <span class="keywordflow">return</span> self.mapping</div>
|
||||
<div class="line"><span class="lineno"> 93</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00173">transformers.class_analyzer.ClassAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__mapper_8py_source.html#l00220">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, and <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afdc5a0eb9fd40b5d0e9b70cea0de1f72" name="afdc5a0eb9fd40b5d0e9b70cea0de1f72"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afdc5a0eb9fd40b5d0e9b70cea0de1f72">◆ </a></span>visit_Assign()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.visit_Assign </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Assign </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process assignments that might contain self.attr references.
|
||||
@param node ast.Assign node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00210">210</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 210</span> <span class="keyword">def </span>visit_Assign(self, node: ast.Assign):</div>
|
||||
<div class="line"><span class="lineno"> 211</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 212</span><span class="stringliteral"> @brief Process assignments that might contain self.attr references.</span></div>
|
||||
<div class="line"><span class="lineno"> 213</span><span class="stringliteral"> @param node ast.Assign node.</span></div>
|
||||
<div class="line"><span class="lineno"> 214</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 215</span> <span class="comment"># Visit both sides of the assignment</span></div>
|
||||
<div class="line"><span class="lineno"> 216</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><span class="lineno"> 217</span> self.visit(target)</div>
|
||||
<div class="line"><span class="lineno"> 218</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 219</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="afd6498b69da44c6ec6e0b2afa725c67f" name="afd6498b69da44c6ec6e0b2afa725c67f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afd6498b69da44c6ec6e0b2afa725c67f">◆ </a></span>visit_assign_in_class()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Assign </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process assignments in class body or methods.
|
||||
@param node ast.Assign possibly containing self.attr writes.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00174">174</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 174</span> <span class="keyword">def </span>visit_assign_in_class(self, node: ast.Assign):</div>
|
||||
<div class="line"><span class="lineno"> 175</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 176</span><span class="stringliteral"> @brief Process assignments in class body or methods.</span></div>
|
||||
<div class="line"><span class="lineno"> 177</span><span class="stringliteral"> @param node ast.Assign possibly containing self.attr writes.</span></div>
|
||||
<div class="line"><span class="lineno"> 178</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 179</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.current_class:</div>
|
||||
<div class="line"><span class="lineno"> 180</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 181</span> </div>
|
||||
<div class="line"><span class="lineno"> 182</span> <span class="comment"># Check for self.attribute assignments</span></div>
|
||||
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><span class="lineno"> 184</span> <span class="keywordflow">if</span> isinstance(target, ast.Attribute) <span class="keywordflow">and</span> isinstance(target.value, ast.Name) <span class="keywordflow">and</span> target.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><span class="lineno"> 185</span> attr_name = target.attr</div>
|
||||
<div class="line"><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><span class="lineno"> 187</span> <span class="comment"># Map attribute name if not already mapped</span></div>
|
||||
<div class="line"><span class="lineno"> 188</span> <span class="keywordflow">if</span> attr_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_attributes[self.current_class]:</div>
|
||||
<div class="line"><span class="lineno"> 189</span> obf_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 190</span> self.mapping.class_attributes[self.current_class][attr_name] = obf_name</div>
|
||||
<div class="line"><span class="lineno"> 191</span> logger.debug(f<span class="stringliteral">"Mapped attribute {self.current_class}.{attr_name} to {obf_name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 192</span> </div>
|
||||
<div class="line"><span class="lineno"> 193</span> <span class="comment"># Visit the value to find nested self.method calls</span></div>
|
||||
<div class="line"><span class="lineno"> 194</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 195</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>, <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6ba0759719762c8b373d3009b7caed98" name="a6ba0759719762c8b373d3009b7caed98"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6ba0759719762c8b373d3009b7caed98">◆ </a></span>visit_Attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Attribute </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process attribute access like self.method or self.attr.
|
||||
@param node ast.Attribute node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00196">196</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 196</span> <span class="keyword">def </span>visit_Attribute(self, node: ast.Attribute):</div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 198</span><span class="stringliteral"> @brief Process attribute access like self.method or self.attr.</span></div>
|
||||
<div class="line"><span class="lineno"> 199</span><span class="stringliteral"> @param node ast.Attribute node.</span></div>
|
||||
<div class="line"><span class="lineno"> 200</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 201</span> <span class="keywordflow">if</span> self.current_class <span class="keywordflow">and</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><span class="lineno"> 202</span> <span class="comment"># Record this access for later processing</span></div>
|
||||
<div class="line"><span class="lineno"> 203</span> method_name = node.attr</div>
|
||||
<div class="line"><span class="lineno"> 204</span> self.mapping.seen_method_calls[self.current_class].add(method_name)</div>
|
||||
<div class="line"><span class="lineno"> 205</span> logger.debug(f<span class="stringliteral">"Recorded method call: {self.current_class}.{method_name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 206</span> </div>
|
||||
<div class="line"><span class="lineno"> 207</span> <span class="comment"># Continue traversal</span></div>
|
||||
<div class="line"><span class="lineno"> 208</span> self.generic_visit(node)</div>
|
||||
<div class="line"><span class="lineno"> 209</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, and <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeebda718232e13cd5a3e583db024da6f" name="aeebda718232e13cd5a3e583db024da6f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeebda718232e13cd5a3e583db024da6f">◆ </a></span>visit_ClassDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ClassDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process a class definition.
|
||||
@param node ast.ClassDef node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00094">94</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 94</span> <span class="keyword">def </span>visit_ClassDef(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 95</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 96</span><span class="stringliteral"> @brief Process a class definition.</span></div>
|
||||
<div class="line"><span class="lineno"> 97</span><span class="stringliteral"> @param node ast.ClassDef node.</span></div>
|
||||
<div class="line"><span class="lineno"> 98</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 99</span> prev_class = self.current_class</div>
|
||||
<div class="line"><span class="lineno"> 100</span> self.current_class = node.name</div>
|
||||
<div class="line"><span class="lineno"> 101</span> </div>
|
||||
<div class="line"><span class="lineno"> 102</span> <span class="comment"># Skip if already processed</span></div>
|
||||
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.processed_classes:</div>
|
||||
<div class="line"><span class="lineno"> 104</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 106</span> </div>
|
||||
<div class="line"><span class="lineno"> 107</span> <span class="comment"># Add class name mapping</span></div>
|
||||
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_names:</div>
|
||||
<div class="line"><span class="lineno"> 109</span> self.mapping.class_names[node.name] = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 110</span> </div>
|
||||
<div class="line"><span class="lineno"> 111</span> <span class="comment"># Initialize dictionaries</span></div>
|
||||
<div class="line"><span class="lineno"> 112</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 113</span> self.mapping.class_methods[node.name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 114</span> </div>
|
||||
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_attributes:</div>
|
||||
<div class="line"><span class="lineno"> 116</span> self.mapping.class_attributes[node.name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 117</span> </div>
|
||||
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.seen_method_calls:</div>
|
||||
<div class="line"><span class="lineno"> 119</span> self.mapping.seen_method_calls[node.name] = set()</div>
|
||||
<div class="line"><span class="lineno"> 120</span> </div>
|
||||
<div class="line"><span class="lineno"> 121</span> <span class="comment"># Record inheritance</span></div>
|
||||
<div class="line"><span class="lineno"> 122</span> parent_classes = []</div>
|
||||
<div class="line"><span class="lineno"> 123</span> <span class="keywordflow">for</span> base <span class="keywordflow">in</span> node.bases:</div>
|
||||
<div class="line"><span class="lineno"> 124</span> <span class="keywordflow">if</span> isinstance(base, ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 125</span> parent_classes.append(base.id)</div>
|
||||
<div class="line"><span class="lineno"> 126</span> </div>
|
||||
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">if</span> parent_classes:</div>
|
||||
<div class="line"><span class="lineno"> 128</span> self.mapping.inheritance[node.name] = parent_classes</div>
|
||||
<div class="line"><span class="lineno"> 129</span> </div>
|
||||
<div class="line"><span class="lineno"> 130</span> <span class="comment"># Process class body</span></div>
|
||||
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 132</span> <span class="keywordflow">if</span> isinstance(item, ast.FunctionDef):</div>
|
||||
<div class="line"><span class="lineno"> 133</span> self.visit_method_def(item)</div>
|
||||
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">elif</span> isinstance(item, ast.Assign):</div>
|
||||
<div class="line"><span class="lineno"> 135</span> self.visit_assign_in_class(item)</div>
|
||||
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">elif</span> isinstance(item, ast.Expr):</div>
|
||||
<div class="line"><span class="lineno"> 137</span> <span class="comment"># Could contain calls to self.methods</span></div>
|
||||
<div class="line"><span class="lineno"> 138</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 139</span> <span class="keywordflow">elif</span> isinstance(item, ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 140</span> <span class="comment"># Nested class</span></div>
|
||||
<div class="line"><span class="lineno"> 141</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 142</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 143</span> <span class="comment"># Other nodes that might contain self.method calls</span></div>
|
||||
<div class="line"><span class="lineno"> 144</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><span class="lineno"> 146</span> self.processed_classes.add(node.name)</div>
|
||||
<div class="line"><span class="lineno"> 147</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 148</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, and <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6bcd45016a2ae5cb4be6a3cb942bdf9d" name="a6bcd45016a2ae5cb4be6a3cb942bdf9d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6bcd45016a2ae5cb4be6a3cb942bdf9d">◆ </a></span>visit_method_def()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.visit_method_def </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.FunctionDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Process a method definition in a class.
|
||||
@param node ast.FunctionDef node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00149">149</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 149</span> <span class="keyword">def </span>visit_method_def(self, node: ast.FunctionDef):</div>
|
||||
<div class="line"><span class="lineno"> 150</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 151</span><span class="stringliteral"> @brief Process a method definition in a class.</span></div>
|
||||
<div class="line"><span class="lineno"> 152</span><span class="stringliteral"> @param node ast.FunctionDef node.</span></div>
|
||||
<div class="line"><span class="lineno"> 153</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 154</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.current_class:</div>
|
||||
<div class="line"><span class="lineno"> 155</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 156</span> </div>
|
||||
<div class="line"><span class="lineno"> 157</span> prev_method = self.current_method</div>
|
||||
<div class="line"><span class="lineno"> 158</span> self.current_method = node.name</div>
|
||||
<div class="line"><span class="lineno"> 159</span> </div>
|
||||
<div class="line"><span class="lineno"> 160</span> <span class="comment"># Skip dunder methods from obfuscation</span></div>
|
||||
<div class="line"><span class="lineno"> 161</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> (node.name.startswith(<span class="stringliteral">'__'</span>) <span class="keywordflow">and</span> node.name.endswith(<span class="stringliteral">'__'</span>)):</div>
|
||||
<div class="line"><span class="lineno"> 162</span> <span class="comment"># Map method name if not already mapped</span></div>
|
||||
<div class="line"><span class="lineno"> 163</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.mapping.class_methods[self.current_class]:</div>
|
||||
<div class="line"><span class="lineno"> 164</span> obf_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 165</span> self.mapping.class_methods[self.current_class][node.name] = obf_name</div>
|
||||
<div class="line"><span class="lineno"> 166</span> logger.debug(f<span class="stringliteral">"Mapped method {self.current_class}.{node.name} to {obf_name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 167</span> </div>
|
||||
<div class="line"><span class="lineno"> 168</span> <span class="comment"># Visit method body to find self.method calls and self.attr assignments</span></div>
|
||||
<div class="line"><span class="lineno"> 169</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 170</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 171</span> </div>
|
||||
<div class="line"><span class="lineno"> 172</span> self.current_method = prev_method</div>
|
||||
<div class="line"><span class="lineno"> 173</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, and <a class="el" href="class__mapper_8py_source.html#l00158">transformers.class_mapper.ClassMapAnalyzer.current_method</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ac0d803c97db3802b92b824d036b14bcc" name="ac0d803c97db3802b92b824d036b14bcc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac0d803c97db3802b92b824d036b14bcc">◆ </a></span>current_class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.current_class</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00100">100</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00141">transformers.class_analyzer.ClassAnalyzer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00094">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00279">transformers.class_mapper.ClassTransformer.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>, and <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad185e02d3dc16d55b1b6ad232203ef35" name="ad185e02d3dc16d55b1b6ad232203ef35"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad185e02d3dc16d55b1b6ad232203ef35">◆ </a></span>current_method</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.current_method</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00158">158</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a93c02ece387c4611fa249e808f39bf10" name="a93c02ece387c4611fa249e808f39bf10"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a93c02ece387c4611fa249e808f39bf10">◆ </a></span>mapping</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.mapping</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00071">71</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__mapper_8py_source.html#l00220">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__mapper_8py_source.html#l00076">transformers.class_mapper.ClassMapAnalyzer.analyze()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, and <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad4df47c9f65fc7cc70ac7159b7116278" name="ad4df47c9f65fc7cc70ac7159b7116278"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad4df47c9f65fc7cc70ac7159b7116278">◆ </a></span>name_generator</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapAnalyzer.name_generator</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00070">70</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="junk__gen_8py_source.html#l00023">utils.junk_gen.JunkGenerator.add_junk()</a>, <a class="el" href="junk__gen_8py_source.html#l00052">utils.junk_gen.JunkGenerator.generate_junk()</a>, <a class="el" href="rename_8py_source.html#l00125">transformers.rename.RenameTransformer.scan_class_methods()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00201">transformers.rename.RenameTransformer.visit_comprehension()</a>, <a class="el" href="rename_8py_source.html#l00283">transformers.rename.RenameTransformer.visit_FunctionDef()</a>, <a class="el" href="rename_8py_source.html#l00150">transformers.rename.RenameTransformer.visit_Global()</a>, <a class="el" href="rename_8py_source.html#l00063">transformers.rename.RenameTransformer.visit_Module()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="class__mapper_8py_source.html">class_mapper.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1class__mapper.html">class_mapper</a></li><li class="navelem"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html">ClassMapAnalyzer</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
var classtransformers_1_1class__mapper_1_1ClassMapAnalyzer =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad196ea0fd82543968f2514f4cebbba94", null ],
|
||||
[ "_ensure_complete_method_mapping", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#af584a55f0c308a55d109181485e1ae76", null ],
|
||||
[ "_resolve_inheritance", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a34c03faa2fef07c3a5f0e56745b8e799", null ],
|
||||
[ "analyze", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a13817b3df73643f9bb8b9601e3e040cb", null ],
|
||||
[ "visit_Assign", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afdc5a0eb9fd40b5d0e9b70cea0de1f72", null ],
|
||||
[ "visit_assign_in_class", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#afd6498b69da44c6ec6e0b2afa725c67f", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6ba0759719762c8b373d3009b7caed98", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#aeebda718232e13cd5a3e583db024da6f", null ],
|
||||
[ "visit_method_def", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a6bcd45016a2ae5cb4be6a3cb942bdf9d", null ],
|
||||
[ "current_class", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ac0d803c97db3802b92b824d036b14bcc", null ],
|
||||
[ "current_method", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad185e02d3dc16d55b1b6ad232203ef35", null ],
|
||||
[ "mapping", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#a93c02ece387c4611fa249e808f39bf10", null ],
|
||||
[ "name_generator", "classtransformers_1_1class__mapper_1_1ClassMapAnalyzer.html#ad4df47c9f65fc7cc70ac7159b7116278", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_mapper.ClassMapAnalyzer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_mapper.ClassMapAnalyzer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_mapper.ClassMapAnalyzer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_mapper.ClassMapAnalyzer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassMapping.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassMapping Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">transformers.class_mapper.ClassMapping</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba">__init__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">transformers.class_mapper.ClassMapping</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2">debug_info</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">transformers.class_mapper.ClassMapping</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.class_mapper.ClassMapping Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassMapping.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classtransformers_1_1class__mapper_1_1ClassMapping-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassMapping Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:a9327faa5f8de53e9da48588245d332ba" id="r_a9327faa5f8de53e9da48588245d332ba"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba">__init__</a> (self)</td></tr>
|
||||
<tr class="separator:a9327faa5f8de53e9da48588245d332ba"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1fa5906a282c1ed833160badb1f674a2" id="r_a1fa5906a282c1ed833160badb1f674a2"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2">debug_info</a> (self)</td></tr>
|
||||
<tr class="separator:a1fa5906a282c1ed833160badb1f674a2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Stores all mappings related to classes in a centralized way.
|
||||
@details Tracks class renames, method and attribute mappings, inheritance structure,
|
||||
and seen method calls to ensure complete coverage.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00016">16</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a9327faa5f8de53e9da48588245d332ba" name="a9327faa5f8de53e9da48588245d332ba"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9327faa5f8de53e9da48588245d332ba">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassMapping.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00023">23</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 23</span> <span class="keyword">def </span>__init__(self):</div>
|
||||
<div class="line"><span class="lineno"> 24</span> <span class="comment"># Original class name -> obfuscated class name</span></div>
|
||||
<div class="line"><span class="lineno"> 25</span> self.class_names: Dict[str, str] = {}</div>
|
||||
<div class="line"><span class="lineno"> 26</span> </div>
|
||||
<div class="line"><span class="lineno"> 27</span> <span class="comment"># Original class name -> {original method name -> obfuscated method name}</span></div>
|
||||
<div class="line"><span class="lineno"> 28</span> self.class_methods: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 29</span> </div>
|
||||
<div class="line"><span class="lineno"> 30</span> <span class="comment"># Original class name -> {original attr name -> obfuscated attr name}</span></div>
|
||||
<div class="line"><span class="lineno"> 31</span> self.class_attributes: Dict[str, Dict[str, str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 32</span> </div>
|
||||
<div class="line"><span class="lineno"> 33</span> <span class="comment"># Child class -> list of parent classes (original names)</span></div>
|
||||
<div class="line"><span class="lineno"> 34</span> self.inheritance: Dict[str, List[str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 35</span> </div>
|
||||
<div class="line"><span class="lineno"> 36</span> <span class="comment"># Track all seen method calls to ensure complete coverage</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span> self.seen_method_calls: Dict[str, Set[str]] = {}</div>
|
||||
<div class="line"><span class="lineno"> 38</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a1fa5906a282c1ed833160badb1f674a2" name="a1fa5906a282c1ed833160badb1f674a2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1fa5906a282c1ed833160badb1f674a2">◆ </a></span>debug_info()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str transformers.class_mapper.ClassMapping.debug_info </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Return debug information about mappings.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00039">39</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 39</span> <span class="keyword">def </span>debug_info(self) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 40</span> <span class="stringliteral">"""Return debug information about mappings."""</span></div>
|
||||
<div class="line"><span class="lineno"> 41</span> info = []</div>
|
||||
<div class="line"><span class="lineno"> 42</span> info.append(f<span class="stringliteral">"Class mappings: {len(self.class_names)} classes"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">for</span> cls_name, obf_name <span class="keywordflow">in</span> self.class_names.items():</div>
|
||||
<div class="line"><span class="lineno"> 45</span> info.append(f<span class="stringliteral">" {cls_name} -> {obf_name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 46</span> </div>
|
||||
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">if</span> cls_name <span class="keywordflow">in</span> self.class_methods:</div>
|
||||
<div class="line"><span class="lineno"> 48</span> methods = self.class_methods[cls_name]</div>
|
||||
<div class="line"><span class="lineno"> 49</span> info.append(f<span class="stringliteral">" Methods: {len(methods)}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">for</span> method, obf_method <span class="keywordflow">in</span> methods.items():</div>
|
||||
<div class="line"><span class="lineno"> 51</span> info.append(f<span class="stringliteral">" {method} -> {obf_method}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">if</span> cls_name <span class="keywordflow">in</span> self.class_attributes:</div>
|
||||
<div class="line"><span class="lineno"> 54</span> attrs = self.class_attributes[cls_name]</div>
|
||||
<div class="line"><span class="lineno"> 55</span> info.append(f<span class="stringliteral">" Attributes: {len(attrs)}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">for</span> attr, obf_attr <span class="keywordflow">in</span> attrs.items():</div>
|
||||
<div class="line"><span class="lineno"> 57</span> info.append(f<span class="stringliteral">" {attr} -> {obf_attr}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 58</span> </div>
|
||||
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> <span class="stringliteral">"\n"</span>.join(info)</div>
|
||||
<div class="line"><span class="lineno"> 60</span> </div>
|
||||
<div class="line"><span class="lineno"> 61</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="class__mapper_8py_source.html">class_mapper.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1class__mapper.html">class_mapper</a></li><li class="navelem"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
var classtransformers_1_1class__mapper_1_1ClassMapping =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1class__mapper_1_1ClassMapping.html#a9327faa5f8de53e9da48588245d332ba", null ],
|
||||
[ "debug_info", "classtransformers_1_1class__mapper_1_1ClassMapping.html#a1fa5906a282c1ed833160badb1f674a2", null ]
|
||||
];
|
||||
@@ -0,0 +1,114 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassTransformer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassTransformer Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e">__init__</a>(self, ClassMapping mapping)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a></td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e">visit_Attribute</a>(self, ast.Attribute node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3">visit_ClassDef</a>(self, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3">visit_FunctionDef</a>(self, ast.FunctionDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">transformers.class_mapper.ClassTransformer</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,392 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.class_mapper.ClassTransformer Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1class__mapper_1_1ClassTransformer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1class__mapper_1_1ClassTransformer-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.class_mapper.ClassTransformer Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.class_mapper.ClassTransformer:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__mapper_1_1ClassTransformer__inherit__graph.png" border="0" usemap="#atransformers_8class__mapper_8ClassTransformer_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.class_mapper.ClassTransformer:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1class__mapper_1_1ClassTransformer__coll__graph.png" border="0" usemap="#atransformers_8class__mapper_8ClassTransformer_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:af7356231305781d4b6287bde4fe38f9e" id="r_af7356231305781d4b6287bde4fe38f9e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e">__init__</a> (self, <a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a> <a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a>)</td></tr>
|
||||
<tr class="separator:af7356231305781d4b6287bde4fe38f9e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a18fb4582603ee59841361810858c680e" id="r_a18fb4582603ee59841361810858c680e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e">visit_Attribute</a> (self, ast.Attribute node)</td></tr>
|
||||
<tr class="separator:a18fb4582603ee59841361810858c680e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a54db45ae6b1b4e8ffdf6c56ae4c67fd3" id="r_a54db45ae6b1b4e8ffdf6c56ae4c67fd3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3">visit_ClassDef</a> (self, ast.ClassDef node)</td></tr>
|
||||
<tr class="separator:a54db45ae6b1b4e8ffdf6c56ae4c67fd3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0a61d0cd34072cb712df523d6fc504e3" id="r_a0a61d0cd34072cb712df523d6fc504e3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3">visit_FunctionDef</a> (self, ast.FunctionDef node)</td></tr>
|
||||
<tr class="separator:a0a61d0cd34072cb712df523d6fc504e3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a4cfb94377152b62a164976d6bd5e2fc5" id="r_a4cfb94377152b62a164976d6bd5e2fc5"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5">current_class</a></td></tr>
|
||||
<tr class="separator:a4cfb94377152b62a164976d6bd5e2fc5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a02e62f7a280ff5bfabb39f312c0f58fc" id="r_a02e62f7a280ff5bfabb39f312c0f58fc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc">mapping</a></td></tr>
|
||||
<tr class="separator:a02e62f7a280ff5bfabb39f312c0f58fc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Transform class-related nodes using the mapping.
|
||||
@details Renames class names, methods, and self.attr/self.method references
|
||||
according to the analyzed mappings.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00268">268</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="af7356231305781d4b6287bde4fe38f9e" name="af7356231305781d4b6287bde4fe38f9e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af7356231305781d4b6287bde4fe38f9e">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassMapping.html">ClassMapping</a> </td>
|
||||
<td class="paramname"><em>mapping</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00275">275</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 275</span> <span class="keyword">def </span>__init__(self, mapping: ClassMapping):</div>
|
||||
<div class="line"><span class="lineno"> 276</span> self.mapping = mapping</div>
|
||||
<div class="line"><span class="lineno"> 277</span> self.current_class: Optional[str] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 278</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a18fb4582603ee59841361810858c680e" name="a18fb4582603ee59841361810858c680e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a18fb4582603ee59841361810858c680e">◆ </a></span>visit_Attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.visit_Attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Attribute </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Transform self.method and self.attr references.
|
||||
@param node ast.Attribute node.
|
||||
@return ast.Attribute Transformed attribute node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00315">315</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 315</span> <span class="keyword">def </span>visit_Attribute(self, node: ast.Attribute):</div>
|
||||
<div class="line"><span class="lineno"> 316</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 317</span><span class="stringliteral"> @brief Transform self.method and self.attr references.</span></div>
|
||||
<div class="line"><span class="lineno"> 318</span><span class="stringliteral"> @param node ast.Attribute node.</span></div>
|
||||
<div class="line"><span class="lineno"> 319</span><span class="stringliteral"> @return ast.Attribute Transformed attribute node.</span></div>
|
||||
<div class="line"><span class="lineno"> 320</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 321</span> <span class="comment"># Process any child nodes first (for nested attributes)</span></div>
|
||||
<div class="line"><span class="lineno"> 322</span> node.value = self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 323</span> </div>
|
||||
<div class="line"><span class="lineno"> 324</span> <span class="comment"># Check if this is a self.attr or self.method reference</span></div>
|
||||
<div class="line"><span class="lineno"> 325</span> <span class="keywordflow">if</span> self.current_class <span class="keywordflow">and</span> isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span>:</div>
|
||||
<div class="line"><span class="lineno"> 326</span> orig_name = node.attr</div>
|
||||
<div class="line"><span class="lineno"> 327</span> </div>
|
||||
<div class="line"><span class="lineno"> 328</span> <span class="comment"># Check in method mappings first</span></div>
|
||||
<div class="line"><span class="lineno"> 329</span> <span class="keywordflow">if</span> self.current_class <span class="keywordflow">in</span> self.mapping.class_methods <span class="keywordflow">and</span> node.attr <span class="keywordflow">in</span> self.mapping.class_methods[self.current_class]:</div>
|
||||
<div class="line"><span class="lineno"> 330</span> node.attr = self.mapping.class_methods[self.current_class][node.attr]</div>
|
||||
<div class="line"><span class="lineno"> 331</span> logger.debug(f<span class="stringliteral">"Transformed self.method {self.current_class}.{orig_name} -> {node.attr}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 332</span> </div>
|
||||
<div class="line"><span class="lineno"> 333</span> <span class="comment"># Then check attribute mappings</span></div>
|
||||
<div class="line"><span class="lineno"> 334</span> <span class="keywordflow">elif</span> self.current_class <span class="keywordflow">in</span> self.mapping.class_attributes <span class="keywordflow">and</span> node.attr <span class="keywordflow">in</span> self.mapping.class_attributes[self.current_class]:</div>
|
||||
<div class="line"><span class="lineno"> 335</span> node.attr = self.mapping.class_attributes[self.current_class][node.attr]</div>
|
||||
<div class="line"><span class="lineno"> 336</span> logger.debug(f<span class="stringliteral">"Transformed self.attr {self.current_class}.{orig_name} -> {node.attr}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 337</span> </div>
|
||||
<div class="line"><span class="lineno"> 338</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><span class="lineno"> 339</span> </div>
|
||||
<div class="line"><span class="lineno"> 340</span><span class="comment"># Helper function to apply the class mapping transformation</span></div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, and <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a54db45ae6b1b4e8ffdf6c56ae4c67fd3" name="a54db45ae6b1b4e8ffdf6c56ae4c67fd3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a54db45ae6b1b4e8ffdf6c56ae4c67fd3">◆ </a></span>visit_ClassDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.visit_ClassDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ClassDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Transform class name and process its body.
|
||||
@param node ast.ClassDef node.
|
||||
@return ast.ClassDef Transformed class node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00279">279</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 279</span> <span class="keyword">def </span>visit_ClassDef(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 280</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 281</span><span class="stringliteral"> @brief Transform class name and process its body.</span></div>
|
||||
<div class="line"><span class="lineno"> 282</span><span class="stringliteral"> @param node ast.ClassDef node.</span></div>
|
||||
<div class="line"><span class="lineno"> 283</span><span class="stringliteral"> @return ast.ClassDef Transformed class node.</span></div>
|
||||
<div class="line"><span class="lineno"> 284</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 285</span> prev_class = self.current_class</div>
|
||||
<div class="line"><span class="lineno"> 286</span> orig_name = node.name</div>
|
||||
<div class="line"><span class="lineno"> 287</span> self.current_class = orig_name</div>
|
||||
<div class="line"><span class="lineno"> 288</span> </div>
|
||||
<div class="line"><span class="lineno"> 289</span> <span class="comment"># Rename class if it's in our mapping</span></div>
|
||||
<div class="line"><span class="lineno"> 290</span> <span class="keywordflow">if</span> node.name <span class="keywordflow">in</span> self.mapping.class_names:</div>
|
||||
<div class="line"><span class="lineno"> 291</span> node.name = self.mapping.class_names[node.name]</div>
|
||||
<div class="line"><span class="lineno"> 292</span> logger.debug(f<span class="stringliteral">"Transformed class {orig_name} -> {node.name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 293</span> </div>
|
||||
<div class="line"><span class="lineno"> 294</span> <span class="comment"># Process class body</span></div>
|
||||
<div class="line"><span class="lineno"> 295</span> node.body = [self.visit(item) <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body]</div>
|
||||
<div class="line"><span class="lineno"> 296</span> </div>
|
||||
<div class="line"><span class="lineno"> 297</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 298</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><span class="lineno"> 299</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, and <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0a61d0cd34072cb712df523d6fc504e3" name="a0a61d0cd34072cb712df523d6fc504e3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a61d0cd34072cb712df523d6fc504e3">◆ </a></span>visit_FunctionDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.visit_FunctionDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.FunctionDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Transform method name.
|
||||
@param node ast.FunctionDef node.
|
||||
@return ast.FunctionDef Transformed method node.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00300">300</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 300</span> <span class="keyword">def </span>visit_FunctionDef(self, node: ast.FunctionDef):</div>
|
||||
<div class="line"><span class="lineno"> 301</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 302</span><span class="stringliteral"> @brief Transform method name.</span></div>
|
||||
<div class="line"><span class="lineno"> 303</span><span class="stringliteral"> @param node ast.FunctionDef node.</span></div>
|
||||
<div class="line"><span class="lineno"> 304</span><span class="stringliteral"> @return ast.FunctionDef Transformed method node.</span></div>
|
||||
<div class="line"><span class="lineno"> 305</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 306</span> <span class="keywordflow">if</span> self.current_class <span class="keywordflow">and</span> node.name <span class="keywordflow">in</span> self.mapping.class_methods.get(self.current_class, {}):</div>
|
||||
<div class="line"><span class="lineno"> 307</span> orig_name = node.name</div>
|
||||
<div class="line"><span class="lineno"> 308</span> node.name = self.mapping.class_methods[self.current_class][node.name]</div>
|
||||
<div class="line"><span class="lineno"> 309</span> logger.debug(f<span class="stringliteral">"Transformed method {self.current_class}.{orig_name} -> {node.name}"</span>)</div>
|
||||
<div class="line"><span class="lineno"> 310</span> </div>
|
||||
<div class="line"><span class="lineno"> 311</span> <span class="comment"># Visit the method body</span></div>
|
||||
<div class="line"><span class="lineno"> 312</span> node.body = [self.visit(item) <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body]</div>
|
||||
<div class="line"><span class="lineno"> 313</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><span class="lineno"> 314</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00071">transformers.class_mapper.ClassMapAnalyzer.mapping</a>, and <a class="el" href="class__mapper_8py_source.html#l00276">transformers.class_mapper.ClassTransformer.mapping</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a4cfb94377152b62a164976d6bd5e2fc5" name="a4cfb94377152b62a164976d6bd5e2fc5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4cfb94377152b62a164976d6bd5e2fc5">◆ </a></span>current_class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.current_class</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00287">287</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00141">transformers.class_analyzer.ClassAnalyzer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00094">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00279">transformers.class_mapper.ClassTransformer.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>, and <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a02e62f7a280ff5bfabb39f312c0f58fc" name="a02e62f7a280ff5bfabb39f312c0f58fc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a02e62f7a280ff5bfabb39f312c0f58fc">◆ </a></span>mapping</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.class_mapper.ClassTransformer.mapping</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="class__mapper_8py_source.html#l00276">276</a> of file <a class="el" href="class__mapper_8py_source.html">class_mapper.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__mapper_8py_source.html#l00220">transformers.class_mapper.ClassMapAnalyzer._resolve_inheritance()</a>, <a class="el" href="class__mapper_8py_source.html#l00076">transformers.class_mapper.ClassMapAnalyzer.analyze()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, and <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="class__mapper_8py_source.html">class_mapper.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1class__mapper.html">class_mapper</a></li><li class="navelem"><a class="el" href="classtransformers_1_1class__mapper_1_1ClassTransformer.html">ClassTransformer</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
var classtransformers_1_1class__mapper_1_1ClassTransformer =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#af7356231305781d4b6287bde4fe38f9e", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#a18fb4582603ee59841361810858c680e", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#a54db45ae6b1b4e8ffdf6c56ae4c67fd3", null ],
|
||||
[ "visit_FunctionDef", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#a0a61d0cd34072cb712df523d6fc504e3", null ],
|
||||
[ "current_class", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#a4cfb94377152b62a164976d6bd5e2fc5", null ],
|
||||
[ "mapping", "classtransformers_1_1class__mapper_1_1ClassTransformer.html#a02e62f7a280ff5bfabb39f312c0f58fc", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_mapper.ClassTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_mapper.ClassTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.class_mapper.ClassTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.class\l_mapper.ClassTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1control__flow_1_1ControlFlowFlattener.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.control_flow.ControlFlowFlattener Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a08a538261912ba3c8ec059dd8f528732">__init__</a>(self, debug_mode=False)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">debug_data</a></td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a></td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022">flatten_blocks</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946">generate_junk_code</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(self, str category, Any data)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a></td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a></td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a0af6bdcc5f0423e92bbaff8f11134ee9">visit_Break</a>(self, ast.Break node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a3f96cc0e595090bd445525dacc81a52e">visit_Continue</a>(self, ast.Continue node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a336fefe281452a4cefb0017de41f6cb5">visit_For</a>(self, ast.For node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a708096f6acd688fa597f7695d9eea010">visit_FunctionDef</a>(self, ast.FunctionDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ac394afa0ffcadb438bf3419375480ba8">visit_If</a>(self, ast.If node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ae1e8400d54ec1b75fdc514cd1609120f">visit_Return</a>(self, ast.Return node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aed99b58ddd8e19899955f356323d7a71">visit_While</a>(self, ast.While node)</td><td class="entry"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
var classtransformers_1_1control__flow_1_1ControlFlowFlattener =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a08a538261912ba3c8ec059dd8f528732", null ],
|
||||
[ "flatten_blocks", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022", null ],
|
||||
[ "generate_junk_code", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946", null ],
|
||||
[ "log_debug", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c", null ],
|
||||
[ "visit_Break", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a0af6bdcc5f0423e92bbaff8f11134ee9", null ],
|
||||
[ "visit_Continue", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a3f96cc0e595090bd445525dacc81a52e", null ],
|
||||
[ "visit_For", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a336fefe281452a4cefb0017de41f6cb5", null ],
|
||||
[ "visit_FunctionDef", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a708096f6acd688fa597f7695d9eea010", null ],
|
||||
[ "visit_If", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ac394afa0ffcadb438bf3419375480ba8", null ],
|
||||
[ "visit_Return", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ae1e8400d54ec1b75fdc514cd1609120f", null ],
|
||||
[ "visit_While", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aed99b58ddd8e19899955f356323d7a71", null ],
|
||||
[ "current_block_id", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d", null ],
|
||||
[ "debug_data", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013", null ],
|
||||
[ "debug_mode", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a", null ],
|
||||
[ "state_var_name", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95", null ],
|
||||
[ "states", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.control_flow.ControlFlowFlattener"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.control\l_flow.ControlFlowFlattener",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.control_flow.ControlFlowFlattener"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.control\l_flow.ControlFlowFlattener",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1rename_1_1RenameTransformer.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.rename.RenameTransformer Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a41c7ff17fad58c5d75f9b42c3bae8b98">__init__</a>(self, name_generator, global_var_renames, class_attr_mapping, primary_key, secondary_key, salt, debug_mode=False)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#abdbb42558625854c0535dfb7610ec136">_pop_scope</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#acd49db2a6b3c22d6eaaec55ddcc95620">_push_scope</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ac4975f5038d05ec36f550bf6706e4d84">class_attr_mapping</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ab89f9fee976059e47e655e21952dc010">class_method_mapping</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#afdd8f38035ed680a0c28236d51c1cd69">current_class_name</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a2c367ecd7eb38ba4600dda4671b0ab37">debug_data</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a285d017ddc69b2f8b20824251e8ddad4">debug_mode</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ae8272a419a6f3c2ea0ab6b8cc42e376e">encryptor</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#aa61f87dcb4066c6e3676e39a309a523d">first_pass</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a8d691eb384ad7616eda40956de5bb95e">global_var_renames</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a44a154d4cf962916a1d861e12d593642">in_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a15d28a47a1cde0841e7395822acc1763">key_setup_code</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a0d8e460a12ba4bf74a95882aa6bb3835">log_debug</a>(self, str category, any data)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a04dd79b46f0e252cc1c55f10e63ad938">name_generator</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ab87d8148ef510b4803c4332deff663d5">scan_class_methods</a>(self, node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a41eded65457e873912b6874d6a0c2909">scope_stack</a></td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a89a7f9a7f5c45440346c798fc8840ac7">visit_Attribute</a>(self, ast.Attribute node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a6dc39dff4863373a67b4095f234793dc">visit_Call</a>(self, ast.Call node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a9d9392f24ca47278859f5e46da1bce45">visit_ClassDef</a>(self, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a0660f79cdf349288c43d6fc49ae23a2c">visit_comprehension</a>(self, ast.comprehension node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ad81bc6a0c7abb3094b23b6dc03ecfd29">visit_Constant</a>(self, ast.Constant node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a1fa5c552e136af25f432f975094b7cbf">visit_DictComp</a>(self, ast.DictComp node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a4309d59dde0369e0b8476b8d6b84d500">visit_FunctionDef</a>(self, ast.FunctionDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a771a06f14514e325c016778767307274">visit_GeneratorExp</a>(self, ast.GeneratorExp node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ae366228dc64c18fa26f2ba7fa6453444">visit_Global</a>(self, ast.Global node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a99663ce64c7051d684d84cf8fd1dca5a">visit_Import</a>(self, ast.Import node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ae4a3532894dd265babf99765ca109dc6">visit_ImportFrom</a>(self, ast.ImportFrom node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a6583f4eb358270431dda81d0d939162d">visit_ListComp</a>(self, ast.ListComp node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#af219e2b8032497024cf99f76578eea8b">visit_Module</a>(self, ast.Module node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a6ffe49f1216346f0727df849dae7163a">visit_Name</a>(self, ast.Name node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#a29d393746b1977c8181a439c51207bf1">visit_SetComp</a>(self, ast.SetComp node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html#ab4fcef7ad6262e7595e449738e977a5d">visit_Subscript</a>(self, ast.Subscript node)</td><td class="entry"><a class="el" href="classtransformers_1_1rename_1_1RenameTransformer.html">transformers.rename.RenameTransformer</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,36 @@
|
||||
var classtransformers_1_1rename_1_1RenameTransformer =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1rename_1_1RenameTransformer.html#a41c7ff17fad58c5d75f9b42c3bae8b98", null ],
|
||||
[ "_pop_scope", "classtransformers_1_1rename_1_1RenameTransformer.html#abdbb42558625854c0535dfb7610ec136", null ],
|
||||
[ "_push_scope", "classtransformers_1_1rename_1_1RenameTransformer.html#acd49db2a6b3c22d6eaaec55ddcc95620", null ],
|
||||
[ "log_debug", "classtransformers_1_1rename_1_1RenameTransformer.html#a0d8e460a12ba4bf74a95882aa6bb3835", null ],
|
||||
[ "scan_class_methods", "classtransformers_1_1rename_1_1RenameTransformer.html#ab87d8148ef510b4803c4332deff663d5", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1rename_1_1RenameTransformer.html#a89a7f9a7f5c45440346c798fc8840ac7", null ],
|
||||
[ "visit_Call", "classtransformers_1_1rename_1_1RenameTransformer.html#a6dc39dff4863373a67b4095f234793dc", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1rename_1_1RenameTransformer.html#a9d9392f24ca47278859f5e46da1bce45", null ],
|
||||
[ "visit_comprehension", "classtransformers_1_1rename_1_1RenameTransformer.html#a0660f79cdf349288c43d6fc49ae23a2c", null ],
|
||||
[ "visit_Constant", "classtransformers_1_1rename_1_1RenameTransformer.html#ad81bc6a0c7abb3094b23b6dc03ecfd29", null ],
|
||||
[ "visit_DictComp", "classtransformers_1_1rename_1_1RenameTransformer.html#a1fa5c552e136af25f432f975094b7cbf", null ],
|
||||
[ "visit_FunctionDef", "classtransformers_1_1rename_1_1RenameTransformer.html#a4309d59dde0369e0b8476b8d6b84d500", null ],
|
||||
[ "visit_GeneratorExp", "classtransformers_1_1rename_1_1RenameTransformer.html#a771a06f14514e325c016778767307274", null ],
|
||||
[ "visit_Global", "classtransformers_1_1rename_1_1RenameTransformer.html#ae366228dc64c18fa26f2ba7fa6453444", null ],
|
||||
[ "visit_Import", "classtransformers_1_1rename_1_1RenameTransformer.html#a99663ce64c7051d684d84cf8fd1dca5a", null ],
|
||||
[ "visit_ImportFrom", "classtransformers_1_1rename_1_1RenameTransformer.html#ae4a3532894dd265babf99765ca109dc6", null ],
|
||||
[ "visit_ListComp", "classtransformers_1_1rename_1_1RenameTransformer.html#a6583f4eb358270431dda81d0d939162d", null ],
|
||||
[ "visit_Module", "classtransformers_1_1rename_1_1RenameTransformer.html#af219e2b8032497024cf99f76578eea8b", null ],
|
||||
[ "visit_Name", "classtransformers_1_1rename_1_1RenameTransformer.html#a6ffe49f1216346f0727df849dae7163a", null ],
|
||||
[ "visit_SetComp", "classtransformers_1_1rename_1_1RenameTransformer.html#a29d393746b1977c8181a439c51207bf1", null ],
|
||||
[ "visit_Subscript", "classtransformers_1_1rename_1_1RenameTransformer.html#ab4fcef7ad6262e7595e449738e977a5d", null ],
|
||||
[ "class_attr_mapping", "classtransformers_1_1rename_1_1RenameTransformer.html#ac4975f5038d05ec36f550bf6706e4d84", null ],
|
||||
[ "class_method_mapping", "classtransformers_1_1rename_1_1RenameTransformer.html#ab89f9fee976059e47e655e21952dc010", null ],
|
||||
[ "current_class_name", "classtransformers_1_1rename_1_1RenameTransformer.html#afdd8f38035ed680a0c28236d51c1cd69", null ],
|
||||
[ "debug_data", "classtransformers_1_1rename_1_1RenameTransformer.html#a2c367ecd7eb38ba4600dda4671b0ab37", null ],
|
||||
[ "debug_mode", "classtransformers_1_1rename_1_1RenameTransformer.html#a285d017ddc69b2f8b20824251e8ddad4", null ],
|
||||
[ "encryptor", "classtransformers_1_1rename_1_1RenameTransformer.html#ae8272a419a6f3c2ea0ab6b8cc42e376e", null ],
|
||||
[ "first_pass", "classtransformers_1_1rename_1_1RenameTransformer.html#aa61f87dcb4066c6e3676e39a309a523d", null ],
|
||||
[ "global_var_renames", "classtransformers_1_1rename_1_1RenameTransformer.html#a8d691eb384ad7616eda40956de5bb95e", null ],
|
||||
[ "in_class", "classtransformers_1_1rename_1_1RenameTransformer.html#a44a154d4cf962916a1d861e12d593642", null ],
|
||||
[ "key_setup_code", "classtransformers_1_1rename_1_1RenameTransformer.html#a15d28a47a1cde0841e7395822acc1763", null ],
|
||||
[ "name_generator", "classtransformers_1_1rename_1_1RenameTransformer.html#a04dd79b46f0e252cc1c55f10e63ad938", null ],
|
||||
[ "scope_stack", "classtransformers_1_1rename_1_1RenameTransformer.html#a41eded65457e873912b6874d6a0c2909", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.rename.RenameTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.rename.Rename\lTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.rename.RenameTransformer"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.rename.Rename\lTransformer",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeTransformer",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1ClassScope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.ClassScope Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">transformers.symbol_tree.ClassScope</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a359688eee5249d7f4c8929ab5348115f">__init__</a>(self, str name, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">transformers.symbol_tree.ClassScope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a279fe21a8a95cd5b3b3c64d699922aa3">add_attribute</a>(self, Symbol attr)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">transformers.symbol_tree.ClassScope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a802567dd6aeb95d3c45929992cbe4ce8">add_base_class</a>(self, str base_name)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">transformers.symbol_tree.ClassScope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#ad8149b754ff7a1a122a8735b733b3853">add_method</a>(self, Symbol method)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">transformers.symbol_tree.ClassScope</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,322 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.ClassScope Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1ClassScope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1ClassScope-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.ClassScope Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.symbol_tree.ClassScope:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1ClassScope__inherit__graph.png" border="0" usemap="#atransformers_8symbol__tree_8ClassScope_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.symbol_tree.ClassScope:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1ClassScope__coll__graph.png" border="0" usemap="#atransformers_8symbol__tree_8ClassScope_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:a359688eee5249d7f4c8929ab5348115f" id="r_a359688eee5249d7f4c8929ab5348115f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a359688eee5249d7f4c8929ab5348115f">__init__</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>, ast.ClassDef <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a>)</td></tr>
|
||||
<tr class="separator:a359688eee5249d7f4c8929ab5348115f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a279fe21a8a95cd5b3b3c64d699922aa3" id="r_a279fe21a8a95cd5b3b3c64d699922aa3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a279fe21a8a95cd5b3b3c64d699922aa3">add_attribute</a> (self, <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> attr)</td></tr>
|
||||
<tr class="separator:a279fe21a8a95cd5b3b3c64d699922aa3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a802567dd6aeb95d3c45929992cbe4ce8" id="r_a802567dd6aeb95d3c45929992cbe4ce8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a802567dd6aeb95d3c45929992cbe4ce8">add_base_class</a> (self, str base_name)</td></tr>
|
||||
<tr class="separator:a802567dd6aeb95d3c45929992cbe4ce8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad8149b754ff7a1a122a8735b733b3853" id="r_ad8149b754ff7a1a122a8735b733b3853"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#ad8149b754ff7a1a122a8735b733b3853">add_method</a> (self, <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> method)</td></tr>
|
||||
<tr class="separator:ad8149b754ff7a1a122a8735b733b3853"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtransformers_1_1symbol__tree_1_1Scope')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td></tr>
|
||||
<tr class="memitem:af3b53a662c490b6d028b629d05661f08 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_af3b53a662c490b6d028b629d05661f08"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#af3b53a662c490b6d028b629d05661f08">__repr__</a> (self)</td></tr>
|
||||
<tr class="separator:af3b53a662c490b6d028b629d05661f08 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0081ee771c31639c01b2b1da2616100c inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_a0081ee771c31639c01b2b1da2616100c"><td class="memItemLeft" align="right" valign="top"> '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a0081ee771c31639c01b2b1da2616100c">add_child_scope</a> (self, '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' scope)</td></tr>
|
||||
<tr class="separator:a0081ee771c31639c01b2b1da2616100c inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abfdd86fbdb9eb9f43e59407433981217 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_abfdd86fbdb9eb9f43e59407433981217"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#abfdd86fbdb9eb9f43e59407433981217">add_symbol</a> (self, <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> symbol)</td></tr>
|
||||
<tr class="separator:abfdd86fbdb9eb9f43e59407433981217 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a72bf2569e37369e3f845ac2441080a9d inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_a72bf2569e37369e3f845ac2441080a9d"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a72bf2569e37369e3f845ac2441080a9d">get_qualified_name</a> (self)</td></tr>
|
||||
<tr class="separator:a72bf2569e37369e3f845ac2441080a9d inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aea26fa0ade2ce3d7f82cf28a7fec0d16 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_aea26fa0ade2ce3d7f82cf28a7fec0d16"><td class="memItemLeft" align="right" valign="top">Optional[<a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a>] </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#aea26fa0ade2ce3d7f82cf28a7fec0d16">lookup</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>)</td></tr>
|
||||
<tr class="separator:aea26fa0ade2ce3d7f82cf28a7fec0d16 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<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_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtransformers_1_1symbol__tree_1_1Scope')"><img src="closed.png" alt="-"/> Public Attributes inherited from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td></tr>
|
||||
<tr class="memitem:ab08134920b738ab813bcd04724cc3696 inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_ab08134920b738ab813bcd04724cc3696"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a></td></tr>
|
||||
<tr class="separator:ab08134920b738ab813bcd04724cc3696 inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a51ed89fe0be033cd0643a4d943a1f12b inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_a51ed89fe0be033cd0643a4d943a1f12b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a></td></tr>
|
||||
<tr class="separator:a51ed89fe0be033cd0643a4d943a1f12b inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afcd5b42c282fac61354d80897b5c751e inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_afcd5b42c282fac61354d80897b5c751e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e">scope_type</a></td></tr>
|
||||
<tr class="separator:afcd5b42c282fac61354d80897b5c751e inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">A specialized scope for classes with additional tracking for inheritance.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00102">102</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a359688eee5249d7f4c8929ab5348115f" name="a359688eee5249d7f4c8929ab5348115f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a359688eee5249d7f4c8929ab5348115f">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.ClassScope.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ClassDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Reimplemented from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a46787477db922894246fecb5c12486b4">transformers.symbol_tree.Scope</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00105">105</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 105</span> <span class="keyword">def </span>__init__(self, name: str, node: ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 106</span> super().__init__(name, <span class="stringliteral">"class"</span>, node)</div>
|
||||
<div class="line"><span class="lineno"> 107</span> self.base_classes: List[str] = [] <span class="comment"># Names of base classes</span></div>
|
||||
<div class="line"><span class="lineno"> 108</span> self.methods: Dict[str, Symbol] = {} <span class="comment"># Methods defined in this class</span></div>
|
||||
<div class="line"><span class="lineno"> 109</span> self.attributes: Dict[str, Symbol] = {} <span class="comment"># Attributes defined in this class</span></div>
|
||||
<div class="line"><span class="lineno"> 110</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00105">transformers.symbol_tree.ClassScope.__init__()</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00105">transformers.symbol_tree.ClassScope.__init__()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a279fe21a8a95cd5b3b3c64d699922aa3" name="a279fe21a8a95cd5b3b3c64d699922aa3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a279fe21a8a95cd5b3b3c64d699922aa3">◆ </a></span>add_attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> transformers.symbol_tree.ClassScope.add_attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td>
|
||||
<td class="paramname"><em>attr</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add an attribute to this class.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00121">121</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 121</span> <span class="keyword">def </span>add_attribute(self, attr: Symbol) -> Symbol:</div>
|
||||
<div class="line"><span class="lineno"> 122</span> <span class="stringliteral">"""Add an attribute to this class."""</span></div>
|
||||
<div class="line"><span class="lineno"> 123</span> self.attributes[attr.name] = attr</div>
|
||||
<div class="line"><span class="lineno"> 124</span> <span class="keywordflow">return</span> self.add_symbol(attr)</div>
|
||||
<div class="line"><span class="lineno"> 125</span> </div>
|
||||
<div class="line"><span class="lineno"> 126</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00192">transformers.symbol_tree.SymbolTree.add_symbol()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00072">transformers.symbol_tree.Scope.add_symbol()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a802567dd6aeb95d3c45929992cbe4ce8" name="a802567dd6aeb95d3c45929992cbe4ce8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a802567dd6aeb95d3c45929992cbe4ce8">◆ </a></span>add_base_class()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.ClassScope.add_base_class </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>base_name</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a base class to this class's inheritance list.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00111">111</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 111</span> <span class="keyword">def </span>add_base_class(self, base_name: str):</div>
|
||||
<div class="line"><span class="lineno"> 112</span> <span class="stringliteral">"""Add a base class to this class's inheritance list."""</span></div>
|
||||
<div class="line"><span class="lineno"> 113</span> <span class="keywordflow">if</span> base_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.base_classes:</div>
|
||||
<div class="line"><span class="lineno"> 114</span> self.base_classes.append(base_name)</div>
|
||||
<div class="line"><span class="lineno"> 115</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad8149b754ff7a1a122a8735b733b3853" name="ad8149b754ff7a1a122a8735b733b3853"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad8149b754ff7a1a122a8735b733b3853">◆ </a></span>add_method()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> transformers.symbol_tree.ClassScope.add_method </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td>
|
||||
<td class="paramname"><em>method</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a method to this class.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00116">116</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 116</span> <span class="keyword">def </span>add_method(self, method: Symbol) -> Symbol:</div>
|
||||
<div class="line"><span class="lineno"> 117</span> <span class="stringliteral">"""Add a method to this class."""</span></div>
|
||||
<div class="line"><span class="lineno"> 118</span> self.methods[method.name] = method</div>
|
||||
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">return</span> self.add_symbol(method)</div>
|
||||
<div class="line"><span class="lineno"> 120</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00192">transformers.symbol_tree.SymbolTree.add_symbol()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00072">transformers.symbol_tree.Scope.add_symbol()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html">ClassScope</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
var classtransformers_1_1symbol__tree_1_1ClassScope =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1ClassScope.html#a359688eee5249d7f4c8929ab5348115f", null ],
|
||||
[ "add_attribute", "classtransformers_1_1symbol__tree_1_1ClassScope.html#a279fe21a8a95cd5b3b3c64d699922aa3", null ],
|
||||
[ "add_base_class", "classtransformers_1_1symbol__tree_1_1ClassScope.html#a802567dd6aeb95d3c45929992cbe4ce8", null ],
|
||||
[ "add_method", "classtransformers_1_1symbol__tree_1_1ClassScope.html#ad8149b754ff7a1a122a8735b733b3853", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.ClassScope"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.ClassScope",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="transformers.symbol\l_tree.Scope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1Scope.html",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.ClassScope"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.ClassScope",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="transformers.symbol\l_tree.Scope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1Scope.html",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1ModuleScope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.ModuleScope Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">transformers.symbol_tree.ModuleScope</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#a08701d98e737973214f9370291b63188">__init__</a>(self, str name, ast.Module node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">transformers.symbol_tree.ModuleScope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#a28659edddf055d62956a87218c564c46">add_from_import</a>(self, str module, str alias, str original)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">transformers.symbol_tree.ModuleScope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#af789af3957432b1d74e19d2e945aea80">add_import</a>(self, str alias, str original)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">transformers.symbol_tree.ModuleScope</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,298 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.ModuleScope Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1ModuleScope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1ModuleScope-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.ModuleScope Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.symbol_tree.ModuleScope:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1ModuleScope__inherit__graph.png" border="0" usemap="#atransformers_8symbol__tree_8ModuleScope_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.symbol_tree.ModuleScope:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1ModuleScope__coll__graph.png" border="0" usemap="#atransformers_8symbol__tree_8ModuleScope_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:a08701d98e737973214f9370291b63188" id="r_a08701d98e737973214f9370291b63188"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#a08701d98e737973214f9370291b63188">__init__</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>, ast.Module <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a>)</td></tr>
|
||||
<tr class="separator:a08701d98e737973214f9370291b63188"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a28659edddf055d62956a87218c564c46" id="r_a28659edddf055d62956a87218c564c46"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#a28659edddf055d62956a87218c564c46">add_from_import</a> (self, str module, str alias, str original)</td></tr>
|
||||
<tr class="separator:a28659edddf055d62956a87218c564c46"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af789af3957432b1d74e19d2e945aea80" id="r_af789af3957432b1d74e19d2e945aea80"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#af789af3957432b1d74e19d2e945aea80">add_import</a> (self, str alias, str original)</td></tr>
|
||||
<tr class="separator:af789af3957432b1d74e19d2e945aea80"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="inherit_header pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtransformers_1_1symbol__tree_1_1Scope')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td></tr>
|
||||
<tr class="memitem:af3b53a662c490b6d028b629d05661f08 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_af3b53a662c490b6d028b629d05661f08"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#af3b53a662c490b6d028b629d05661f08">__repr__</a> (self)</td></tr>
|
||||
<tr class="separator:af3b53a662c490b6d028b629d05661f08 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0081ee771c31639c01b2b1da2616100c inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_a0081ee771c31639c01b2b1da2616100c"><td class="memItemLeft" align="right" valign="top"> '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a0081ee771c31639c01b2b1da2616100c">add_child_scope</a> (self, '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' scope)</td></tr>
|
||||
<tr class="separator:a0081ee771c31639c01b2b1da2616100c inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abfdd86fbdb9eb9f43e59407433981217 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_abfdd86fbdb9eb9f43e59407433981217"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#abfdd86fbdb9eb9f43e59407433981217">add_symbol</a> (self, <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> symbol)</td></tr>
|
||||
<tr class="separator:abfdd86fbdb9eb9f43e59407433981217 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a72bf2569e37369e3f845ac2441080a9d inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_a72bf2569e37369e3f845ac2441080a9d"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a72bf2569e37369e3f845ac2441080a9d">get_qualified_name</a> (self)</td></tr>
|
||||
<tr class="separator:a72bf2569e37369e3f845ac2441080a9d inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aea26fa0ade2ce3d7f82cf28a7fec0d16 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope" id="r_aea26fa0ade2ce3d7f82cf28a7fec0d16"><td class="memItemLeft" align="right" valign="top">Optional[<a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a>] </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#aea26fa0ade2ce3d7f82cf28a7fec0d16">lookup</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>)</td></tr>
|
||||
<tr class="separator:aea26fa0ade2ce3d7f82cf28a7fec0d16 inherit pub_methods_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<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_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtransformers_1_1symbol__tree_1_1Scope')"><img src="closed.png" alt="-"/> Public Attributes inherited from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td></tr>
|
||||
<tr class="memitem:ab08134920b738ab813bcd04724cc3696 inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_ab08134920b738ab813bcd04724cc3696"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a></td></tr>
|
||||
<tr class="separator:ab08134920b738ab813bcd04724cc3696 inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a51ed89fe0be033cd0643a4d943a1f12b inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_a51ed89fe0be033cd0643a4d943a1f12b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a></td></tr>
|
||||
<tr class="separator:a51ed89fe0be033cd0643a4d943a1f12b inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afcd5b42c282fac61354d80897b5c751e inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope" id="r_afcd5b42c282fac61354d80897b5c751e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e">scope_type</a></td></tr>
|
||||
<tr class="separator:afcd5b42c282fac61354d80897b5c751e inherit pub_attribs_classtransformers_1_1symbol__tree_1_1Scope"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">A specialized scope for modules with additional tracking for imports.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00127">127</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a08701d98e737973214f9370291b63188" name="a08701d98e737973214f9370291b63188"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a08701d98e737973214f9370291b63188">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.ModuleScope.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Module </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Reimplemented from <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a46787477db922894246fecb5c12486b4">transformers.symbol_tree.Scope</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00130">130</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 130</span> <span class="keyword">def </span>__init__(self, name: str, node: ast.Module):</div>
|
||||
<div class="line"><span class="lineno"> 131</span> super().__init__(name, <span class="stringliteral">"module"</span>, node)</div>
|
||||
<div class="line"><span class="lineno"> 132</span> self.imports: Dict[str, str] = {} <span class="comment"># Import alias -> original name</span></div>
|
||||
<div class="line"><span class="lineno"> 133</span> self.from_imports: Dict[str, Dict[str, str]] = {} <span class="comment"># Module -> {alias -> original name}</span></div>
|
||||
<div class="line"><span class="lineno"> 134</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00130">transformers.symbol_tree.ModuleScope.__init__()</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00130">transformers.symbol_tree.ModuleScope.__init__()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a28659edddf055d62956a87218c564c46" name="a28659edddf055d62956a87218c564c46"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a28659edddf055d62956a87218c564c46">◆ </a></span>add_from_import()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.ModuleScope.add_from_import </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>module</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>alias</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>original</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a from-import to this module.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00139">139</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 139</span> <span class="keyword">def </span>add_from_import(self, module: str, alias: str, original: str):</div>
|
||||
<div class="line"><span class="lineno"> 140</span> <span class="stringliteral">"""Add a from-import to this module."""</span></div>
|
||||
<div class="line"><span class="lineno"> 141</span> <span class="keywordflow">if</span> module <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.from_imports:</div>
|
||||
<div class="line"><span class="lineno"> 142</span> self.from_imports[module] = {}</div>
|
||||
<div class="line"><span class="lineno"> 143</span> self.from_imports[module][alias] = original</div>
|
||||
<div class="line"><span class="lineno"> 144</span> </div>
|
||||
<div class="line"><span class="lineno"> 145</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="af789af3957432b1d74e19d2e945aea80" name="af789af3957432b1d74e19d2e945aea80"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af789af3957432b1d74e19d2e945aea80">◆ </a></span>add_import()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.ModuleScope.add_import </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>alias</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>original</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add an import to this module.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00135">135</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 135</span> <span class="keyword">def </span>add_import(self, alias: str, original: str):</div>
|
||||
<div class="line"><span class="lineno"> 136</span> <span class="stringliteral">"""Add an import to this module."""</span></div>
|
||||
<div class="line"><span class="lineno"> 137</span> self.imports[alias] = original</div>
|
||||
<div class="line"><span class="lineno"> 138</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html">ModuleScope</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,6 @@
|
||||
var classtransformers_1_1symbol__tree_1_1ModuleScope =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1ModuleScope.html#a08701d98e737973214f9370291b63188", null ],
|
||||
[ "add_from_import", "classtransformers_1_1symbol__tree_1_1ModuleScope.html#a28659edddf055d62956a87218c564c46", null ],
|
||||
[ "add_import", "classtransformers_1_1symbol__tree_1_1ModuleScope.html#af789af3957432b1d74e19d2e945aea80", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.ModuleScope"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.ModuleScope",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="transformers.symbol\l_tree.Scope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1Scope.html",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.ModuleScope"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.ModuleScope",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="transformers.symbol\l_tree.Scope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1Scope.html",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1Scope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.Scope Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a46787477db922894246fecb5c12486b4">__init__</a>(self, str name, str scope_type, ast.AST node=None)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#af3b53a662c490b6d028b629d05661f08">__repr__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a0081ee771c31639c01b2b1da2616100c">add_child_scope</a>(self, 'Scope' scope)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#abfdd86fbdb9eb9f43e59407433981217">add_symbol</a>(self, Symbol symbol)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a72bf2569e37369e3f845ac2441080a9d">get_qualified_name</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#aea26fa0ade2ce3d7f82cf28a7fec0d16">lookup</a>(self, str name)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e">scope_type</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">transformers.symbol_tree.Scope</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,428 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.Scope Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1Scope.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1Scope-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.Scope Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.symbol_tree.Scope:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1Scope__inherit__graph.png" border="0" usemap="#atransformers_8symbol__tree_8Scope_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:a46787477db922894246fecb5c12486b4" id="r_a46787477db922894246fecb5c12486b4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a46787477db922894246fecb5c12486b4">__init__</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e">scope_type</a>, ast.AST <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a>=None)</td></tr>
|
||||
<tr class="separator:a46787477db922894246fecb5c12486b4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af3b53a662c490b6d028b629d05661f08" id="r_af3b53a662c490b6d028b629d05661f08"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#af3b53a662c490b6d028b629d05661f08">__repr__</a> (self)</td></tr>
|
||||
<tr class="separator:af3b53a662c490b6d028b629d05661f08"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0081ee771c31639c01b2b1da2616100c" id="r_a0081ee771c31639c01b2b1da2616100c"><td class="memItemLeft" align="right" valign="top"> '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a0081ee771c31639c01b2b1da2616100c">add_child_scope</a> (self, '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' scope)</td></tr>
|
||||
<tr class="separator:a0081ee771c31639c01b2b1da2616100c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abfdd86fbdb9eb9f43e59407433981217" id="r_abfdd86fbdb9eb9f43e59407433981217"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#abfdd86fbdb9eb9f43e59407433981217">add_symbol</a> (self, <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> symbol)</td></tr>
|
||||
<tr class="separator:abfdd86fbdb9eb9f43e59407433981217"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a72bf2569e37369e3f845ac2441080a9d" id="r_a72bf2569e37369e3f845ac2441080a9d"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a72bf2569e37369e3f845ac2441080a9d">get_qualified_name</a> (self)</td></tr>
|
||||
<tr class="separator:a72bf2569e37369e3f845ac2441080a9d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aea26fa0ade2ce3d7f82cf28a7fec0d16" id="r_aea26fa0ade2ce3d7f82cf28a7fec0d16"><td class="memItemLeft" align="right" valign="top">Optional[<a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a>] </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#aea26fa0ade2ce3d7f82cf28a7fec0d16">lookup</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a>)</td></tr>
|
||||
<tr class="separator:aea26fa0ade2ce3d7f82cf28a7fec0d16"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ab08134920b738ab813bcd04724cc3696" id="r_ab08134920b738ab813bcd04724cc3696"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696">name</a></td></tr>
|
||||
<tr class="separator:ab08134920b738ab813bcd04724cc3696"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a51ed89fe0be033cd0643a4d943a1f12b" id="r_a51ed89fe0be033cd0643a4d943a1f12b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b">node</a></td></tr>
|
||||
<tr class="separator:a51ed89fe0be033cd0643a4d943a1f12b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afcd5b42c282fac61354d80897b5c751e" id="r_afcd5b42c282fac61354d80897b5c751e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e">scope_type</a></td></tr>
|
||||
<tr class="separator:afcd5b42c282fac61354d80897b5c751e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">Represents a scope in the code, such as a module, function, class, or comprehension.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00054">54</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a46787477db922894246fecb5c12486b4" name="a46787477db922894246fecb5c12486b4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a46787477db922894246fecb5c12486b4">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Scope.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>scope_type</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST  </td>
|
||||
<td class="paramname"><em>node</em> = <code>None</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Reimplemented in <a class="el" href="classtransformers_1_1symbol__tree_1_1ClassScope.html#a359688eee5249d7f4c8929ab5348115f">transformers.symbol_tree.ClassScope</a>, and <a class="el" href="classtransformers_1_1symbol__tree_1_1ModuleScope.html#a08701d98e737973214f9370291b63188">transformers.symbol_tree.ModuleScope</a>.</p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00058">58</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 58</span> <span class="keyword">def </span>__init__(self, name: str, scope_type: str, node: ast.AST = <span class="keywordtype">None</span>):</div>
|
||||
<div class="line"><span class="lineno"> 59</span> self.name = name</div>
|
||||
<div class="line"><span class="lineno"> 60</span> self.scope_type = scope_type</div>
|
||||
<div class="line"><span class="lineno"> 61</span> self.node = node</div>
|
||||
<div class="line"><span class="lineno"> 62</span> </div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="comment"># Maps: symbol name -> Symbol object</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span> self.symbols: Dict[str, Symbol] = {}</div>
|
||||
<div class="line"><span class="lineno"> 65</span> </div>
|
||||
<div class="line"><span class="lineno"> 66</span> <span class="comment"># Child scopes within this scope</span></div>
|
||||
<div class="line"><span class="lineno"> 67</span> self.children: List[<span class="stringliteral">'Scope'</span>] = []</div>
|
||||
<div class="line"><span class="lineno"> 68</span> </div>
|
||||
<div class="line"><span class="lineno"> 69</span> <span class="comment"># Parent scope (None for the global/module scope)</span></div>
|
||||
<div class="line"><span class="lineno"> 70</span> self.parent: Optional[<span class="stringliteral">'Scope'</span>] = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 71</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="af3b53a662c490b6d028b629d05661f08" name="af3b53a662c490b6d028b629d05661f08"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af3b53a662c490b6d028b629d05661f08">◆ </a></span>__repr__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Scope.__repr__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00098">98</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 98</span> <span class="keyword">def </span>__repr__(self):</div>
|
||||
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">return</span> f<span class="stringliteral">"<Scope {self.get_qualified_name()} [{self.scope_type}] symbols:{len(self.symbols)} children:{len(self.children)}>"</span></div>
|
||||
<div class="line"><span class="lineno"> 100</span> </div>
|
||||
<div class="line"><span class="lineno"> 101</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0081ee771c31639c01b2b1da2616100c" name="a0081ee771c31639c01b2b1da2616100c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0081ee771c31639c01b2b1da2616100c">◆ </a></span>add_child_scope()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> '<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' transformers.symbol_tree.Scope.add_child_scope </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">'<a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a>' </td>
|
||||
<td class="paramname"><em>scope</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a child scope to this scope and return it.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00078">78</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 78</span> <span class="keyword">def </span>add_child_scope(self, scope: <span class="stringliteral">'Scope'</span>) -> <span class="stringliteral">'Scope'</span>:</div>
|
||||
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">"""Add a child scope to this scope and return it."""</span></div>
|
||||
<div class="line"><span class="lineno"> 80</span> self.children.append(scope)</div>
|
||||
<div class="line"><span class="lineno"> 81</span> scope.parent = self</div>
|
||||
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">return</span> scope</div>
|
||||
<div class="line"><span class="lineno"> 83</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="abfdd86fbdb9eb9f43e59407433981217" name="abfdd86fbdb9eb9f43e59407433981217"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abfdd86fbdb9eb9f43e59407433981217">◆ </a></span>add_symbol()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> transformers.symbol_tree.Scope.add_symbol </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td>
|
||||
<td class="paramname"><em>symbol</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a symbol to this scope and return it.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00072">72</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 72</span> <span class="keyword">def </span>add_symbol(self, symbol: Symbol) -> Symbol:</div>
|
||||
<div class="line"><span class="lineno"> 73</span> <span class="stringliteral">"""Add a symbol to this scope and return it."""</span></div>
|
||||
<div class="line"><span class="lineno"> 74</span> self.symbols[symbol.name] = symbol</div>
|
||||
<div class="line"><span class="lineno"> 75</span> symbol.parent = self</div>
|
||||
<div class="line"><span class="lineno"> 76</span> <span class="keywordflow">return</span> symbol</div>
|
||||
<div class="line"><span class="lineno"> 77</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00121">transformers.symbol_tree.ClassScope.add_attribute()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00116">transformers.symbol_tree.ClassScope.add_method()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a72bf2569e37369e3f845ac2441080a9d" name="a72bf2569e37369e3f845ac2441080a9d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a72bf2569e37369e3f845ac2441080a9d">◆ </a></span>get_qualified_name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str transformers.symbol_tree.Scope.get_qualified_name </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Get the fully qualified name of this scope.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00092">92</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 92</span> <span class="keyword">def </span>get_qualified_name(self) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 93</span> <span class="stringliteral">"""Get the fully qualified name of this scope."""</span></div>
|
||||
<div class="line"><span class="lineno"> 94</span> <span class="keywordflow">if</span> self.parent <span class="keywordflow">and</span> self.parent.name:</div>
|
||||
<div class="line"><span class="lineno"> 95</span> <span class="keywordflow">return</span> f<span class="stringliteral">"{self.parent.get_qualified_name()}.{self.name}"</span></div>
|
||||
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">return</span> self.name</div>
|
||||
<div class="line"><span class="lineno"> 97</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00034">transformers.symbol_tree.Symbol.name</a>, and <a class="el" href="symbol__tree_8py_source.html#l00059">transformers.symbol_tree.Scope.name</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aea26fa0ade2ce3d7f82cf28a7fec0d16" name="aea26fa0ade2ce3d7f82cf28a7fec0d16"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aea26fa0ade2ce3d7f82cf28a7fec0d16">◆ </a></span>lookup()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> Optional[<a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a>] transformers.symbol_tree.Scope.lookup </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Look up a symbol in this scope, or in parent scopes.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00084">84</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 84</span> <span class="keyword">def </span>lookup(self, name: str) -> Optional[Symbol]:</div>
|
||||
<div class="line"><span class="lineno"> 85</span> <span class="stringliteral">"""Look up a symbol in this scope, or in parent scopes."""</span></div>
|
||||
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">if</span> name <span class="keywordflow">in</span> self.symbols:</div>
|
||||
<div class="line"><span class="lineno"> 87</span> <span class="keywordflow">return</span> self.symbols[name]</div>
|
||||
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">elif</span> self.parent:</div>
|
||||
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> self.parent.lookup(name)</div>
|
||||
<div class="line"><span class="lineno"> 90</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 91</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00084">transformers.symbol_tree.Scope.lookup()</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00084">transformers.symbol_tree.Scope.lookup()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ab08134920b738ab813bcd04724cc3696" name="ab08134920b738ab813bcd04724cc3696"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab08134920b738ab813bcd04724cc3696">◆ </a></span>name</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Scope.name</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00059">59</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00092">transformers.symbol_tree.Scope.get_qualified_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a51ed89fe0be033cd0643a4d943a1f12b" name="a51ed89fe0be033cd0643a4d943a1f12b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a51ed89fe0be033cd0643a4d943a1f12b">◆ </a></span>node</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Scope.node</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00061">61</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afcd5b42c282fac61354d80897b5c751e" name="afcd5b42c282fac61354d80897b5c751e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afcd5b42c282fac61354d80897b5c751e">◆ </a></span>scope_type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Scope.scope_type</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00060">60</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
var classtransformers_1_1symbol__tree_1_1Scope =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1Scope.html#a46787477db922894246fecb5c12486b4", null ],
|
||||
[ "__repr__", "classtransformers_1_1symbol__tree_1_1Scope.html#af3b53a662c490b6d028b629d05661f08", null ],
|
||||
[ "add_child_scope", "classtransformers_1_1symbol__tree_1_1Scope.html#a0081ee771c31639c01b2b1da2616100c", null ],
|
||||
[ "add_symbol", "classtransformers_1_1symbol__tree_1_1Scope.html#abfdd86fbdb9eb9f43e59407433981217", null ],
|
||||
[ "get_qualified_name", "classtransformers_1_1symbol__tree_1_1Scope.html#a72bf2569e37369e3f845ac2441080a9d", null ],
|
||||
[ "lookup", "classtransformers_1_1symbol__tree_1_1Scope.html#aea26fa0ade2ce3d7f82cf28a7fec0d16", null ],
|
||||
[ "name", "classtransformers_1_1symbol__tree_1_1Scope.html#ab08134920b738ab813bcd04724cc3696", null ],
|
||||
[ "node", "classtransformers_1_1symbol__tree_1_1Scope.html#a51ed89fe0be033cd0643a4d943a1f12b", null ],
|
||||
[ "scope_type", "classtransformers_1_1symbol__tree_1_1Scope.html#afcd5b42c282fac61354d80897b5c751e", null ]
|
||||
];
|
||||
@@ -0,0 +1,12 @@
|
||||
digraph "transformers.symbol_tree.Scope"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.Scope",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="transformers.symbol\l_tree.ClassScope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1ClassScope.html",tooltip=" "];
|
||||
Node1 -> Node3 [id="edge2_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="transformers.symbol\l_tree.ModuleScope",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",URL="$classtransformers_1_1symbol__tree_1_1ModuleScope.html",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1Symbol.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.Symbol Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a391a0c0a2d4a4a88690b287c2c0901a9">__init__</a>(self, str name, SymbolType symbol_type, ast.AST node=None)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ab98bc4a99007d752ce57d203a022706f">__repr__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a77426bdaaddd0c9a5f5cf2939af5e82d">add_reference</a>(self, ast.AST node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a83a7262213d2f81c6493a8a4daedb81a">is_imported</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a6220ff5bd5621ab52c59a6b240eddd0d">is_obfuscatable</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ab704c166075e326fa3d0cc1d3cb3d48e">name</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ac9a2c001371dbb1876e4d5eb2f618aed">node</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#aa4a20656cbca365de328bb0f33b89ff0">symbol_type</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">transformers.symbol_tree.Symbol</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,337 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.Symbol Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1Symbol.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1Symbol-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.Symbol Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:a391a0c0a2d4a4a88690b287c2c0901a9" id="r_a391a0c0a2d4a4a88690b287c2c0901a9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a391a0c0a2d4a4a88690b287c2c0901a9">__init__</a> (self, str <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ab704c166075e326fa3d0cc1d3cb3d48e">name</a>, <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a> <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#aa4a20656cbca365de328bb0f33b89ff0">symbol_type</a>, ast.AST <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ac9a2c001371dbb1876e4d5eb2f618aed">node</a>=None)</td></tr>
|
||||
<tr class="separator:a391a0c0a2d4a4a88690b287c2c0901a9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab98bc4a99007d752ce57d203a022706f" id="r_ab98bc4a99007d752ce57d203a022706f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ab98bc4a99007d752ce57d203a022706f">__repr__</a> (self)</td></tr>
|
||||
<tr class="separator:ab98bc4a99007d752ce57d203a022706f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a77426bdaaddd0c9a5f5cf2939af5e82d" id="r_a77426bdaaddd0c9a5f5cf2939af5e82d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a77426bdaaddd0c9a5f5cf2939af5e82d">add_reference</a> (self, ast.AST <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ac9a2c001371dbb1876e4d5eb2f618aed">node</a>)</td></tr>
|
||||
<tr class="separator:a77426bdaaddd0c9a5f5cf2939af5e82d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a83a7262213d2f81c6493a8a4daedb81a" id="r_a83a7262213d2f81c6493a8a4daedb81a"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a83a7262213d2f81c6493a8a4daedb81a">is_imported</a></td></tr>
|
||||
<tr class="separator:a83a7262213d2f81c6493a8a4daedb81a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6220ff5bd5621ab52c59a6b240eddd0d" id="r_a6220ff5bd5621ab52c59a6b240eddd0d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#a6220ff5bd5621ab52c59a6b240eddd0d">is_obfuscatable</a></td></tr>
|
||||
<tr class="separator:a6220ff5bd5621ab52c59a6b240eddd0d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab704c166075e326fa3d0cc1d3cb3d48e" id="r_ab704c166075e326fa3d0cc1d3cb3d48e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ab704c166075e326fa3d0cc1d3cb3d48e">name</a></td></tr>
|
||||
<tr class="separator:ab704c166075e326fa3d0cc1d3cb3d48e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac9a2c001371dbb1876e4d5eb2f618aed" id="r_ac9a2c001371dbb1876e4d5eb2f618aed"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#ac9a2c001371dbb1876e4d5eb2f618aed">node</a></td></tr>
|
||||
<tr class="separator:ac9a2c001371dbb1876e4d5eb2f618aed"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa4a20656cbca365de328bb0f33b89ff0" id="r_aa4a20656cbca365de328bb0f33b89ff0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html#aa4a20656cbca365de328bb0f33b89ff0">symbol_type</a></td></tr>
|
||||
<tr class="separator:aa4a20656cbca365de328bb0f33b89ff0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">Represents a symbol in the code with its name, type and other metadata.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00030">30</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="a391a0c0a2d4a4a88690b287c2c0901a9" name="a391a0c0a2d4a4a88690b287c2c0901a9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a391a0c0a2d4a4a88690b287c2c0901a9">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a> </td>
|
||||
<td class="paramname"><em>symbol_type</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST  </td>
|
||||
<td class="paramname"><em>node</em> = <code>None</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00033">33</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 33</span> <span class="keyword">def </span>__init__(self, name: str, symbol_type: SymbolType, node: ast.AST = <span class="keywordtype">None</span>):</div>
|
||||
<div class="line"><span class="lineno"> 34</span> self.name = name <span class="comment"># Original name</span></div>
|
||||
<div class="line"><span class="lineno"> 35</span> self.obfuscated_name: Optional[str] = <span class="keywordtype">None</span> <span class="comment"># Obfuscated name (if assigned)</span></div>
|
||||
<div class="line"><span class="lineno"> 36</span> self.symbol_type = symbol_type</div>
|
||||
<div class="line"><span class="lineno"> 37</span> self.node = node <span class="comment"># AST node where this symbol is defined</span></div>
|
||||
<div class="line"><span class="lineno"> 38</span> self.references: List[ast.AST] = [] <span class="comment"># AST nodes where this symbol is referenced</span></div>
|
||||
<div class="line"><span class="lineno"> 39</span> self.parent: Optional[<span class="stringliteral">'Scope'</span>] = <span class="keywordtype">None</span> <span class="comment"># Parent scope</span></div>
|
||||
<div class="line"><span class="lineno"> 40</span> self.is_obfuscatable = <span class="keyword">True</span> <span class="comment"># Whether this symbol should be obfuscated</span></div>
|
||||
<div class="line"><span class="lineno"> 41</span> </div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="comment"># Additional attributes for specific symbol types</span></div>
|
||||
<div class="line"><span class="lineno"> 43</span> self.is_imported = <span class="keyword">False</span> <span class="comment"># Whether this symbol was imported</span></div>
|
||||
<div class="line"><span class="lineno"> 44</span> self.original_module: Optional[str] = <span class="keywordtype">None</span> <span class="comment"># If imported, the module it was imported from</span></div>
|
||||
<div class="line"><span class="lineno"> 45</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ab98bc4a99007d752ce57d203a022706f" name="ab98bc4a99007d752ce57d203a022706f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab98bc4a99007d752ce57d203a022706f">◆ </a></span>__repr__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.__repr__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00050">50</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 50</span> <span class="keyword">def </span>__repr__(self):</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">return</span> f<span class="stringliteral">"<Symbol {self.name} [{self.symbol_type.value}] {'→ ' + self.obfuscated_name if self.obfuscated_name else ''} refs:{len(self.references)}>"</span></div>
|
||||
<div class="line"><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><span class="lineno"> 53</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a77426bdaaddd0c9a5f5cf2939af5e82d" name="a77426bdaaddd0c9a5f5cf2939af5e82d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a77426bdaaddd0c9a5f5cf2939af5e82d">◆ </a></span>add_reference()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.add_reference </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a reference to this symbol.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00046">46</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 46</span> <span class="keyword">def </span>add_reference(self, node: ast.AST):</div>
|
||||
<div class="line"><span class="lineno"> 47</span> <span class="stringliteral">"""Add a reference to this symbol."""</span></div>
|
||||
<div class="line"><span class="lineno"> 48</span> self.references.append(node)</div>
|
||||
<div class="line"><span class="lineno"> 49</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a83a7262213d2f81c6493a8a4daedb81a" name="a83a7262213d2f81c6493a8a4daedb81a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a83a7262213d2f81c6493a8a4daedb81a">◆ </a></span>is_imported</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.is_imported</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00043">43</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6220ff5bd5621ab52c59a6b240eddd0d" name="a6220ff5bd5621ab52c59a6b240eddd0d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6220ff5bd5621ab52c59a6b240eddd0d">◆ </a></span>is_obfuscatable</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.is_obfuscatable</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00040">40</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab704c166075e326fa3d0cc1d3cb3d48e" name="ab704c166075e326fa3d0cc1d3cb3d48e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab704c166075e326fa3d0cc1d3cb3d48e">◆ </a></span>name</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.name</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00034">34</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00092">transformers.symbol_tree.Scope.get_qualified_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac9a2c001371dbb1876e4d5eb2f618aed" name="ac9a2c001371dbb1876e4d5eb2f618aed"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac9a2c001371dbb1876e4d5eb2f618aed">◆ </a></span>node</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.node</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00037">37</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa4a20656cbca365de328bb0f33b89ff0" name="aa4a20656cbca365de328bb0f33b89ff0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4a20656cbca365de328bb0f33b89ff0">◆ </a></span>symbol_type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.Symbol.symbol_type</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00036">36</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
var classtransformers_1_1symbol__tree_1_1Symbol =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1Symbol.html#a391a0c0a2d4a4a88690b287c2c0901a9", null ],
|
||||
[ "__repr__", "classtransformers_1_1symbol__tree_1_1Symbol.html#ab98bc4a99007d752ce57d203a022706f", null ],
|
||||
[ "add_reference", "classtransformers_1_1symbol__tree_1_1Symbol.html#a77426bdaaddd0c9a5f5cf2939af5e82d", null ],
|
||||
[ "is_imported", "classtransformers_1_1symbol__tree_1_1Symbol.html#a83a7262213d2f81c6493a8a4daedb81a", null ],
|
||||
[ "is_obfuscatable", "classtransformers_1_1symbol__tree_1_1Symbol.html#a6220ff5bd5621ab52c59a6b240eddd0d", null ],
|
||||
[ "name", "classtransformers_1_1symbol__tree_1_1Symbol.html#ab704c166075e326fa3d0cc1d3cb3d48e", null ],
|
||||
[ "node", "classtransformers_1_1symbol__tree_1_1Symbol.html#ac9a2c001371dbb1876e4d5eb2f618aed", null ],
|
||||
[ "symbol_type", "classtransformers_1_1symbol__tree_1_1Symbol.html#aa4a20656cbca365de328bb0f33b89ff0", null ]
|
||||
];
|
||||
@@ -0,0 +1,119 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolTree.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolTree Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ae5a94636b396b77c05857572823b1285">__init__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab45a75613adc005d160afbc3a5d4034c">add_reference</a>(self, str name, ast.AST node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a059c692815d67b54786eeae7a69a699d">add_symbol</a>(self, str name, SymbolType symbol_type, ast.AST node=None)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab21d8bdd7653df8f0cddf0fbb1f916b2">apply_name_generator</a>(self, name_generator)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a5a585fa57a9f8fd224cf4d55b8180a78">check_for_issues</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab61ebd1549ee934fa7e468407a410b14">current_scope</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#aad251f8dde7939c5194c6cfc4caf62a5">get_rename_mapping</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ac3622dfd3cf0c24f591974f4daf542b7">pop_scope</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a552a46afd0e3e2eed55366a9d0b037b6">push_scope</a>(self, str name, str scope_type, ast.AST node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#af5a83401d437658d233d32f15071305c">resolve_inheritance</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a69923f85f26cb752607ec256796647be">root_scope</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">transformers.symbol_tree.SymbolTree</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,666 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.SymbolTree Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolTree.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1SymbolTree-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolTree Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:ae5a94636b396b77c05857572823b1285" id="r_ae5a94636b396b77c05857572823b1285"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ae5a94636b396b77c05857572823b1285">__init__</a> (self)</td></tr>
|
||||
<tr class="separator:ae5a94636b396b77c05857572823b1285"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab45a75613adc005d160afbc3a5d4034c" id="r_ab45a75613adc005d160afbc3a5d4034c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab45a75613adc005d160afbc3a5d4034c">add_reference</a> (self, str name, ast.AST node)</td></tr>
|
||||
<tr class="separator:ab45a75613adc005d160afbc3a5d4034c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a059c692815d67b54786eeae7a69a699d" id="r_a059c692815d67b54786eeae7a69a699d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a059c692815d67b54786eeae7a69a699d">add_symbol</a> (self, str name, <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a> symbol_type, ast.AST node=None)</td></tr>
|
||||
<tr class="separator:a059c692815d67b54786eeae7a69a699d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab21d8bdd7653df8f0cddf0fbb1f916b2" id="r_ab21d8bdd7653df8f0cddf0fbb1f916b2"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab21d8bdd7653df8f0cddf0fbb1f916b2">apply_name_generator</a> (self, name_generator)</td></tr>
|
||||
<tr class="separator:ab21d8bdd7653df8f0cddf0fbb1f916b2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5a585fa57a9f8fd224cf4d55b8180a78" id="r_a5a585fa57a9f8fd224cf4d55b8180a78"><td class="memItemLeft" align="right" valign="top">List[Dict] </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a5a585fa57a9f8fd224cf4d55b8180a78">check_for_issues</a> (self)</td></tr>
|
||||
<tr class="separator:a5a585fa57a9f8fd224cf4d55b8180a78"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aad251f8dde7939c5194c6cfc4caf62a5" id="r_aad251f8dde7939c5194c6cfc4caf62a5"><td class="memItemLeft" align="right" valign="top">Dict[str, Dict[str, str]] </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#aad251f8dde7939c5194c6cfc4caf62a5">get_rename_mapping</a> (self)</td></tr>
|
||||
<tr class="separator:aad251f8dde7939c5194c6cfc4caf62a5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac3622dfd3cf0c24f591974f4daf542b7" id="r_ac3622dfd3cf0c24f591974f4daf542b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ac3622dfd3cf0c24f591974f4daf542b7">pop_scope</a> (self)</td></tr>
|
||||
<tr class="separator:ac3622dfd3cf0c24f591974f4daf542b7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a552a46afd0e3e2eed55366a9d0b037b6" id="r_a552a46afd0e3e2eed55366a9d0b037b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a552a46afd0e3e2eed55366a9d0b037b6">push_scope</a> (self, str name, str scope_type, ast.AST node)</td></tr>
|
||||
<tr class="separator:a552a46afd0e3e2eed55366a9d0b037b6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af5a83401d437658d233d32f15071305c" id="r_af5a83401d437658d233d32f15071305c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#af5a83401d437658d233d32f15071305c">resolve_inheritance</a> (self)</td></tr>
|
||||
<tr class="separator:af5a83401d437658d233d32f15071305c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ab61ebd1549ee934fa7e468407a410b14" id="r_ab61ebd1549ee934fa7e468407a410b14"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab61ebd1549ee934fa7e468407a410b14">current_scope</a></td></tr>
|
||||
<tr class="separator:ab61ebd1549ee934fa7e468407a410b14"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a69923f85f26cb752607ec256796647be" id="r_a69923f85f26cb752607ec256796647be"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html#a69923f85f26cb752607ec256796647be">root_scope</a></td></tr>
|
||||
<tr class="separator:a69923f85f26cb752607ec256796647be"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">Global symbol tree that maintains a hierarchy of scopes and symbols
|
||||
across the entire codebase.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00146">146</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="ae5a94636b396b77c05857572823b1285" name="ae5a94636b396b77c05857572823b1285"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae5a94636b396b77c05857572823b1285">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00152">152</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 152</span> <span class="keyword">def </span>__init__(self):</div>
|
||||
<div class="line"><span class="lineno"> 153</span> <span class="comment"># The root scope is a special module scope named "__root__"</span></div>
|
||||
<div class="line"><span class="lineno"> 154</span> self.root_scope = ModuleScope(<span class="stringliteral">"__root__"</span>, <span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><span class="lineno"> 155</span> <span class="comment"># Current scope being processed</span></div>
|
||||
<div class="line"><span class="lineno"> 156</span> self.current_scope = self.root_scope</div>
|
||||
<div class="line"><span class="lineno"> 157</span> <span class="comment"># Track classes for inheritance resolution</span></div>
|
||||
<div class="line"><span class="lineno"> 158</span> self.classes: Dict[str, ClassScope] = {}</div>
|
||||
<div class="line"><span class="lineno"> 159</span> <span class="comment"># Track all symbols by their fully qualified name</span></div>
|
||||
<div class="line"><span class="lineno"> 160</span> self.all_symbols: Dict[str, Symbol] = {}</div>
|
||||
<div class="line"><span class="lineno"> 161</span> <span class="comment"># Track imports for proper resolution</span></div>
|
||||
<div class="line"><span class="lineno"> 162</span> self.imports: Dict[str, str] = {} <span class="comment"># alias -> module</span></div>
|
||||
<div class="line"><span class="lineno"> 163</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ab45a75613adc005d160afbc3a5d4034c" name="ab45a75613adc005d160afbc3a5d4034c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab45a75613adc005d160afbc3a5d4034c">◆ </a></span>add_reference()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.add_reference </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a reference to a symbol.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00210">210</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 210</span> <span class="keyword">def </span>add_reference(self, name: str, node: ast.AST):</div>
|
||||
<div class="line"><span class="lineno"> 211</span> <span class="stringliteral">"""Add a reference to a symbol."""</span></div>
|
||||
<div class="line"><span class="lineno"> 212</span> symbol = self.current_scope.lookup(name)</div>
|
||||
<div class="line"><span class="lineno"> 213</span> <span class="keywordflow">if</span> symbol:</div>
|
||||
<div class="line"><span class="lineno"> 214</span> symbol.add_reference(node)</div>
|
||||
<div class="line"><span class="lineno"> 215</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00156">transformers.symbol_tree.SymbolTree.current_scope</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a059c692815d67b54786eeae7a69a699d" name="a059c692815d67b54786eeae7a69a699d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a059c692815d67b54786eeae7a69a699d">◆ </a></span>add_symbol()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Symbol.html">Symbol</a> transformers.symbol_tree.SymbolTree.add_symbol </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a> </td>
|
||||
<td class="paramname"><em>symbol_type</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST  </td>
|
||||
<td class="paramname"><em>node</em> = <code>None</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Add a symbol to the current scope.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00192">192</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 192</span> <span class="keyword">def </span>add_symbol(self, name: str, symbol_type: SymbolType, node: ast.AST = <span class="keywordtype">None</span>) -> Symbol:</div>
|
||||
<div class="line"><span class="lineno"> 193</span> <span class="stringliteral">"""Add a symbol to the current scope."""</span></div>
|
||||
<div class="line"><span class="lineno"> 194</span> symbol = Symbol(name, symbol_type, node)</div>
|
||||
<div class="line"><span class="lineno"> 195</span> self.current_scope.add_symbol(symbol)</div>
|
||||
<div class="line"><span class="lineno"> 196</span> </div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="comment"># Track in the global map</span></div>
|
||||
<div class="line"><span class="lineno"> 198</span> qualified_name = f<span class="stringliteral">"{self.current_scope.get_qualified_name()}.{name}"</span></div>
|
||||
<div class="line"><span class="lineno"> 199</span> self.all_symbols[qualified_name] = symbol</div>
|
||||
<div class="line"><span class="lineno"> 200</span> </div>
|
||||
<div class="line"><span class="lineno"> 201</span> <span class="comment"># If this is a method in a class scope</span></div>
|
||||
<div class="line"><span class="lineno"> 202</span> <span class="keywordflow">if</span> symbol_type == SymbolType.METHOD <span class="keywordflow">and</span> isinstance(self.current_scope, ClassScope):</div>
|
||||
<div class="line"><span class="lineno"> 203</span> self.current_scope.add_method(symbol)</div>
|
||||
<div class="line"><span class="lineno"> 204</span> <span class="comment"># If this is an attribute in a class scope</span></div>
|
||||
<div class="line"><span class="lineno"> 205</span> <span class="keywordflow">elif</span> symbol_type == SymbolType.ATTRIBUTE <span class="keywordflow">and</span> isinstance(self.current_scope, ClassScope):</div>
|
||||
<div class="line"><span class="lineno"> 206</span> self.current_scope.add_attribute(symbol)</div>
|
||||
<div class="line"><span class="lineno"> 207</span> </div>
|
||||
<div class="line"><span class="lineno"> 208</span> <span class="keywordflow">return</span> symbol</div>
|
||||
<div class="line"><span class="lineno"> 209</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00192">transformers.symbol_tree.SymbolTree.add_symbol()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00156">transformers.symbol_tree.SymbolTree.current_scope</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00121">transformers.symbol_tree.ClassScope.add_attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00116">transformers.symbol_tree.ClassScope.add_method()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00192">transformers.symbol_tree.SymbolTree.add_symbol()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab21d8bdd7653df8f0cddf0fbb1f916b2" name="ab21d8bdd7653df8f0cddf0fbb1f916b2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab21d8bdd7653df8f0cddf0fbb1f916b2">◆ </a></span>apply_name_generator()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.apply_name_generator </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>name_generator</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Apply a name generator to all symbols that need obfuscation.
|
||||
Ensures consistent renaming across the entire codebase.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00297">297</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 297</span> <span class="keyword">def </span>apply_name_generator(self, name_generator):</div>
|
||||
<div class="line"><span class="lineno"> 298</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 299</span><span class="stringliteral"> Apply a name generator to all symbols that need obfuscation.</span></div>
|
||||
<div class="line"><span class="lineno"> 300</span><span class="stringliteral"> Ensures consistent renaming across the entire codebase.</span></div>
|
||||
<div class="line"><span class="lineno"> 301</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 302</span> <span class="comment"># First, handle classes</span></div>
|
||||
<div class="line"><span class="lineno"> 303</span> <span class="keywordflow">for</span> class_scope <span class="keywordflow">in</span> self.classes.values():</div>
|
||||
<div class="line"><span class="lineno"> 304</span> class_symbol = self.current_scope.lookup(class_scope.name)</div>
|
||||
<div class="line"><span class="lineno"> 305</span> <span class="keywordflow">if</span> class_symbol <span class="keywordflow">and</span> class_symbol.is_obfuscatable:</div>
|
||||
<div class="line"><span class="lineno"> 306</span> class_symbol.obfuscated_name = name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 307</span> </div>
|
||||
<div class="line"><span class="lineno"> 308</span> <span class="comment"># Then handle methods to ensure consistency across inheritance</span></div>
|
||||
<div class="line"><span class="lineno"> 309</span> self.resolve_inheritance()</div>
|
||||
<div class="line"><span class="lineno"> 310</span> </div>
|
||||
<div class="line"><span class="lineno"> 311</span> <span class="comment"># Apply to all other symbols</span></div>
|
||||
<div class="line"><span class="lineno"> 312</span> <span class="keywordflow">for</span> symbol <span class="keywordflow">in</span> self.all_symbols.values():</div>
|
||||
<div class="line"><span class="lineno"> 313</span> <span class="comment"># Skip if already obfuscated or not obfuscatable</span></div>
|
||||
<div class="line"><span class="lineno"> 314</span> <span class="keywordflow">if</span> symbol.obfuscated_name <span class="keywordflow">or</span> <span class="keywordflow">not</span> symbol.is_obfuscatable:</div>
|
||||
<div class="line"><span class="lineno"> 315</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 316</span> </div>
|
||||
<div class="line"><span class="lineno"> 317</span> <span class="comment"># Skip special names</span></div>
|
||||
<div class="line"><span class="lineno"> 318</span> <span class="keywordflow">if</span> symbol.name.startswith(<span class="stringliteral">"__"</span>) <span class="keywordflow">and</span> symbol.name.endswith(<span class="stringliteral">"__"</span>):</div>
|
||||
<div class="line"><span class="lineno"> 319</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 320</span> </div>
|
||||
<div class="line"><span class="lineno"> 321</span> symbol.obfuscated_name = name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 322</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00156">transformers.symbol_tree.SymbolTree.current_scope</a>, and <a class="el" href="symbol__tree_8py_source.html#l00216">transformers.symbol_tree.SymbolTree.resolve_inheritance()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5a585fa57a9f8fd224cf4d55b8180a78" name="a5a585fa57a9f8fd224cf4d55b8180a78"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5a585fa57a9f8fd224cf4d55b8180a78">◆ </a></span>check_for_issues()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> List[Dict] transformers.symbol_tree.SymbolTree.check_for_issues </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Check for potential issues in the symbol tree.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00255">255</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 255</span> <span class="keyword">def </span>check_for_issues(self) -> List[Dict]:</div>
|
||||
<div class="line"><span class="lineno"> 256</span> <span class="stringliteral">"""Check for potential issues in the symbol tree."""</span></div>
|
||||
<div class="line"><span class="lineno"> 257</span> issues = []</div>
|
||||
<div class="line"><span class="lineno"> 258</span> </div>
|
||||
<div class="line"><span class="lineno"> 259</span> <span class="comment"># Check for duplicated obfuscated names</span></div>
|
||||
<div class="line"><span class="lineno"> 260</span> obfuscated_names = {}</div>
|
||||
<div class="line"><span class="lineno"> 261</span> <span class="keywordflow">for</span> qualified_name, symbol <span class="keywordflow">in</span> self.all_symbols.items():</div>
|
||||
<div class="line"><span class="lineno"> 262</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> symbol.obfuscated_name:</div>
|
||||
<div class="line"><span class="lineno"> 263</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 264</span> </div>
|
||||
<div class="line"><span class="lineno"> 265</span> <span class="keywordflow">if</span> symbol.obfuscated_name <span class="keywordflow">in</span> obfuscated_names:</div>
|
||||
<div class="line"><span class="lineno"> 266</span> issues.append({</div>
|
||||
<div class="line"><span class="lineno"> 267</span> <span class="stringliteral">"type"</span>: <span class="stringliteral">"duplicate_obfuscated_name"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 268</span> <span class="stringliteral">"obfuscated_name"</span>: symbol.obfuscated_name,</div>
|
||||
<div class="line"><span class="lineno"> 269</span> <span class="stringliteral">"symbols"</span>: [qualified_name, obfuscated_names[symbol.obfuscated_name]]</div>
|
||||
<div class="line"><span class="lineno"> 270</span> })</div>
|
||||
<div class="line"><span class="lineno"> 271</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 272</span> obfuscated_names[symbol.obfuscated_name] = qualified_name</div>
|
||||
<div class="line"><span class="lineno"> 273</span> </div>
|
||||
<div class="line"><span class="lineno"> 274</span> <span class="comment"># Check for inconsistent method obfuscation in inheritance hierarchies</span></div>
|
||||
<div class="line"><span class="lineno"> 275</span> <span class="keywordflow">for</span> class_name, class_scope <span class="keywordflow">in</span> self.classes.items():</div>
|
||||
<div class="line"><span class="lineno"> 276</span> <span class="keywordflow">for</span> base_name <span class="keywordflow">in</span> class_scope.base_classes:</div>
|
||||
<div class="line"><span class="lineno"> 277</span> <span class="keywordflow">if</span> base_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.classes:</div>
|
||||
<div class="line"><span class="lineno"> 278</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 279</span> </div>
|
||||
<div class="line"><span class="lineno"> 280</span> base_scope = self.classes[base_name]</div>
|
||||
<div class="line"><span class="lineno"> 281</span> <span class="keywordflow">for</span> method_name, method_symbol <span class="keywordflow">in</span> base_scope.methods.items():</div>
|
||||
<div class="line"><span class="lineno"> 282</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">in</span> class_scope.methods:</div>
|
||||
<div class="line"><span class="lineno"> 283</span> derived_method = class_scope.methods[method_name]</div>
|
||||
<div class="line"><span class="lineno"> 284</span> <span class="keywordflow">if</span> (method_symbol.obfuscated_name <span class="keywordflow">and</span> derived_method.obfuscated_name <span class="keywordflow">and</span> </div>
|
||||
<div class="line"><span class="lineno"> 285</span> method_symbol.obfuscated_name != derived_method.obfuscated_name):</div>
|
||||
<div class="line"><span class="lineno"> 286</span> issues.append({</div>
|
||||
<div class="line"><span class="lineno"> 287</span> <span class="stringliteral">"type"</span>: <span class="stringliteral">"inconsistent_method_obfuscation"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 288</span> <span class="stringliteral">"method_name"</span>: method_name,</div>
|
||||
<div class="line"><span class="lineno"> 289</span> <span class="stringliteral">"base_class"</span>: base_name,</div>
|
||||
<div class="line"><span class="lineno"> 290</span> <span class="stringliteral">"derived_class"</span>: class_name,</div>
|
||||
<div class="line"><span class="lineno"> 291</span> <span class="stringliteral">"base_obfuscated"</span>: method_symbol.obfuscated_name,</div>
|
||||
<div class="line"><span class="lineno"> 292</span> <span class="stringliteral">"derived_obfuscated"</span>: derived_method.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 293</span> })</div>
|
||||
<div class="line"><span class="lineno"> 294</span> </div>
|
||||
<div class="line"><span class="lineno"> 295</span> <span class="keywordflow">return</span> issues</div>
|
||||
<div class="line"><span class="lineno"> 296</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="aad251f8dde7939c5194c6cfc4caf62a5" name="aad251f8dde7939c5194c6cfc4caf62a5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aad251f8dde7939c5194c6cfc4caf62a5">◆ </a></span>get_rename_mapping()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> Dict[str, Dict[str, str]] transformers.symbol_tree.SymbolTree.get_rename_mapping </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Get a mapping for all symbols to their obfuscated names,
|
||||
organized by symbol type for use in transformers.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00323">323</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 323</span> <span class="keyword">def </span>get_rename_mapping(self) -> Dict[str, Dict[str, str]]:</div>
|
||||
<div class="line"><span class="lineno"> 324</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 325</span><span class="stringliteral"> Get a mapping for all symbols to their obfuscated names,</span></div>
|
||||
<div class="line"><span class="lineno"> 326</span><span class="stringliteral"> organized by symbol type for use in transformers.</span></div>
|
||||
<div class="line"><span class="lineno"> 327</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 328</span> mapping = {</div>
|
||||
<div class="line"><span class="lineno"> 329</span> <span class="stringliteral">"variables"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 330</span> <span class="stringliteral">"functions"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 331</span> <span class="stringliteral">"classes"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 332</span> <span class="stringliteral">"methods"</span>: {},</div>
|
||||
<div class="line"><span class="lineno"> 333</span> <span class="stringliteral">"attributes"</span>: {}</div>
|
||||
<div class="line"><span class="lineno"> 334</span> }</div>
|
||||
<div class="line"><span class="lineno"> 335</span> </div>
|
||||
<div class="line"><span class="lineno"> 336</span> <span class="keywordflow">for</span> symbol <span class="keywordflow">in</span> self.all_symbols.values():</div>
|
||||
<div class="line"><span class="lineno"> 337</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> symbol.obfuscated_name:</div>
|
||||
<div class="line"><span class="lineno"> 338</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 339</span> </div>
|
||||
<div class="line"><span class="lineno"> 340</span> <span class="keywordflow">if</span> symbol.symbol_type == SymbolType.VARIABLE:</div>
|
||||
<div class="line"><span class="lineno"> 341</span> mapping[<span class="stringliteral">"variables"</span>][symbol.name] = symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 342</span> <span class="keywordflow">elif</span> symbol.symbol_type == SymbolType.FUNCTION:</div>
|
||||
<div class="line"><span class="lineno"> 343</span> mapping[<span class="stringliteral">"functions"</span>][symbol.name] = symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 344</span> <span class="keywordflow">elif</span> symbol.symbol_type == SymbolType.CLASS:</div>
|
||||
<div class="line"><span class="lineno"> 345</span> mapping[<span class="stringliteral">"classes"</span>][symbol.name] = symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 346</span> <span class="keywordflow">elif</span> symbol.symbol_type == SymbolType.METHOD:</div>
|
||||
<div class="line"><span class="lineno"> 347</span> <span class="comment"># For methods, we need the class name</span></div>
|
||||
<div class="line"><span class="lineno"> 348</span> <span class="keywordflow">if</span> isinstance(symbol.parent, ClassScope):</div>
|
||||
<div class="line"><span class="lineno"> 349</span> class_name = symbol.parent.name</div>
|
||||
<div class="line"><span class="lineno"> 350</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> mapping[<span class="stringliteral">"methods"</span>]:</div>
|
||||
<div class="line"><span class="lineno"> 351</span> mapping[<span class="stringliteral">"methods"</span>][class_name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 352</span> mapping[<span class="stringliteral">"methods"</span>][class_name][symbol.name] = symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 353</span> <span class="keywordflow">elif</span> symbol.symbol_type == SymbolType.ATTRIBUTE:</div>
|
||||
<div class="line"><span class="lineno"> 354</span> <span class="comment"># For attributes, we need the class name</span></div>
|
||||
<div class="line"><span class="lineno"> 355</span> <span class="keywordflow">if</span> isinstance(symbol.parent, ClassScope):</div>
|
||||
<div class="line"><span class="lineno"> 356</span> class_name = symbol.parent.name</div>
|
||||
<div class="line"><span class="lineno"> 357</span> <span class="keywordflow">if</span> class_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> mapping[<span class="stringliteral">"attributes"</span>]:</div>
|
||||
<div class="line"><span class="lineno"> 358</span> mapping[<span class="stringliteral">"attributes"</span>][class_name] = {}</div>
|
||||
<div class="line"><span class="lineno"> 359</span> mapping[<span class="stringliteral">"attributes"</span>][class_name][symbol.name] = symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 360</span> </div>
|
||||
<div class="line"><span class="lineno"> 361</span> <span class="keywordflow">return</span> mapping</div>
|
||||
<div class="line"><span class="lineno"> 362</span> </div>
|
||||
<div class="line"><span class="lineno"> 363</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac3622dfd3cf0c24f591974f4daf542b7" name="ac3622dfd3cf0c24f591974f4daf542b7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac3622dfd3cf0c24f591974f4daf542b7">◆ </a></span>pop_scope()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a> transformers.symbol_tree.SymbolTree.pop_scope </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Exit the current scope and return to its parent.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00185">185</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 185</span> <span class="keyword">def </span>pop_scope(self) -> Scope:</div>
|
||||
<div class="line"><span class="lineno"> 186</span> <span class="stringliteral">"""Exit the current scope and return to its parent."""</span></div>
|
||||
<div class="line"><span class="lineno"> 187</span> old_scope = self.current_scope</div>
|
||||
<div class="line"><span class="lineno"> 188</span> <span class="keywordflow">if</span> self.current_scope.parent:</div>
|
||||
<div class="line"><span class="lineno"> 189</span> self.current_scope = self.current_scope.parent</div>
|
||||
<div class="line"><span class="lineno"> 190</span> <span class="keywordflow">return</span> old_scope</div>
|
||||
<div class="line"><span class="lineno"> 191</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00156">transformers.symbol_tree.SymbolTree.current_scope</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a552a46afd0e3e2eed55366a9d0b037b6" name="a552a46afd0e3e2eed55366a9d0b037b6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a552a46afd0e3e2eed55366a9d0b037b6">◆ </a></span>push_scope()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1Scope.html">Scope</a> transformers.symbol_tree.SymbolTree.push_scope </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>name</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>scope_type</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Create a new scope and make it the current scope.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00164">164</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 164</span> <span class="keyword">def </span>push_scope(self, name: str, scope_type: str, node: ast.AST) -> Scope:</div>
|
||||
<div class="line"><span class="lineno"> 165</span> <span class="stringliteral">"""Create a new scope and make it the current scope."""</span></div>
|
||||
<div class="line"><span class="lineno"> 166</span> <span class="keywordflow">if</span> scope_type == <span class="stringliteral">"class"</span>:</div>
|
||||
<div class="line"><span class="lineno"> 167</span> new_scope = ClassScope(name, node)</div>
|
||||
<div class="line"><span class="lineno"> 168</span> <span class="keywordflow">elif</span> scope_type == <span class="stringliteral">"module"</span>:</div>
|
||||
<div class="line"><span class="lineno"> 169</span> new_scope = ModuleScope(name, node)</div>
|
||||
<div class="line"><span class="lineno"> 170</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 171</span> new_scope = Scope(name, scope_type, node)</div>
|
||||
<div class="line"><span class="lineno"> 172</span> </div>
|
||||
<div class="line"><span class="lineno"> 173</span> self.current_scope.add_child_scope(new_scope)</div>
|
||||
<div class="line"><span class="lineno"> 174</span> self.current_scope = new_scope</div>
|
||||
<div class="line"><span class="lineno"> 175</span> </div>
|
||||
<div class="line"><span class="lineno"> 176</span> <span class="comment"># If this is a class, track it</span></div>
|
||||
<div class="line"><span class="lineno"> 177</span> <span class="keywordflow">if</span> scope_type == <span class="stringliteral">"class"</span>:</div>
|
||||
<div class="line"><span class="lineno"> 178</span> fully_qualified = new_scope.get_qualified_name()</div>
|
||||
<div class="line"><span class="lineno"> 179</span> self.classes[fully_qualified] = new_scope</div>
|
||||
<div class="line"><span class="lineno"> 180</span> <span class="comment"># Also track with just the class name for simpler lookups</span></div>
|
||||
<div class="line"><span class="lineno"> 181</span> self.classes[name] = new_scope</div>
|
||||
<div class="line"><span class="lineno"> 182</span> </div>
|
||||
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">return</span> new_scope</div>
|
||||
<div class="line"><span class="lineno"> 184</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00156">transformers.symbol_tree.SymbolTree.current_scope</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af5a83401d437658d233d32f15071305c" name="af5a83401d437658d233d32f15071305c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af5a83401d437658d233d32f15071305c">◆ </a></span>resolve_inheritance()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.resolve_inheritance </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Resolve inheritance relationships between classes to ensure
|
||||
consistent method and attribute renaming.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00216">216</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 216</span> <span class="keyword">def </span>resolve_inheritance(self):</div>
|
||||
<div class="line"><span class="lineno"> 217</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 218</span><span class="stringliteral"> Resolve inheritance relationships between classes to ensure</span></div>
|
||||
<div class="line"><span class="lineno"> 219</span><span class="stringliteral"> consistent method and attribute renaming.</span></div>
|
||||
<div class="line"><span class="lineno"> 220</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 221</span> <span class="keyword">def </span>resolve_class(class_scope: ClassScope, visited=<span class="keywordtype">None</span>):</div>
|
||||
<div class="line"><span class="lineno"> 222</span> <span class="keywordflow">if</span> visited <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
|
||||
<div class="line"><span class="lineno"> 223</span> visited = set()</div>
|
||||
<div class="line"><span class="lineno"> 224</span> </div>
|
||||
<div class="line"><span class="lineno"> 225</span> <span class="comment"># Skip if already visited to prevent infinite recursion</span></div>
|
||||
<div class="line"><span class="lineno"> 226</span> <span class="keywordflow">if</span> class_scope.name <span class="keywordflow">in</span> visited:</div>
|
||||
<div class="line"><span class="lineno"> 227</span> <span class="keywordflow">return</span></div>
|
||||
<div class="line"><span class="lineno"> 228</span> visited.add(class_scope.name)</div>
|
||||
<div class="line"><span class="lineno"> 229</span> </div>
|
||||
<div class="line"><span class="lineno"> 230</span> <span class="comment"># Process each base class</span></div>
|
||||
<div class="line"><span class="lineno"> 231</span> <span class="keywordflow">for</span> base_name <span class="keywordflow">in</span> class_scope.base_classes:</div>
|
||||
<div class="line"><span class="lineno"> 232</span> <span class="comment"># Skip if the base class is not in our tree (e.g., external library)</span></div>
|
||||
<div class="line"><span class="lineno"> 233</span> <span class="keywordflow">if</span> base_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.classes:</div>
|
||||
<div class="line"><span class="lineno"> 234</span> <span class="keywordflow">continue</span></div>
|
||||
<div class="line"><span class="lineno"> 235</span> </div>
|
||||
<div class="line"><span class="lineno"> 236</span> base_scope = self.classes[base_name]</div>
|
||||
<div class="line"><span class="lineno"> 237</span> <span class="comment"># Resolve the base class first</span></div>
|
||||
<div class="line"><span class="lineno"> 238</span> resolve_class(base_scope, visited)</div>
|
||||
<div class="line"><span class="lineno"> 239</span> </div>
|
||||
<div class="line"><span class="lineno"> 240</span> <span class="comment"># Copy method symbols from base to derived if not overridden</span></div>
|
||||
<div class="line"><span class="lineno"> 241</span> <span class="keywordflow">for</span> method_name, method_symbol <span class="keywordflow">in</span> base_scope.methods.items():</div>
|
||||
<div class="line"><span class="lineno"> 242</span> <span class="keywordflow">if</span> method_name <span class="keywordflow">not</span> <span class="keywordflow">in</span> class_scope.methods:</div>
|
||||
<div class="line"><span class="lineno"> 243</span> <span class="comment"># Create a new symbol in the derived class that references the base class method</span></div>
|
||||
<div class="line"><span class="lineno"> 244</span> derived_method = Symbol(method_name, SymbolType.METHOD)</div>
|
||||
<div class="line"><span class="lineno"> 245</span> class_scope.add_method(derived_method)</div>
|
||||
<div class="line"><span class="lineno"> 246</span> </div>
|
||||
<div class="line"><span class="lineno"> 247</span> <span class="comment"># Use the same obfuscated name as the base class method</span></div>
|
||||
<div class="line"><span class="lineno"> 248</span> <span class="comment"># (even if the base class method hasn't been obfuscated yet)</span></div>
|
||||
<div class="line"><span class="lineno"> 249</span> derived_method.obfuscated_name = method_symbol.obfuscated_name</div>
|
||||
<div class="line"><span class="lineno"> 250</span> </div>
|
||||
<div class="line"><span class="lineno"> 251</span> <span class="comment"># Process all classes</span></div>
|
||||
<div class="line"><span class="lineno"> 252</span> <span class="keywordflow">for</span> class_scope <span class="keywordflow">in</span> self.classes.values():</div>
|
||||
<div class="line"><span class="lineno"> 253</span> resolve_class(class_scope)</div>
|
||||
<div class="line"><span class="lineno"> 254</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00297">transformers.symbol_tree.SymbolTree.apply_name_generator()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ab61ebd1549ee934fa7e468407a410b14" name="ab61ebd1549ee934fa7e468407a410b14"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab61ebd1549ee934fa7e468407a410b14">◆ </a></span>current_scope</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.current_scope</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00156">156</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00210">transformers.symbol_tree.SymbolTree.add_reference()</a>, <a class="el" href="symbol__tree_8py_source.html#l00192">transformers.symbol_tree.SymbolTree.add_symbol()</a>, <a class="el" href="symbol__tree_8py_source.html#l00297">transformers.symbol_tree.SymbolTree.apply_name_generator()</a>, <a class="el" href="symbol__tree_8py_source.html#l00185">transformers.symbol_tree.SymbolTree.pop_scope()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00164">transformers.symbol_tree.SymbolTree.push_scope()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a69923f85f26cb752607ec256796647be" name="a69923f85f26cb752607ec256796647be"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a69923f85f26cb752607ec256796647be">◆ </a></span>root_scope</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTree.root_scope</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00154">154</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
var classtransformers_1_1symbol__tree_1_1SymbolTree =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#ae5a94636b396b77c05857572823b1285", null ],
|
||||
[ "add_reference", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab45a75613adc005d160afbc3a5d4034c", null ],
|
||||
[ "add_symbol", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#a059c692815d67b54786eeae7a69a699d", null ],
|
||||
[ "apply_name_generator", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab21d8bdd7653df8f0cddf0fbb1f916b2", null ],
|
||||
[ "check_for_issues", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#a5a585fa57a9f8fd224cf4d55b8180a78", null ],
|
||||
[ "get_rename_mapping", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#aad251f8dde7939c5194c6cfc4caf62a5", null ],
|
||||
[ "pop_scope", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#ac3622dfd3cf0c24f591974f4daf542b7", null ],
|
||||
[ "push_scope", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#a552a46afd0e3e2eed55366a9d0b037b6", null ],
|
||||
[ "resolve_inheritance", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#af5a83401d437658d233d32f15071305c", null ],
|
||||
[ "current_scope", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#ab61ebd1549ee934fa7e468407a410b14", null ],
|
||||
[ "root_scope", "classtransformers_1_1symbol__tree_1_1SymbolTree.html#a69923f85f26cb752607ec256796647be", null ]
|
||||
];
|
||||
@@ -0,0 +1,125 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolTreeBuilder Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#adb9a525c0003b90a619179e8c9d42f4f">__init__</a>(self)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a32eb8339c1450dc3def80e5bc94974ee">build_tree</a>(self, ast.AST tree)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac65977004ca9efc10798bf3ba482456e">current_class</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae91f0ddf23926d9bd4c46a448248d006">current_function_args</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a2085ee40b893a6a08ce7c4dab5734ba2">in_attribute_ctx</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a7be7f365eb0a88520418350d0489198c">in_class_def</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#aeedf41282ae721713024904629c2c8a4">tree</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a565b94a735a3899055141b19bdcdd7e0">visit_arguments</a>(self, ast.arguments node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a1a43a6e373b68b4bfee55ea12f96fdb0">visit_Assign</a>(self, ast.Assign node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a50731af5433062399d9d9be18e3c65f5">visit_Attribute</a>(self, ast.Attribute node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a4347feddd371651de92d2a27521b7db4">visit_attribute_assignment</a>(self, ast.Attribute node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac2a538f11fab8831b20026881c148744">visit_ClassDef</a>(self, ast.ClassDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a52448d9c2f26302f3fec276aac37a19b">visit_FunctionDef</a>(self, ast.FunctionDef node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a662cfd0c23a2b7578efe656479c75269">visit_Import</a>(self, ast.Import node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae098863349f3088291bf86dbe0275590">visit_ImportFrom</a>(self, ast.ImportFrom node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a5706641787b556edc011c99fc5233b01">visit_Module</a>(self, ast.Module node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#add1ec41f47e2b9d45d01ddaa8848a846">visit_Name</a>(self, ast.Name node)</td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">transformers.symbol_tree.SymbolTreeBuilder</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,827 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.SymbolTreeBuilder Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolTreeBuilder Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.symbol_tree.SymbolTreeBuilder:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder__inherit__graph.png" border="0" usemap="#atransformers_8symbol__tree_8SymbolTreeBuilder_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.symbol_tree.SymbolTreeBuilder:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder__coll__graph.png" border="0" usemap="#atransformers_8symbol__tree_8SymbolTreeBuilder_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<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:adb9a525c0003b90a619179e8c9d42f4f" id="r_adb9a525c0003b90a619179e8c9d42f4f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#adb9a525c0003b90a619179e8c9d42f4f">__init__</a> (self)</td></tr>
|
||||
<tr class="separator:adb9a525c0003b90a619179e8c9d42f4f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a32eb8339c1450dc3def80e5bc94974ee" id="r_a32eb8339c1450dc3def80e5bc94974ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a32eb8339c1450dc3def80e5bc94974ee">build_tree</a> (self, ast.AST <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#aeedf41282ae721713024904629c2c8a4">tree</a>)</td></tr>
|
||||
<tr class="separator:a32eb8339c1450dc3def80e5bc94974ee"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a565b94a735a3899055141b19bdcdd7e0" id="r_a565b94a735a3899055141b19bdcdd7e0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a565b94a735a3899055141b19bdcdd7e0">visit_arguments</a> (self, ast.arguments node)</td></tr>
|
||||
<tr class="separator:a565b94a735a3899055141b19bdcdd7e0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1a43a6e373b68b4bfee55ea12f96fdb0" id="r_a1a43a6e373b68b4bfee55ea12f96fdb0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a1a43a6e373b68b4bfee55ea12f96fdb0">visit_Assign</a> (self, ast.Assign node)</td></tr>
|
||||
<tr class="separator:a1a43a6e373b68b4bfee55ea12f96fdb0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a50731af5433062399d9d9be18e3c65f5" id="r_a50731af5433062399d9d9be18e3c65f5"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a50731af5433062399d9d9be18e3c65f5">visit_Attribute</a> (self, ast.Attribute node)</td></tr>
|
||||
<tr class="separator:a50731af5433062399d9d9be18e3c65f5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4347feddd371651de92d2a27521b7db4" id="r_a4347feddd371651de92d2a27521b7db4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a4347feddd371651de92d2a27521b7db4">visit_attribute_assignment</a> (self, ast.Attribute node)</td></tr>
|
||||
<tr class="separator:a4347feddd371651de92d2a27521b7db4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac2a538f11fab8831b20026881c148744" id="r_ac2a538f11fab8831b20026881c148744"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac2a538f11fab8831b20026881c148744">visit_ClassDef</a> (self, ast.ClassDef node)</td></tr>
|
||||
<tr class="separator:ac2a538f11fab8831b20026881c148744"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a52448d9c2f26302f3fec276aac37a19b" id="r_a52448d9c2f26302f3fec276aac37a19b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a52448d9c2f26302f3fec276aac37a19b">visit_FunctionDef</a> (self, ast.FunctionDef node)</td></tr>
|
||||
<tr class="separator:a52448d9c2f26302f3fec276aac37a19b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a662cfd0c23a2b7578efe656479c75269" id="r_a662cfd0c23a2b7578efe656479c75269"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a662cfd0c23a2b7578efe656479c75269">visit_Import</a> (self, ast.Import node)</td></tr>
|
||||
<tr class="separator:a662cfd0c23a2b7578efe656479c75269"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae098863349f3088291bf86dbe0275590" id="r_ae098863349f3088291bf86dbe0275590"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae098863349f3088291bf86dbe0275590">visit_ImportFrom</a> (self, ast.ImportFrom node)</td></tr>
|
||||
<tr class="separator:ae098863349f3088291bf86dbe0275590"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5706641787b556edc011c99fc5233b01" id="r_a5706641787b556edc011c99fc5233b01"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a5706641787b556edc011c99fc5233b01">visit_Module</a> (self, ast.Module node)</td></tr>
|
||||
<tr class="separator:a5706641787b556edc011c99fc5233b01"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:add1ec41f47e2b9d45d01ddaa8848a846" id="r_add1ec41f47e2b9d45d01ddaa8848a846"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#add1ec41f47e2b9d45d01ddaa8848a846">visit_Name</a> (self, ast.Name node)</td></tr>
|
||||
<tr class="separator:add1ec41f47e2b9d45d01ddaa8848a846"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ac65977004ca9efc10798bf3ba482456e" id="r_ac65977004ca9efc10798bf3ba482456e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac65977004ca9efc10798bf3ba482456e">current_class</a></td></tr>
|
||||
<tr class="separator:ac65977004ca9efc10798bf3ba482456e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae91f0ddf23926d9bd4c46a448248d006" id="r_ae91f0ddf23926d9bd4c46a448248d006"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae91f0ddf23926d9bd4c46a448248d006">current_function_args</a></td></tr>
|
||||
<tr class="separator:ae91f0ddf23926d9bd4c46a448248d006"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2085ee40b893a6a08ce7c4dab5734ba2" id="r_a2085ee40b893a6a08ce7c4dab5734ba2"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a2085ee40b893a6a08ce7c4dab5734ba2">in_attribute_ctx</a></td></tr>
|
||||
<tr class="separator:a2085ee40b893a6a08ce7c4dab5734ba2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7be7f365eb0a88520418350d0489198c" id="r_a7be7f365eb0a88520418350d0489198c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a7be7f365eb0a88520418350d0489198c">in_class_def</a></td></tr>
|
||||
<tr class="separator:a7be7f365eb0a88520418350d0489198c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aeedf41282ae721713024904629c2c8a4" id="r_aeedf41282ae721713024904629c2c8a4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#aeedf41282ae721713024904629c2c8a4">tree</a></td></tr>
|
||||
<tr class="separator:aeedf41282ae721713024904629c2c8a4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">Builds a symbol tree by visiting all nodes in the AST.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00364">364</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="adb9a525c0003b90a619179e8c9d42f4f" name="adb9a525c0003b90a619179e8c9d42f4f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adb9a525c0003b90a619179e8c9d42f4f">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00369">369</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 369</span> <span class="keyword">def </span>__init__(self):</div>
|
||||
<div class="line"><span class="lineno"> 370</span> self.tree = SymbolTree()</div>
|
||||
<div class="line"><span class="lineno"> 371</span> </div>
|
||||
<div class="line"><span class="lineno"> 372</span> <span class="comment"># Track whether we're in a class definition</span></div>
|
||||
<div class="line"><span class="lineno"> 373</span> self.in_class_def = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 374</span> self.current_class = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><span class="lineno"> 375</span> </div>
|
||||
<div class="line"><span class="lineno"> 376</span> <span class="comment"># Track function augments to avoid creating symbols for them twice</span></div>
|
||||
<div class="line"><span class="lineno"> 377</span> self.current_function_args = set()</div>
|
||||
<div class="line"><span class="lineno"> 378</span> </div>
|
||||
<div class="line"><span class="lineno"> 379</span> <span class="comment"># Track whether we're in an attribute context</span></div>
|
||||
<div class="line"><span class="lineno"> 380</span> self.in_attribute_ctx = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 381</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a32eb8339c1450dc3def80e5bc94974ee" name="a32eb8339c1450dc3def80e5bc94974ee"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a32eb8339c1450dc3def80e5bc94974ee">◆ </a></span>build_tree()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTree.html">SymbolTree</a> transformers.symbol_tree.SymbolTreeBuilder.build_tree </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.AST </td>
|
||||
<td class="paramname"><em>tree</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Build the symbol tree from the AST.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00553">553</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 553</span> <span class="keyword">def </span>build_tree(self, tree: ast.AST) -> SymbolTree:</div>
|
||||
<div class="line"><span class="lineno"> 554</span> <span class="stringliteral">"""Build the symbol tree from the AST."""</span></div>
|
||||
<div class="line"><span class="lineno"> 555</span> self.visit(tree)</div>
|
||||
<div class="line"><span class="lineno"> 556</span> <span class="comment"># Perform final processing</span></div>
|
||||
<div class="line"><span class="lineno"> 557</span> self.tree.resolve_inheritance()</div>
|
||||
<div class="line"><span class="lineno"> 558</span> <span class="keywordflow">return</span> self.tree</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a565b94a735a3899055141b19bdcdd7e0" name="a565b94a735a3899055141b19bdcdd7e0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a565b94a735a3899055141b19bdcdd7e0">◆ </a></span>visit_arguments()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_arguments </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.arguments </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process function arguments.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00446">446</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 446</span> <span class="keyword">def </span>visit_arguments(self, node: ast.arguments):</div>
|
||||
<div class="line"><span class="lineno"> 447</span> <span class="stringliteral">"""Process function arguments."""</span></div>
|
||||
<div class="line"><span class="lineno"> 448</span> <span class="comment"># Process positional arguments</span></div>
|
||||
<div class="line"><span class="lineno"> 449</span> <span class="keywordflow">for</span> arg <span class="keywordflow">in</span> node.args:</div>
|
||||
<div class="line"><span class="lineno"> 450</span> self.current_function_args.add(arg.arg)</div>
|
||||
<div class="line"><span class="lineno"> 451</span> self.tree.add_symbol(arg.arg, SymbolType.ARGUMENT, arg)</div>
|
||||
<div class="line"><span class="lineno"> 452</span> </div>
|
||||
<div class="line"><span class="lineno"> 453</span> <span class="comment"># Process vararg (e.g., *args)</span></div>
|
||||
<div class="line"><span class="lineno"> 454</span> <span class="keywordflow">if</span> node.vararg:</div>
|
||||
<div class="line"><span class="lineno"> 455</span> self.current_function_args.add(node.vararg.arg)</div>
|
||||
<div class="line"><span class="lineno"> 456</span> self.tree.add_symbol(node.vararg.arg, SymbolType.ARGUMENT, node.vararg)</div>
|
||||
<div class="line"><span class="lineno"> 457</span> </div>
|
||||
<div class="line"><span class="lineno"> 458</span> <span class="comment"># Process keyword arguments</span></div>
|
||||
<div class="line"><span class="lineno"> 459</span> <span class="keywordflow">for</span> kwarg <span class="keywordflow">in</span> node.kwonlyargs:</div>
|
||||
<div class="line"><span class="lineno"> 460</span> self.current_function_args.add(kwarg.arg)</div>
|
||||
<div class="line"><span class="lineno"> 461</span> self.tree.add_symbol(kwarg.arg, SymbolType.ARGUMENT, kwarg)</div>
|
||||
<div class="line"><span class="lineno"> 462</span> </div>
|
||||
<div class="line"><span class="lineno"> 463</span> <span class="comment"># Process kwarg (e.g., **kwargs)</span></div>
|
||||
<div class="line"><span class="lineno"> 464</span> <span class="keywordflow">if</span> node.kwarg:</div>
|
||||
<div class="line"><span class="lineno"> 465</span> self.current_function_args.add(node.kwarg.arg)</div>
|
||||
<div class="line"><span class="lineno"> 466</span> self.tree.add_symbol(node.kwarg.arg, SymbolType.ARGUMENT, node.kwarg)</div>
|
||||
<div class="line"><span class="lineno"> 467</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00377">transformers.symbol_tree.SymbolTreeBuilder.current_function_args</a>, and <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1a43a6e373b68b4bfee55ea12f96fdb0" name="a1a43a6e373b68b4bfee55ea12f96fdb0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1a43a6e373b68b4bfee55ea12f96fdb0">◆ </a></span>visit_Assign()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_Assign </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Assign </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process an assignment statement.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00468">468</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 468</span> <span class="keyword">def </span>visit_Assign(self, node: ast.Assign):</div>
|
||||
<div class="line"><span class="lineno"> 469</span> <span class="stringliteral">"""Process an assignment statement."""</span></div>
|
||||
<div class="line"><span class="lineno"> 470</span> <span class="comment"># Visit the right side first to capture any variable references</span></div>
|
||||
<div class="line"><span class="lineno"> 471</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 472</span> </div>
|
||||
<div class="line"><span class="lineno"> 473</span> <span class="comment"># Now visit the targets (left-hand side)</span></div>
|
||||
<div class="line"><span class="lineno"> 474</span> <span class="keywordflow">for</span> target <span class="keywordflow">in</span> node.targets:</div>
|
||||
<div class="line"><span class="lineno"> 475</span> <span class="comment"># Handle attribute assignment (e.g., self.x = value)</span></div>
|
||||
<div class="line"><span class="lineno"> 476</span> <span class="keywordflow">if</span> isinstance(target, ast.Attribute):</div>
|
||||
<div class="line"><span class="lineno"> 477</span> self.visit_attribute_assignment(target)</div>
|
||||
<div class="line"><span class="lineno"> 478</span> <span class="comment"># Handle simple name assignment</span></div>
|
||||
<div class="line"><span class="lineno"> 479</span> <span class="keywordflow">elif</span> isinstance(target, ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 480</span> <span class="comment"># Only add symbol if it's not already a function argument</span></div>
|
||||
<div class="line"><span class="lineno"> 481</span> <span class="keywordflow">if</span> target.id <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.current_function_args:</div>
|
||||
<div class="line"><span class="lineno"> 482</span> self.tree.add_symbol(target.id, SymbolType.VARIABLE, target)</div>
|
||||
<div class="line"><span class="lineno"> 483</span> <span class="comment"># Handle other target types (e.g., subscripts, tuples)</span></div>
|
||||
<div class="line"><span class="lineno"> 484</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 485</span> self.visit(target)</div>
|
||||
<div class="line"><span class="lineno"> 486</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00377">transformers.symbol_tree.SymbolTreeBuilder.current_function_args</a>, <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>, and <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a50731af5433062399d9d9be18e3c65f5" name="a50731af5433062399d9d9be18e3c65f5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a50731af5433062399d9d9be18e3c65f5">◆ </a></span>visit_Attribute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Attribute </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process attribute access (e.g., obj.attr).</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00504">504</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 504</span> <span class="keyword">def </span>visit_Attribute(self, node: ast.Attribute):</div>
|
||||
<div class="line"><span class="lineno"> 505</span> <span class="stringliteral">"""Process attribute access (e.g., obj.attr)."""</span></div>
|
||||
<div class="line"><span class="lineno"> 506</span> <span class="comment"># Track that we're in an attribute context</span></div>
|
||||
<div class="line"><span class="lineno"> 507</span> prev_in_attribute_ctx = self.in_attribute_ctx</div>
|
||||
<div class="line"><span class="lineno"> 508</span> self.in_attribute_ctx = <span class="keyword">True</span></div>
|
||||
<div class="line"><span class="lineno"> 509</span> </div>
|
||||
<div class="line"><span class="lineno"> 510</span> <span class="comment"># Visit the left side</span></div>
|
||||
<div class="line"><span class="lineno"> 511</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 512</span> </div>
|
||||
<div class="line"><span class="lineno"> 513</span> <span class="comment"># Handle self.attr access in a class</span></div>
|
||||
<div class="line"><span class="lineno"> 514</span> <span class="keywordflow">if</span> (isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span></div>
|
||||
<div class="line"><span class="lineno"> 515</span> <span class="keywordflow">and</span> self.in_class_def <span class="keywordflow">and</span> self.current_class):</div>
|
||||
<div class="line"><span class="lineno"> 516</span> <span class="comment"># The attribute might be accessed before it's assigned, so we need to ensure it's in the symbol table</span></div>
|
||||
<div class="line"><span class="lineno"> 517</span> class_scope = self.tree.classes.get(self.current_class)</div>
|
||||
<div class="line"><span class="lineno"> 518</span> <span class="keywordflow">if</span> class_scope <span class="keywordflow">and</span> node.attr <span class="keywordflow">not</span> <span class="keywordflow">in</span> class_scope.attributes:</div>
|
||||
<div class="line"><span class="lineno"> 519</span> self.tree.add_symbol(node.attr, SymbolType.ATTRIBUTE, node)</div>
|
||||
<div class="line"><span class="lineno"> 520</span> </div>
|
||||
<div class="line"><span class="lineno"> 521</span> <span class="comment"># Restore previous state</span></div>
|
||||
<div class="line"><span class="lineno"> 522</span> self.in_attribute_ctx = prev_in_attribute_ctx</div>
|
||||
<div class="line"><span class="lineno"> 523</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00380">transformers.symbol_tree.SymbolTreeBuilder.in_attribute_ctx</a>, <a class="el" href="symbol__tree_8py_source.html#l00373">transformers.symbol_tree.SymbolTreeBuilder.in_class_def</a>, and <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4347feddd371651de92d2a27521b7db4" name="a4347feddd371651de92d2a27521b7db4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4347feddd371651de92d2a27521b7db4">◆ </a></span>visit_attribute_assignment()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Attribute </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process attribute assignment (e.g., self.x = value).</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00487">487</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 487</span> <span class="keyword">def </span>visit_attribute_assignment(self, node: ast.Attribute):</div>
|
||||
<div class="line"><span class="lineno"> 488</span> <span class="stringliteral">"""Process attribute assignment (e.g., self.x = value)."""</span></div>
|
||||
<div class="line"><span class="lineno"> 489</span> <span class="comment"># Check if this is a self.attr assignment in a class</span></div>
|
||||
<div class="line"><span class="lineno"> 490</span> <span class="keywordflow">if</span> (isinstance(node.value, ast.Name) <span class="keywordflow">and</span> node.value.id == <span class="stringliteral">'self'</span></div>
|
||||
<div class="line"><span class="lineno"> 491</span> <span class="keywordflow">and</span> self.in_class_def <span class="keywordflow">and</span> self.current_class):</div>
|
||||
<div class="line"><span class="lineno"> 492</span> <span class="comment"># Add attribute to the current class</span></div>
|
||||
<div class="line"><span class="lineno"> 493</span> self.tree.add_symbol(node.attr, SymbolType.ATTRIBUTE, node)</div>
|
||||
<div class="line"><span class="lineno"> 494</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 495</span> <span class="comment"># Visit the left side to capture any variable references</span></div>
|
||||
<div class="line"><span class="lineno"> 496</span> self.visit(node.value)</div>
|
||||
<div class="line"><span class="lineno"> 497</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00373">transformers.symbol_tree.SymbolTreeBuilder.in_class_def</a>, and <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00468">transformers.symbol_tree.SymbolTreeBuilder.visit_Assign()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac2a538f11fab8831b20026881c148744" name="ac2a538f11fab8831b20026881c148744"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac2a538f11fab8831b20026881c148744">◆ </a></span>visit_ClassDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ClassDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process a class definition.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00390">390</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 390</span> <span class="keyword">def </span>visit_ClassDef(self, node: ast.ClassDef):</div>
|
||||
<div class="line"><span class="lineno"> 391</span> <span class="stringliteral">"""Process a class definition."""</span></div>
|
||||
<div class="line"><span class="lineno"> 392</span> <span class="comment"># Create a new class scope</span></div>
|
||||
<div class="line"><span class="lineno"> 393</span> class_scope = self.tree.push_scope(node.name, <span class="stringliteral">"class"</span>, node)</div>
|
||||
<div class="line"><span class="lineno"> 394</span> </div>
|
||||
<div class="line"><span class="lineno"> 395</span> <span class="comment"># Add class to current scope's symbols</span></div>
|
||||
<div class="line"><span class="lineno"> 396</span> self.tree.add_symbol(node.name, SymbolType.CLASS, node)</div>
|
||||
<div class="line"><span class="lineno"> 397</span> </div>
|
||||
<div class="line"><span class="lineno"> 398</span> <span class="comment"># Track base classes</span></div>
|
||||
<div class="line"><span class="lineno"> 399</span> <span class="keywordflow">for</span> base <span class="keywordflow">in</span> node.bases:</div>
|
||||
<div class="line"><span class="lineno"> 400</span> <span class="keywordflow">if</span> isinstance(base, ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 401</span> class_scope.add_base_class(base.id)</div>
|
||||
<div class="line"><span class="lineno"> 402</span> <span class="comment"># Track reference to the base class</span></div>
|
||||
<div class="line"><span class="lineno"> 403</span> self.tree.add_reference(base.id, base)</div>
|
||||
<div class="line"><span class="lineno"> 404</span> </div>
|
||||
<div class="line"><span class="lineno"> 405</span> <span class="comment"># Save previous state and update current state</span></div>
|
||||
<div class="line"><span class="lineno"> 406</span> prev_in_class = self.in_class_def</div>
|
||||
<div class="line"><span class="lineno"> 407</span> prev_class = self.current_class</div>
|
||||
<div class="line"><span class="lineno"> 408</span> self.in_class_def = <span class="keyword">True</span></div>
|
||||
<div class="line"><span class="lineno"> 409</span> self.current_class = node.name</div>
|
||||
<div class="line"><span class="lineno"> 410</span> </div>
|
||||
<div class="line"><span class="lineno"> 411</span> <span class="comment"># Visit class body</span></div>
|
||||
<div class="line"><span class="lineno"> 412</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 413</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 414</span> </div>
|
||||
<div class="line"><span class="lineno"> 415</span> <span class="comment"># Restore previous state</span></div>
|
||||
<div class="line"><span class="lineno"> 416</span> self.in_class_def = prev_in_class</div>
|
||||
<div class="line"><span class="lineno"> 417</span> self.current_class = prev_class</div>
|
||||
<div class="line"><span class="lineno"> 418</span> </div>
|
||||
<div class="line"><span class="lineno"> 419</span> <span class="comment"># Exit class scope</span></div>
|
||||
<div class="line"><span class="lineno"> 420</span> self.tree.pop_scope()</div>
|
||||
<div class="line"><span class="lineno"> 421</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="attribute__transformer_8py_source.html#l00039">transformers.attribute_transformer.AttributeTransformer.current_class</a>, <a class="el" href="class__analyzer_8py_source.html#l00036">transformers.class_analyzer.ClassAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00100">transformers.class_mapper.ClassMapAnalyzer.current_class</a>, <a class="el" href="class__mapper_8py_source.html#l00287">transformers.class_mapper.ClassTransformer.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00374">transformers.symbol_tree.SymbolTreeBuilder.current_class</a>, <a class="el" href="symbol__tree_8py_source.html#l00373">transformers.symbol_tree.SymbolTreeBuilder.in_class_def</a>, and <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a52448d9c2f26302f3fec276aac37a19b" name="a52448d9c2f26302f3fec276aac37a19b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a52448d9c2f26302f3fec276aac37a19b">◆ </a></span>visit_FunctionDef()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_FunctionDef </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.FunctionDef </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process a function definition.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00422">422</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 422</span> <span class="keyword">def </span>visit_FunctionDef(self, node: ast.FunctionDef):</div>
|
||||
<div class="line"><span class="lineno"> 423</span> <span class="stringliteral">"""Process a function definition."""</span></div>
|
||||
<div class="line"><span class="lineno"> 424</span> <span class="comment"># Determine if this is a method or a regular function</span></div>
|
||||
<div class="line"><span class="lineno"> 425</span> symbol_type = SymbolType.METHOD <span class="keywordflow">if</span> self.in_class_def <span class="keywordflow">else</span> SymbolType.FUNCTION</div>
|
||||
<div class="line"><span class="lineno"> 426</span> </div>
|
||||
<div class="line"><span class="lineno"> 427</span> <span class="comment"># Add function/method to current scope's symbols</span></div>
|
||||
<div class="line"><span class="lineno"> 428</span> self.tree.add_symbol(node.name, symbol_type, node)</div>
|
||||
<div class="line"><span class="lineno"> 429</span> </div>
|
||||
<div class="line"><span class="lineno"> 430</span> <span class="comment"># Create a new function scope</span></div>
|
||||
<div class="line"><span class="lineno"> 431</span> self.tree.push_scope(node.name, <span class="stringliteral">"function"</span>, node)</div>
|
||||
<div class="line"><span class="lineno"> 432</span> </div>
|
||||
<div class="line"><span class="lineno"> 433</span> <span class="comment"># Clear current function arguments set</span></div>
|
||||
<div class="line"><span class="lineno"> 434</span> self.current_function_args = set()</div>
|
||||
<div class="line"><span class="lineno"> 435</span> </div>
|
||||
<div class="line"><span class="lineno"> 436</span> <span class="comment"># Process arguments</span></div>
|
||||
<div class="line"><span class="lineno"> 437</span> self.visit(node.args)</div>
|
||||
<div class="line"><span class="lineno"> 438</span> </div>
|
||||
<div class="line"><span class="lineno"> 439</span> <span class="comment"># Visit function body</span></div>
|
||||
<div class="line"><span class="lineno"> 440</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 441</span> self.visit(item)</div>
|
||||
<div class="line"><span class="lineno"> 442</span> </div>
|
||||
<div class="line"><span class="lineno"> 443</span> <span class="comment"># Exit function scope</span></div>
|
||||
<div class="line"><span class="lineno"> 444</span> self.tree.pop_scope()</div>
|
||||
<div class="line"><span class="lineno"> 445</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00377">transformers.symbol_tree.SymbolTreeBuilder.current_function_args</a>, <a class="el" href="symbol__tree_8py_source.html#l00373">transformers.symbol_tree.SymbolTreeBuilder.in_class_def</a>, and <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a662cfd0c23a2b7578efe656479c75269" name="a662cfd0c23a2b7578efe656479c75269"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a662cfd0c23a2b7578efe656479c75269">◆ </a></span>visit_Import()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_Import </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Import </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process an import statement.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00524">524</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 524</span> <span class="keyword">def </span>visit_Import(self, node: ast.Import):</div>
|
||||
<div class="line"><span class="lineno"> 525</span> <span class="stringliteral">"""Process an import statement."""</span></div>
|
||||
<div class="line"><span class="lineno"> 526</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.names:</div>
|
||||
<div class="line"><span class="lineno"> 527</span> <span class="comment"># The imported name should not be obfuscated</span></div>
|
||||
<div class="line"><span class="lineno"> 528</span> symbol = self.tree.add_symbol(item.asname <span class="keywordflow">or</span> item.name, SymbolType.IMPORT, node)</div>
|
||||
<div class="line"><span class="lineno"> 529</span> symbol.is_obfuscatable = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 530</span> symbol.is_imported = <span class="keyword">True</span></div>
|
||||
<div class="line"><span class="lineno"> 531</span> </div>
|
||||
<div class="line"><span class="lineno"> 532</span> <span class="comment"># Track the import</span></div>
|
||||
<div class="line"><span class="lineno"> 533</span> <span class="keywordflow">if</span> isinstance(self.tree.current_scope, ModuleScope):</div>
|
||||
<div class="line"><span class="lineno"> 534</span> module_scope = self.tree.current_scope</div>
|
||||
<div class="line"><span class="lineno"> 535</span> module_scope.add_import(item.asname <span class="keywordflow">or</span> item.name, item.name)</div>
|
||||
<div class="line"><span class="lineno"> 536</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae098863349f3088291bf86dbe0275590" name="ae098863349f3088291bf86dbe0275590"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae098863349f3088291bf86dbe0275590">◆ </a></span>visit_ImportFrom()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_ImportFrom </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.ImportFrom </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process a from-import statement.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00537">537</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 537</span> <span class="keyword">def </span>visit_ImportFrom(self, node: ast.ImportFrom):</div>
|
||||
<div class="line"><span class="lineno"> 538</span> <span class="stringliteral">"""Process a from-import statement."""</span></div>
|
||||
<div class="line"><span class="lineno"> 539</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> node.names:</div>
|
||||
<div class="line"><span class="lineno"> 540</span> <span class="comment"># The imported name should not be obfuscated</span></div>
|
||||
<div class="line"><span class="lineno"> 541</span> symbol = self.tree.add_symbol(item.asname <span class="keywordflow">or</span> item.name, SymbolType.IMPORT, node)</div>
|
||||
<div class="line"><span class="lineno"> 542</span> symbol.is_obfuscatable = <span class="keyword">False</span></div>
|
||||
<div class="line"><span class="lineno"> 543</span> symbol.is_imported = <span class="keyword">True</span></div>
|
||||
<div class="line"><span class="lineno"> 544</span> symbol.original_module = node.module</div>
|
||||
<div class="line"><span class="lineno"> 545</span> </div>
|
||||
<div class="line"><span class="lineno"> 546</span> <span class="comment"># Track the import</span></div>
|
||||
<div class="line"><span class="lineno"> 547</span> <span class="keywordflow">if</span> isinstance(self.tree.current_scope, ModuleScope):</div>
|
||||
<div class="line"><span class="lineno"> 548</span> module_scope = self.tree.current_scope</div>
|
||||
<div class="line"><span class="lineno"> 549</span> module_scope.add_from_import(node.module, item.asname <span class="keywordflow">or</span> item.name, item.name)</div>
|
||||
<div class="line"><span class="lineno"> 550</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5706641787b556edc011c99fc5233b01" name="a5706641787b556edc011c99fc5233b01"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5706641787b556edc011c99fc5233b01">◆ </a></span>visit_Module()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_Module </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Module </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process a module node.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00382">382</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 382</span> <span class="keyword">def </span>visit_Module(self, node: ast.Module):</div>
|
||||
<div class="line"><span class="lineno"> 383</span> <span class="stringliteral">"""Process a module node."""</span></div>
|
||||
<div class="line"><span class="lineno"> 384</span> self.tree.push_scope(<span class="stringliteral">"__main__"</span>, <span class="stringliteral">"module"</span>, node)</div>
|
||||
<div class="line"><span class="lineno"> 385</span> <span class="comment"># Visit all statements in the module</span></div>
|
||||
<div class="line"><span class="lineno"> 386</span> <span class="keywordflow">for</span> stmt <span class="keywordflow">in</span> node.body:</div>
|
||||
<div class="line"><span class="lineno"> 387</span> self.visit(stmt)</div>
|
||||
<div class="line"><span class="lineno"> 388</span> self.tree.pop_scope()</div>
|
||||
<div class="line"><span class="lineno"> 389</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="add1ec41f47e2b9d45d01ddaa8848a846" name="add1ec41f47e2b9d45d01ddaa8848a846"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#add1ec41f47e2b9d45d01ddaa8848a846">◆ </a></span>visit_Name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.visit_Name </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">ast.Name </td>
|
||||
<td class="paramname"><em>node</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">Process a name (variable reference).</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00498">498</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 498</span> <span class="keyword">def </span>visit_Name(self, node: ast.Name):</div>
|
||||
<div class="line"><span class="lineno"> 499</span> <span class="stringliteral">"""Process a name (variable reference)."""</span></div>
|
||||
<div class="line"><span class="lineno"> 500</span> <span class="comment"># This is a variable/function/class reference, not a definition</span></div>
|
||||
<div class="line"><span class="lineno"> 501</span> <span class="keywordflow">if</span> isinstance(node.ctx, ast.Load):</div>
|
||||
<div class="line"><span class="lineno"> 502</span> self.tree.add_reference(node.id, node)</div>
|
||||
<div class="line"><span class="lineno"> 503</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="symbol__tree_8py_source.html#l00370">transformers.symbol_tree.SymbolTreeBuilder.tree</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ac65977004ca9efc10798bf3ba482456e" name="ac65977004ca9efc10798bf3ba482456e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac65977004ca9efc10798bf3ba482456e">◆ </a></span>current_class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.current_class</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00374">374</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="class__mapper_8py_source.html#l00196">transformers.class_mapper.ClassMapAnalyzer.visit_Attribute()</a>, <a class="el" href="class__mapper_8py_source.html#l00315">transformers.class_mapper.ClassTransformer.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00050">transformers.attribute_transformer.AttributeTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00141">transformers.class_analyzer.ClassAnalyzer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00094">transformers.class_mapper.ClassMapAnalyzer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00279">transformers.class_mapper.ClassTransformer.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="attribute__transformer_8py_source.html#l00028">transformers.attribute_transformer.AttributeTransformer.visit_ClassDef()</a>, <a class="el" href="class__mapper_8py_source.html#l00300">transformers.class_mapper.ClassTransformer.visit_FunctionDef()</a>, and <a class="el" href="class__mapper_8py_source.html#l00149">transformers.class_mapper.ClassMapAnalyzer.visit_method_def()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae91f0ddf23926d9bd4c46a448248d006" name="ae91f0ddf23926d9bd4c46a448248d006"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae91f0ddf23926d9bd4c46a448248d006">◆ </a></span>current_function_args</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.current_function_args</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00377">377</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00446">transformers.symbol_tree.SymbolTreeBuilder.visit_arguments()</a>, <a class="el" href="symbol__tree_8py_source.html#l00468">transformers.symbol_tree.SymbolTreeBuilder.visit_Assign()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00422">transformers.symbol_tree.SymbolTreeBuilder.visit_FunctionDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2085ee40b893a6a08ce7c4dab5734ba2" name="a2085ee40b893a6a08ce7c4dab5734ba2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2085ee40b893a6a08ce7c4dab5734ba2">◆ </a></span>in_attribute_ctx</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.in_attribute_ctx</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00380">380</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7be7f365eb0a88520418350d0489198c" name="a7be7f365eb0a88520418350d0489198c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7be7f365eb0a88520418350d0489198c">◆ </a></span>in_class_def</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.in_class_def</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00373">373</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00422">transformers.symbol_tree.SymbolTreeBuilder.visit_FunctionDef()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeedf41282ae721713024904629c2c8a4" name="aeedf41282ae721713024904629c2c8a4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeedf41282ae721713024904629c2c8a4">◆ </a></span>tree</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">transformers.symbol_tree.SymbolTreeBuilder.tree</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00370">370</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="symbol__tree_8py_source.html#l00553">transformers.symbol_tree.SymbolTreeBuilder.build_tree()</a>, <a class="el" href="symbol__tree_8py_source.html#l00446">transformers.symbol_tree.SymbolTreeBuilder.visit_arguments()</a>, <a class="el" href="symbol__tree_8py_source.html#l00468">transformers.symbol_tree.SymbolTreeBuilder.visit_Assign()</a>, <a class="el" href="symbol__tree_8py_source.html#l00504">transformers.symbol_tree.SymbolTreeBuilder.visit_Attribute()</a>, <a class="el" href="symbol__tree_8py_source.html#l00487">transformers.symbol_tree.SymbolTreeBuilder.visit_attribute_assignment()</a>, <a class="el" href="symbol__tree_8py_source.html#l00390">transformers.symbol_tree.SymbolTreeBuilder.visit_ClassDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00422">transformers.symbol_tree.SymbolTreeBuilder.visit_FunctionDef()</a>, <a class="el" href="symbol__tree_8py_source.html#l00524">transformers.symbol_tree.SymbolTreeBuilder.visit_Import()</a>, <a class="el" href="symbol__tree_8py_source.html#l00537">transformers.symbol_tree.SymbolTreeBuilder.visit_ImportFrom()</a>, <a class="el" href="symbol__tree_8py_source.html#l00382">transformers.symbol_tree.SymbolTreeBuilder.visit_Module()</a>, and <a class="el" href="symbol__tree_8py_source.html#l00498">transformers.symbol_tree.SymbolTreeBuilder.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html">SymbolTreeBuilder</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
var classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder =
|
||||
[
|
||||
[ "__init__", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#adb9a525c0003b90a619179e8c9d42f4f", null ],
|
||||
[ "build_tree", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a32eb8339c1450dc3def80e5bc94974ee", null ],
|
||||
[ "visit_arguments", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a565b94a735a3899055141b19bdcdd7e0", null ],
|
||||
[ "visit_Assign", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a1a43a6e373b68b4bfee55ea12f96fdb0", null ],
|
||||
[ "visit_Attribute", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a50731af5433062399d9d9be18e3c65f5", null ],
|
||||
[ "visit_attribute_assignment", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a4347feddd371651de92d2a27521b7db4", null ],
|
||||
[ "visit_ClassDef", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac2a538f11fab8831b20026881c148744", null ],
|
||||
[ "visit_FunctionDef", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a52448d9c2f26302f3fec276aac37a19b", null ],
|
||||
[ "visit_Import", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a662cfd0c23a2b7578efe656479c75269", null ],
|
||||
[ "visit_ImportFrom", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae098863349f3088291bf86dbe0275590", null ],
|
||||
[ "visit_Module", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a5706641787b556edc011c99fc5233b01", null ],
|
||||
[ "visit_Name", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#add1ec41f47e2b9d45d01ddaa8848a846", null ],
|
||||
[ "current_class", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ac65977004ca9efc10798bf3ba482456e", null ],
|
||||
[ "current_function_args", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#ae91f0ddf23926d9bd4c46a448248d006", null ],
|
||||
[ "in_attribute_ctx", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a2085ee40b893a6a08ce7c4dab5734ba2", null ],
|
||||
[ "in_class_def", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#a7be7f365eb0a88520418350d0489198c", null ],
|
||||
[ "tree", "classtransformers_1_1symbol__tree_1_1SymbolTreeBuilder.html#aeedf41282ae721713024904629c2c8a4", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.SymbolTreeBuilder"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.SymbolTreeBuilder",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.SymbolTreeBuilder"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.SymbolTreeBuilder",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="ast.NodeVisitor",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolType.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolType Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#afe39c27276fa3655e49323158a3e87ca">ARGUMENT</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a03194cf85b1f80973db4dec5365f6b52">ATTRIBUTE</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a7f25c4e953938b6761f49360f014c9da">CLASS</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a747e62c99ce5d23c7978cd7558eeffbc">FUNCTION</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a5414ea5b01801f342af004f241afa62a">IMPORT</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a0a47aadbdfff9fca91e0f2944dd8fd17">METHOD</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a9afafe6de92dc3689de599a44fb53f06">MODULE</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#ad9d2f0f2f9c17ba5c68a15d0c18cbb41">VARIABLE</a></td><td class="entry"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">transformers.symbol_tree.SymbolType</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,342 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers.symbol_tree.SymbolType Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classtransformers_1_1symbol__tree_1_1SymbolType.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-static-attribs">Static Public Attributes</a> |
|
||||
<a href="classtransformers_1_1symbol__tree_1_1SymbolType-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">transformers.symbol_tree.SymbolType Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for transformers.symbol_tree.SymbolType:</div>
|
||||
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1SymbolType__inherit__graph.png" border="0" usemap="#atransformers_8symbol__tree_8SymbolType_inherit__map" alt="Inheritance graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
|
||||
<img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for transformers.symbol_tree.SymbolType:</div>
|
||||
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
||||
</div>
|
||||
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
||||
<div class="center"><img src="classtransformers_1_1symbol__tree_1_1SymbolType__coll__graph.png" border="0" usemap="#atransformers_8symbol__tree_8SymbolType_coll__map" alt="Collaboration graph"/></div>
|
||||
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
|
||||
Static Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:afe39c27276fa3655e49323158a3e87ca" id="r_afe39c27276fa3655e49323158a3e87ca"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#afe39c27276fa3655e49323158a3e87ca">ARGUMENT</a> = "argument"</td></tr>
|
||||
<tr class="separator:afe39c27276fa3655e49323158a3e87ca"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a03194cf85b1f80973db4dec5365f6b52" id="r_a03194cf85b1f80973db4dec5365f6b52"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a03194cf85b1f80973db4dec5365f6b52">ATTRIBUTE</a> = "attribute"</td></tr>
|
||||
<tr class="separator:a03194cf85b1f80973db4dec5365f6b52"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7f25c4e953938b6761f49360f014c9da" id="r_a7f25c4e953938b6761f49360f014c9da"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a7f25c4e953938b6761f49360f014c9da">CLASS</a> = "class"</td></tr>
|
||||
<tr class="separator:a7f25c4e953938b6761f49360f014c9da"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a747e62c99ce5d23c7978cd7558eeffbc" id="r_a747e62c99ce5d23c7978cd7558eeffbc"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a747e62c99ce5d23c7978cd7558eeffbc">FUNCTION</a> = "function"</td></tr>
|
||||
<tr class="separator:a747e62c99ce5d23c7978cd7558eeffbc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5414ea5b01801f342af004f241afa62a" id="r_a5414ea5b01801f342af004f241afa62a"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a5414ea5b01801f342af004f241afa62a">IMPORT</a> = "import"</td></tr>
|
||||
<tr class="separator:a5414ea5b01801f342af004f241afa62a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0a47aadbdfff9fca91e0f2944dd8fd17" id="r_a0a47aadbdfff9fca91e0f2944dd8fd17"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a0a47aadbdfff9fca91e0f2944dd8fd17">METHOD</a> = "method"</td></tr>
|
||||
<tr class="separator:a0a47aadbdfff9fca91e0f2944dd8fd17"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9afafe6de92dc3689de599a44fb53f06" id="r_a9afafe6de92dc3689de599a44fb53f06"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#a9afafe6de92dc3689de599a44fb53f06">MODULE</a> = "module"</td></tr>
|
||||
<tr class="separator:a9afafe6de92dc3689de599a44fb53f06"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad9d2f0f2f9c17ba5c68a15d0c18cbb41" id="r_ad9d2f0f2f9c17ba5c68a15d0c18cbb41"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html#ad9d2f0f2f9c17ba5c68a15d0c18cbb41">VARIABLE</a> = "variable"</td></tr>
|
||||
<tr class="separator:ad9d2f0f2f9c17ba5c68a15d0c18cbb41"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">Defines the different types of symbols that can be tracked.</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00018">18</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
</div><h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="afe39c27276fa3655e49323158a3e87ca" name="afe39c27276fa3655e49323158a3e87ca"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afe39c27276fa3655e49323158a3e87ca">◆ </a></span>ARGUMENT</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.ARGUMENT = "argument"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00024">24</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a03194cf85b1f80973db4dec5365f6b52" name="a03194cf85b1f80973db4dec5365f6b52"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a03194cf85b1f80973db4dec5365f6b52">◆ </a></span>ATTRIBUTE</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.ATTRIBUTE = "attribute"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00025">25</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7f25c4e953938b6761f49360f014c9da" name="a7f25c4e953938b6761f49360f014c9da"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7f25c4e953938b6761f49360f014c9da">◆ </a></span>CLASS</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.CLASS = "class"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00022">22</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a747e62c99ce5d23c7978cd7558eeffbc" name="a747e62c99ce5d23c7978cd7558eeffbc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a747e62c99ce5d23c7978cd7558eeffbc">◆ </a></span>FUNCTION</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.FUNCTION = "function"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00021">21</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5414ea5b01801f342af004f241afa62a" name="a5414ea5b01801f342af004f241afa62a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5414ea5b01801f342af004f241afa62a">◆ </a></span>IMPORT</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.IMPORT = "import"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00027">27</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0a47aadbdfff9fca91e0f2944dd8fd17" name="a0a47aadbdfff9fca91e0f2944dd8fd17"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a47aadbdfff9fca91e0f2944dd8fd17">◆ </a></span>METHOD</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.METHOD = "method"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00023">23</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9afafe6de92dc3689de599a44fb53f06" name="a9afafe6de92dc3689de599a44fb53f06"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9afafe6de92dc3689de599a44fb53f06">◆ </a></span>MODULE</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.MODULE = "module"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00026">26</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad9d2f0f2f9c17ba5c68a15d0c18cbb41" name="ad9d2f0f2f9c17ba5c68a15d0c18cbb41"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad9d2f0f2f9c17ba5c68a15d0c18cbb41">◆ </a></span>VARIABLE</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">str transformers.symbol_tree.SymbolType.VARIABLE = "variable"</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="symbol__tree_8py_source.html#l00020">20</a> of file <a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="symbol__tree_8py_source.html">symbol_tree.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespacetransformers.html">transformers</a></li><li class="navelem"><a class="el" href="namespacetransformers_1_1symbol__tree.html">symbol_tree</a></li><li class="navelem"><a class="el" href="classtransformers_1_1symbol__tree_1_1SymbolType.html">SymbolType</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
var classtransformers_1_1symbol__tree_1_1SymbolType =
|
||||
[
|
||||
[ "ARGUMENT", "classtransformers_1_1symbol__tree_1_1SymbolType.html#afe39c27276fa3655e49323158a3e87ca", null ],
|
||||
[ "ATTRIBUTE", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a03194cf85b1f80973db4dec5365f6b52", null ],
|
||||
[ "CLASS", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a7f25c4e953938b6761f49360f014c9da", null ],
|
||||
[ "FUNCTION", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a747e62c99ce5d23c7978cd7558eeffbc", null ],
|
||||
[ "IMPORT", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a5414ea5b01801f342af004f241afa62a", null ],
|
||||
[ "METHOD", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a0a47aadbdfff9fca91e0f2944dd8fd17", null ],
|
||||
[ "MODULE", "classtransformers_1_1symbol__tree_1_1SymbolType.html#a9afafe6de92dc3689de599a44fb53f06", null ],
|
||||
[ "VARIABLE", "classtransformers_1_1symbol__tree_1_1SymbolType.html#ad9d2f0f2f9c17ba5c68a15d0c18cbb41", null ]
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.SymbolType"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.SymbolType",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="Enum",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
digraph "transformers.symbol_tree.SymbolType"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="transformers.symbol\l_tree.SymbolType",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip=" "];
|
||||
Node2 -> Node1 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="Enum",height=0.2,width=0.4,color="gray40", fillcolor="white", style="filled",tooltip=" "];
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1encryption_1_1StringEncryptor.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">utils.encryption.StringEncryptor Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#aeeab3fb282428a253a857668c8ad7545">__init__</a>(self, bytes primary_key, bytes secondary_key, bytes salt)</td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a6c2cacc40f85e399dee8e47e20f81739">encrypt_string</a>(self, str s)</td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a182add66c3f8039da6f1accf0b52c3c3">hide_byte</a>(self, int b)</td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a3359e4b96fb9553a0c9cc4184fc2c434">primary_key</a></td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a46597c8e3f7981b5f55ca974a5355dd3">salt</a></td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#ac923cfbf0a09c75e6bb0cea01cde8cd8">secondary_key</a></td><td class="entry"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">utils.encryption.StringEncryptor</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,396 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: utils.encryption.StringEncryptor Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1encryption_1_1StringEncryptor.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classutils_1_1encryption_1_1StringEncryptor-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">utils.encryption.StringEncryptor Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:aeeab3fb282428a253a857668c8ad7545" id="r_aeeab3fb282428a253a857668c8ad7545"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#aeeab3fb282428a253a857668c8ad7545">__init__</a> (self, bytes <a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a3359e4b96fb9553a0c9cc4184fc2c434">primary_key</a>, bytes <a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#ac923cfbf0a09c75e6bb0cea01cde8cd8">secondary_key</a>, bytes <a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a46597c8e3f7981b5f55ca974a5355dd3">salt</a>)</td></tr>
|
||||
<tr class="separator:aeeab3fb282428a253a857668c8ad7545"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6c2cacc40f85e399dee8e47e20f81739" id="r_a6c2cacc40f85e399dee8e47e20f81739"><td class="memItemLeft" align="right" valign="top">Tuple[str, str, str] </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a6c2cacc40f85e399dee8e47e20f81739">encrypt_string</a> (self, str s)</td></tr>
|
||||
<tr class="separator:a6c2cacc40f85e399dee8e47e20f81739"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a182add66c3f8039da6f1accf0b52c3c3" id="r_a182add66c3f8039da6f1accf0b52c3c3"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a182add66c3f8039da6f1accf0b52c3c3">hide_byte</a> (self, int b)</td></tr>
|
||||
<tr class="separator:a182add66c3f8039da6f1accf0b52c3c3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a3359e4b96fb9553a0c9cc4184fc2c434" id="r_a3359e4b96fb9553a0c9cc4184fc2c434"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a3359e4b96fb9553a0c9cc4184fc2c434">primary_key</a></td></tr>
|
||||
<tr class="separator:a3359e4b96fb9553a0c9cc4184fc2c434"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a46597c8e3f7981b5f55ca974a5355dd3" id="r_a46597c8e3f7981b5f55ca974a5355dd3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#a46597c8e3f7981b5f55ca974a5355dd3">salt</a></td></tr>
|
||||
<tr class="separator:a46597c8e3f7981b5f55ca974a5355dd3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac923cfbf0a09c75e6bb0cea01cde8cd8" id="r_ac923cfbf0a09c75e6bb0cea01cde8cd8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html#ac923cfbf0a09c75e6bb0cea01cde8cd8">secondary_key</a></td></tr>
|
||||
<tr class="separator:ac923cfbf0a09c75e6bb0cea01cde8cd8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Encrypts strings for obfuscation using layered XOR and Base85 encoding.
|
||||
@details Produces both an encoded payload and Python code that reconstructs
|
||||
the keys at runtime without embedding raw key bytes.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00014">14</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="aeeab3fb282428a253a857668c8ad7545" name="aeeab3fb282428a253a857668c8ad7545"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeeab3fb282428a253a857668c8ad7545">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.encryption.StringEncryptor.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">bytes </td>
|
||||
<td class="paramname"><em>primary_key</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">bytes </td>
|
||||
<td class="paramname"><em>secondary_key</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">bytes </td>
|
||||
<td class="paramname"><em>salt</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Initialize encryptor keys.
|
||||
@param primary_key Primary XOR key bytes.
|
||||
@param secondary_key Secondary XOR key bytes.
|
||||
@param salt Salt bytes used to derive a per-string modifier.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00020">20</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 20</span> <span class="keyword">def </span>__init__(self, primary_key: bytes, secondary_key: bytes, salt: bytes):</div>
|
||||
<div class="line"><span class="lineno"> 21</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 22</span><span class="stringliteral"> @brief Initialize encryptor keys.</span></div>
|
||||
<div class="line"><span class="lineno"> 23</span><span class="stringliteral"> @param primary_key Primary XOR key bytes.</span></div>
|
||||
<div class="line"><span class="lineno"> 24</span><span class="stringliteral"> @param secondary_key Secondary XOR key bytes.</span></div>
|
||||
<div class="line"><span class="lineno"> 25</span><span class="stringliteral"> @param salt Salt bytes used to derive a per-string modifier.</span></div>
|
||||
<div class="line"><span class="lineno"> 26</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 27</span> self.primary_key = primary_key</div>
|
||||
<div class="line"><span class="lineno"> 28</span> self.secondary_key = secondary_key</div>
|
||||
<div class="line"><span class="lineno"> 29</span> self.salt = salt</div>
|
||||
<div class="line"><span class="lineno"> 30</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a6c2cacc40f85e399dee8e47e20f81739" name="a6c2cacc40f85e399dee8e47e20f81739"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6c2cacc40f85e399dee8e47e20f81739">◆ </a></span>encrypt_string()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> Tuple[str, str, str] utils.encryption.StringEncryptor.encrypt_string </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">str </td>
|
||||
<td class="paramname"><em>s</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Encrypt a string with layered XOR and Base85 encoding.
|
||||
@param s UTF-8 string to encrypt.
|
||||
@return Tuple[str, str, str]:
|
||||
- encoded: Base85 text of the encrypted payload
|
||||
- key_setup: Python code that reconstructs keys at runtime
|
||||
- modifier_hex: Hex string for the per-string modifier
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00062">62</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 62</span> <span class="keyword">def </span>encrypt_string(self, s: str) -> Tuple[str, str, str]:</div>
|
||||
<div class="line"><span class="lineno"> 63</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 64</span><span class="stringliteral"> @brief Encrypt a string with layered XOR and Base85 encoding.</span></div>
|
||||
<div class="line"><span class="lineno"> 65</span><span class="stringliteral"> @param s UTF-8 string to encrypt.</span></div>
|
||||
<div class="line"><span class="lineno"> 66</span><span class="stringliteral"> @return Tuple[str, str, str]:</span></div>
|
||||
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"> - encoded: Base85 text of the encrypted payload</span></div>
|
||||
<div class="line"><span class="lineno"> 68</span><span class="stringliteral"> - key_setup: Python code that reconstructs keys at runtime</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span><span class="stringliteral"> - modifier_hex: Hex string for the per-string modifier</span></div>
|
||||
<div class="line"><span class="lineno"> 70</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 71</span> data = s.encode(<span class="stringliteral">'utf-8'</span>)</div>
|
||||
<div class="line"><span class="lineno"> 72</span> modifier = hashlib.sha256(self.salt + data).digest()[:8]</div>
|
||||
<div class="line"><span class="lineno"> 73</span> </div>
|
||||
<div class="line"><span class="lineno"> 74</span> layer1 = bytes(</div>
|
||||
<div class="line"><span class="lineno"> 75</span> d ^ k ^ m</div>
|
||||
<div class="line"><span class="lineno"> 76</span> <span class="keywordflow">for</span> d, k, m <span class="keywordflow">in</span> zip(</div>
|
||||
<div class="line"><span class="lineno"> 77</span> data,</div>
|
||||
<div class="line"><span class="lineno"> 78</span> self.primary_key * ((len(data) // len(self.primary_key)) + 1),</div>
|
||||
<div class="line"><span class="lineno"> 79</span> modifier * ((len(data) // len(modifier)) + 1)</div>
|
||||
<div class="line"><span class="lineno"> 80</span> )</div>
|
||||
<div class="line"><span class="lineno"> 81</span> )</div>
|
||||
<div class="line"><span class="lineno"> 82</span> </div>
|
||||
<div class="line"><span class="lineno"> 83</span> final_data = bytes(</div>
|
||||
<div class="line"><span class="lineno"> 84</span> d ^ k</div>
|
||||
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">for</span> d, k <span class="keywordflow">in</span> zip(</div>
|
||||
<div class="line"><span class="lineno"> 86</span> layer1,</div>
|
||||
<div class="line"><span class="lineno"> 87</span> self.secondary_key * ((len(layer1) // len(self.secondary_key)) + 1)</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 class="line"><span class="lineno"> 91</span> encoded = base64.b85encode(final_data).decode()</div>
|
||||
<div class="line"><span class="lineno"> 92</span> </div>
|
||||
<div class="line"><span class="lineno"> 93</span> primary_key_code = f<span class="stringliteral">"bytes([{','.join(self.hide_byte(b) for b in self.primary_key)}])"</span></div>
|
||||
<div class="line"><span class="lineno"> 94</span> secondary_key_code = f<span class="stringliteral">"bytes([{','.join(self.hide_byte(b) for b in self.secondary_key)}])"</span></div>
|
||||
<div class="line"><span class="lineno"> 95</span> salt_code = f<span class="stringliteral">"bytes([{','.join(self.hide_byte(b) for b in self.salt)}])"</span></div>
|
||||
<div class="line"><span class="lineno"> 96</span> </div>
|
||||
<div class="line"><span class="lineno"> 97</span> key_setup = (</div>
|
||||
<div class="line"><span class="lineno"> 98</span> f<span class="stringliteral">"_pk = {primary_key_code}\n"</span></div>
|
||||
<div class="line"><span class="lineno"> 99</span> f<span class="stringliteral">"_sk = {secondary_key_code}\n"</span></div>
|
||||
<div class="line"><span class="lineno"> 100</span> f<span class="stringliteral">"_st = {salt_code}"</span></div>
|
||||
<div class="line"><span class="lineno"> 101</span> )</div>
|
||||
<div class="line"><span class="lineno"> 102</span> </div>
|
||||
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">return</span> encoded, key_setup, modifier.hex()</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00037">obfuscator.AdvancedObfuscator.primary_key</a>, <a class="el" href="encryption_8py_source.html#l00027">utils.encryption.StringEncryptor.primary_key</a>, <a class="el" href="obfuscator_8py_source.html#l00039">obfuscator.AdvancedObfuscator.salt</a>, <a class="el" href="encryption_8py_source.html#l00029">utils.encryption.StringEncryptor.salt</a>, <a class="el" href="obfuscator_8py_source.html#l00038">obfuscator.AdvancedObfuscator.secondary_key</a>, and <a class="el" href="encryption_8py_source.html#l00028">utils.encryption.StringEncryptor.secondary_key</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a182add66c3f8039da6f1accf0b52c3c3" name="a182add66c3f8039da6f1accf0b52c3c3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a182add66c3f8039da6f1accf0b52c3c3">◆ </a></span>hide_byte()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str utils.encryption.StringEncryptor.hide_byte </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"><em>b</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Obfuscate a single key byte into an arithmetic/bitwise expression.
|
||||
@param b Input byte value in range [0, 255].
|
||||
@return Python expression string that evaluates to the original byte at runtime.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00031">31</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 31</span> <span class="keyword">def </span>hide_byte(self, b: int) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 32</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"> @brief Obfuscate a single key byte into an arithmetic/bitwise expression.</span></div>
|
||||
<div class="line"><span class="lineno"> 34</span><span class="stringliteral"> @param b Input byte value in range [0, 255].</span></div>
|
||||
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> @return Python expression string that evaluates to the original byte at runtime.</span></div>
|
||||
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span> pattern = random.randint(1, 5)</div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">if</span> pattern == 1:</div>
|
||||
<div class="line"><span class="lineno"> 39</span> x1, x2, x3 = [random.randint(65, 90) <span class="keywordflow">for</span> _ <span class="keywordflow">in</span> range(3)]</div>
|
||||
<div class="line"><span class="lineno"> 40</span> result = x1 ^ x2 ^ x3 ^ b</div>
|
||||
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">return</span> f<span class="stringliteral">"({x1}^{x2}^{x3}^{result})"</span></div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">elif</span> pattern == 2:</div>
|
||||
<div class="line"><span class="lineno"> 43</span> base = random.randint(65, 90)</div>
|
||||
<div class="line"><span class="lineno"> 44</span> multiplier = random.randint(2, 4)</div>
|
||||
<div class="line"><span class="lineno"> 45</span> adjusted = (base * multiplier - b)</div>
|
||||
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">return</span> f<span class="stringliteral">"(({base}*{multiplier}-{adjusted}))"</span></div>
|
||||
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">elif</span> pattern == 3:</div>
|
||||
<div class="line"><span class="lineno"> 48</span> shift = random.randint(1, 3)</div>
|
||||
<div class="line"><span class="lineno"> 49</span> modified = (b << shift) >> shift</div>
|
||||
<div class="line"><span class="lineno"> 50</span> diff = b - modified</div>
|
||||
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">return</span> f<span class="stringliteral">"((({b << shift})>>{shift})+{diff})"</span></div>
|
||||
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">elif</span> pattern == 4:</div>
|
||||
<div class="line"><span class="lineno"> 53</span> char1, char2 = random.sample(range(65, 91), 2)</div>
|
||||
<div class="line"><span class="lineno"> 54</span> result = char1 + char2 - b</div>
|
||||
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">return</span> f<span class="stringliteral">"({char1}+{char2}-{result})"</span></div>
|
||||
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><span class="lineno"> 57</span> mod_base = random.randint(91, 100)</div>
|
||||
<div class="line"><span class="lineno"> 58</span> result = b % mod_base</div>
|
||||
<div class="line"><span class="lineno"> 59</span> factor = b // mod_base</div>
|
||||
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">return</span> f<span class="stringliteral">"({factor}*{mod_base}+{result})"</span></div>
|
||||
<div class="line"><span class="lineno"> 61</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a3359e4b96fb9553a0c9cc4184fc2c434" name="a3359e4b96fb9553a0c9cc4184fc2c434"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3359e4b96fb9553a0c9cc4184fc2c434">◆ </a></span>primary_key</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.encryption.StringEncryptor.primary_key</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00027">27</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a46597c8e3f7981b5f55ca974a5355dd3" name="a46597c8e3f7981b5f55ca974a5355dd3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a46597c8e3f7981b5f55ca974a5355dd3">◆ </a></span>salt</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.encryption.StringEncryptor.salt</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00029">29</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac923cfbf0a09c75e6bb0cea01cde8cd8" name="ac923cfbf0a09c75e6bb0cea01cde8cd8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac923cfbf0a09c75e6bb0cea01cde8cd8">◆ </a></span>secondary_key</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.encryption.StringEncryptor.secondary_key</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="encryption_8py_source.html#l00028">28</a> of file <a class="el" href="encryption_8py_source.html">encryption.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, and <a class="el" href="encryption_8py_source.html#l00062">utils.encryption.StringEncryptor.encrypt_string()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="encryption_8py_source.html">encryption.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceutils.html">utils</a></li><li class="navelem"><a class="el" href="namespaceutils_1_1encryption.html">encryption</a></li><li class="navelem"><a class="el" href="classutils_1_1encryption_1_1StringEncryptor.html">StringEncryptor</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
var classutils_1_1encryption_1_1StringEncryptor =
|
||||
[
|
||||
[ "__init__", "classutils_1_1encryption_1_1StringEncryptor.html#aeeab3fb282428a253a857668c8ad7545", null ],
|
||||
[ "encrypt_string", "classutils_1_1encryption_1_1StringEncryptor.html#a6c2cacc40f85e399dee8e47e20f81739", null ],
|
||||
[ "hide_byte", "classutils_1_1encryption_1_1StringEncryptor.html#a182add66c3f8039da6f1accf0b52c3c3", null ],
|
||||
[ "primary_key", "classutils_1_1encryption_1_1StringEncryptor.html#a3359e4b96fb9553a0c9cc4184fc2c434", null ],
|
||||
[ "salt", "classutils_1_1encryption_1_1StringEncryptor.html#a46597c8e3f7981b5f55ca974a5355dd3", null ],
|
||||
[ "secondary_key", "classutils_1_1encryption_1_1StringEncryptor.html#ac923cfbf0a09c75e6bb0cea01cde8cd8", null ]
|
||||
];
|
||||
@@ -0,0 +1,112 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1junk__gen_1_1JunkGenerator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">utils.junk_gen.JunkGenerator Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">utils.junk_gen.JunkGenerator</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#ad1c240cacad785c775dfeddc9eea76b5">__init__</a>(self, NameGenerator name_generator)</td><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">utils.junk_gen.JunkGenerator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#ad5fdca002e6e7b5e5de74b6836a26887">add_junk</a>(self)</td><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">utils.junk_gen.JunkGenerator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#a0302efd5f4dda3da3c02280d9739d4d3">generate_junk</a>(self)</td><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">utils.junk_gen.JunkGenerator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#a6edc8f910180d399302e33b48a0346ee">name_generator</a></td><td class="entry"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">utils.junk_gen.JunkGenerator</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,289 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: utils.junk_gen.JunkGenerator Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1junk__gen_1_1JunkGenerator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="classutils_1_1junk__gen_1_1JunkGenerator-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">utils.junk_gen.JunkGenerator Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:ad1c240cacad785c775dfeddc9eea76b5" id="r_ad1c240cacad785c775dfeddc9eea76b5"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#ad1c240cacad785c775dfeddc9eea76b5">__init__</a> (self, <a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">NameGenerator</a> <a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#a6edc8f910180d399302e33b48a0346ee">name_generator</a>)</td></tr>
|
||||
<tr class="separator:ad1c240cacad785c775dfeddc9eea76b5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad5fdca002e6e7b5e5de74b6836a26887" id="r_ad5fdca002e6e7b5e5de74b6836a26887"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#ad5fdca002e6e7b5e5de74b6836a26887">add_junk</a> (self)</td></tr>
|
||||
<tr class="separator:ad5fdca002e6e7b5e5de74b6836a26887"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0302efd5f4dda3da3c02280d9739d4d3" id="r_a0302efd5f4dda3da3c02280d9739d4d3"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#a0302efd5f4dda3da3c02280d9739d4d3">generate_junk</a> (self)</td></tr>
|
||||
<tr class="separator:a0302efd5f4dda3da3c02280d9739d4d3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:a6edc8f910180d399302e33b48a0346ee" id="r_a6edc8f910180d399302e33b48a0346ee"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html#a6edc8f910180d399302e33b48a0346ee">name_generator</a></td></tr>
|
||||
<tr class="separator:a6edc8f910180d399302e33b48a0346ee"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Produces pseudo-random junk code.
|
||||
@param name_generator Name generator used for variable identifiers.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="junk__gen_8py_source.html#l00011">11</a> of file <a class="el" href="junk__gen_8py_source.html">junk_gen.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="ad1c240cacad785c775dfeddc9eea76b5" name="ad1c240cacad785c775dfeddc9eea76b5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad1c240cacad785c775dfeddc9eea76b5">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.junk_gen.JunkGenerator.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">NameGenerator</a> </td>
|
||||
<td class="paramname"><em>name_generator</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Constructor.
|
||||
@param name_generator NameGenerator instance used to create junk variable names.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="junk__gen_8py_source.html#l00016">16</a> of file <a class="el" href="junk__gen_8py_source.html">junk_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 16</span> <span class="keyword">def </span>__init__(self, name_generator: NameGenerator):</div>
|
||||
<div class="line"><span class="lineno"> 17</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 18</span><span class="stringliteral"> @brief Constructor.</span></div>
|
||||
<div class="line"><span class="lineno"> 19</span><span class="stringliteral"> @param name_generator NameGenerator instance used to create junk variable names.</span></div>
|
||||
<div class="line"><span class="lineno"> 20</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 21</span> self.name_generator = name_generator</div>
|
||||
<div class="line"><span class="lineno"> 22</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ad5fdca002e6e7b5e5de74b6836a26887" name="ad5fdca002e6e7b5e5de74b6836a26887"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad5fdca002e6e7b5e5de74b6836a26887">◆ </a></span>add_junk()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str utils.junk_gen.JunkGenerator.add_junk </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Generate a random multi-line junk code snippet.
|
||||
@return Python source string with one or more lines.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="junk__gen_8py_source.html#l00023">23</a> of file <a class="el" href="junk__gen_8py_source.html">junk_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 23</span> <span class="keyword">def </span>add_junk(self) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 24</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 25</span><span class="stringliteral"> @brief Generate a random multi-line junk code snippet.</span></div>
|
||||
<div class="line"><span class="lineno"> 26</span><span class="stringliteral"> @return Python source string with one or more lines.</span></div>
|
||||
<div class="line"><span class="lineno"> 27</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 28</span> var1 = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 29</span> var2 = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><span class="lineno"> 31</span> example_strings = [<span class="stringliteral">"HelloWorld"</span>, <span class="stringliteral">"CryptoMagic"</span>, <span class="stringliteral">"XxX_Obf_42"</span>, <span class="stringliteral">"DataStorm"</span>, <span class="stringliteral">"RandomStr"</span>, <span class="stringliteral">"TestString"</span>]</div>
|
||||
<div class="line"><span class="lineno"> 32</span> s1 = random.choice(example_strings)</div>
|
||||
<div class="line"><span class="lineno"> 33</span> s2 = random.choice(example_strings)</div>
|
||||
<div class="line"><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><span class="lineno"> 35</span> multi_line_junks = [</div>
|
||||
<div class="line"><span class="lineno"> 36</span> f<span class="stringliteral">"{var1} = chr({random.randint(65, 90)}) + chr({random.randint(65, 90)})"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 37</span> f<span class="stringliteral">"{var1} = sum([{random.randint(1,10)} for _ in range({random.randint(1,5)})])"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 38</span> f<span class="stringliteral">"{var1} = len(bytes([{random.randint(65,90)}, {random.randint(65,90)}, {random.randint(65,90)}]))"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 39</span> f<span class="stringliteral">"if chr({random.randint(65,90)}).isupper(): {var1} = {random.randint(0, 999)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 40</span> f<span class="stringliteral">"{var1} = bytes([{random.randint(65,90)}] * {random.randint(1,3)})"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 41</span> f<span class="stringliteral">"{var1} = ord(chr({random.randint(65,90)})) - {random.randint(1,10)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><span class="lineno"> 43</span> f<span class="stringliteral">"{var1} = '{s1}'.lower()\n{var2} = '{s2}'.upper()"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 44</span> f<span class="stringliteral">"{var1} = [chr(random.randint(65,90)) for _ in range({random.randint(2,5)})]\n{var2} = ''.join({var1})"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 45</span> f<span class="stringliteral">"{var1} = {random.randint(1,10)} ** {random.randint(1,3)}\n{var2} = {var1} % {random.randint(1,10)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 46</span> f<span class="stringliteral">"{var1} = [{random.randint(1,5)} for _ in range({random.randint(3,5)})]\nif len({var1}) > {random.randint(1,4)}: {var2} = sum({var1})"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 47</span> f<span class="stringliteral">"{var1} = {{ {random.randint(1,10)} : '{s1}' }}\n{var2} = {var1}.get({random.randint(1,10)}, None)"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 48</span> f<span class="stringliteral">"{var1} = set(range({random.randint(2,5)}))\n{var2} = set(range({random.randint(2,5)}))\n{var1}.intersection({var2})"</span></div>
|
||||
<div class="line"><span class="lineno"> 49</span> ]</div>
|
||||
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">return</span> random.choice(multi_line_junks)</div>
|
||||
<div class="line"><span class="lineno"> 51</span> </div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0302efd5f4dda3da3c02280d9739d4d3" name="a0302efd5f4dda3da3c02280d9739d4d3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0302efd5f4dda3da3c02280d9739d4d3">◆ </a></span>generate_junk()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str utils.junk_gen.JunkGenerator.generate_junk </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Generate a single-line junk statement.
|
||||
@return Python source string for a single assignment or expression.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="junk__gen_8py_source.html#l00052">52</a> of file <a class="el" href="junk__gen_8py_source.html">junk_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 52</span> <span class="keyword">def </span>generate_junk(self) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 53</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 54</span><span class="stringliteral"> @brief Generate a single-line junk statement.</span></div>
|
||||
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"> @return Python source string for a single assignment or expression.</span></div>
|
||||
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 57</span> var_name = self.name_generator.generate_name()</div>
|
||||
<div class="line"><span class="lineno"> 58</span> junk_code = [</div>
|
||||
<div class="line"><span class="lineno"> 59</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 60</span> f<span class="stringliteral">"{var_name} = '{''.join(random.choices(string.ascii_letters, k=10))}'"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 61</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} + {random.randint(0, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 62</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} * {random.randint(0, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 63</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} - {random.randint(0, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 64</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} / {random.randint(1, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 65</span> f<span class="stringliteral">"{var_name} = '{''.join(random.choices(string.ascii_letters + string.digits, k=15))}'"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 66</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} % {random.randint(1, 100)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 67</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} ** {random.randint(0, 5)}"</span>,</div>
|
||||
<div class="line"><span class="lineno"> 68</span> f<span class="stringliteral">"{var_name} = {random.randint(0, 100)} // {random.randint(1, 100)}"</span></div>
|
||||
<div class="line"><span class="lineno"> 69</span> ]</div>
|
||||
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">return</span> random.choice(junk_code)</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="obfuscator_8py_source.html#l00034">obfuscator.AdvancedObfuscator.name_generator</a>, <a class="el" href="class__analyzer_8py_source.html#l00034">transformers.class_analyzer.ClassAnalyzer.name_generator</a>, <a class="el" href="class__mapper_8py_source.html#l00070">transformers.class_mapper.ClassMapAnalyzer.name_generator</a>, <a class="el" href="rename_8py_source.html#l00025">transformers.rename.RenameTransformer.name_generator</a>, and <a class="el" href="junk__gen_8py_source.html#l00021">utils.junk_gen.JunkGenerator.name_generator</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a6edc8f910180d399302e33b48a0346ee" name="a6edc8f910180d399302e33b48a0346ee"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6edc8f910180d399302e33b48a0346ee">◆ </a></span>name_generator</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.junk_gen.JunkGenerator.name_generator</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="junk__gen_8py_source.html#l00021">21</a> of file <a class="el" href="junk__gen_8py_source.html">junk_gen.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="obfuscator_8py_source.html#l00115">obfuscator.AdvancedObfuscator._build_symbol_tree()</a>, <a class="el" href="class__mapper_8py_source.html#l00247">transformers.class_mapper.ClassMapAnalyzer._ensure_complete_method_mapping()</a>, <a class="el" href="class__analyzer_8py_source.html#l00155">transformers.class_analyzer.ClassAnalyzer._ensure_consistent_method_mapping()</a>, <a class="el" href="obfuscator_8py_source.html#l00166">obfuscator.AdvancedObfuscator._rename_and_encrypt()</a>, <a class="el" href="junk__gen_8py_source.html#l00023">utils.junk_gen.JunkGenerator.add_junk()</a>, <a class="el" href="junk__gen_8py_source.html#l00052">utils.junk_gen.JunkGenerator.generate_junk()</a>, <a class="el" href="rename_8py_source.html#l00125">transformers.rename.RenameTransformer.scan_class_methods()</a>, <a class="el" href="class__mapper_8py_source.html#l00174">transformers.class_mapper.ClassMapAnalyzer.visit_assign_in_class()</a>, <a class="el" href="rename_8py_source.html#l00335">transformers.rename.RenameTransformer.visit_Attribute()</a>, <a class="el" href="class__analyzer_8py_source.html#l00121">transformers.class_analyzer.ClassAnalyzer.visit_attribute_assign()</a>, <a class="el" href="class__analyzer_8py_source.html#l00055">transformers.class_analyzer.ClassAnalyzer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00254">transformers.rename.RenameTransformer.visit_ClassDef()</a>, <a class="el" href="rename_8py_source.html#l00201">transformers.rename.RenameTransformer.visit_comprehension()</a>, <a class="el" href="rename_8py_source.html#l00283">transformers.rename.RenameTransformer.visit_FunctionDef()</a>, <a class="el" href="rename_8py_source.html#l00150">transformers.rename.RenameTransformer.visit_Global()</a>, <a class="el" href="rename_8py_source.html#l00063">transformers.rename.RenameTransformer.visit_Module()</a>, and <a class="el" href="rename_8py_source.html#l00214">transformers.rename.RenameTransformer.visit_Name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="junk__gen_8py_source.html">junk_gen.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceutils.html">utils</a></li><li class="navelem"><a class="el" href="namespaceutils_1_1junk__gen.html">junk_gen</a></li><li class="navelem"><a class="el" href="classutils_1_1junk__gen_1_1JunkGenerator.html">JunkGenerator</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
var classutils_1_1junk__gen_1_1JunkGenerator =
|
||||
[
|
||||
[ "__init__", "classutils_1_1junk__gen_1_1JunkGenerator.html#ad1c240cacad785c775dfeddc9eea76b5", null ],
|
||||
[ "add_junk", "classutils_1_1junk__gen_1_1JunkGenerator.html#ad5fdca002e6e7b5e5de74b6836a26887", null ],
|
||||
[ "generate_junk", "classutils_1_1junk__gen_1_1JunkGenerator.html#a0302efd5f4dda3da3c02280d9739d4d3", null ],
|
||||
[ "name_generator", "classutils_1_1junk__gen_1_1JunkGenerator.html#a6edc8f910180d399302e33b48a0346ee", null ]
|
||||
];
|
||||
@@ -0,0 +1,113 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: Member List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1name__gen_1_1NameGenerator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">utils.name_gen.NameGenerator Member List</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>This is the complete list of members for <a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a>, including all inherited members.</p>
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#aff640e7a1a975e664ca4fe3a54ec2cfb">__init__</a>(self)</td><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a></td><td class="entry"></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#a2a43fa241cee73c532a98c366fe7df71">_create_iterator</a>(self)</td><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ae45ad0a202daf1572a4f76cf79e791e7">_name_iterator</a></td><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
|
||||
<tr class="odd"><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ac05b7a033f2ccb1a238b7e5e0877e2c6">generate_name</a>(self)</td><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a></td><td class="entry"></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ab773c0140d1b4ef0654215de2c2b37df">used_names</a></td><td class="entry"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">utils.name_gen.NameGenerator</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,293 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: utils.name_gen.NameGenerator Class Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('classutils_1_1name__gen_1_1NameGenerator.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pub-attribs">Public Attributes</a> |
|
||||
<a href="#pro-methods">Protected Member Functions</a> |
|
||||
<a href="#pro-attribs">Protected Attributes</a> |
|
||||
<a href="classutils_1_1name__gen_1_1NameGenerator-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">utils.name_gen.NameGenerator Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<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:aff640e7a1a975e664ca4fe3a54ec2cfb" id="r_aff640e7a1a975e664ca4fe3a54ec2cfb"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#aff640e7a1a975e664ca4fe3a54ec2cfb">__init__</a> (self)</td></tr>
|
||||
<tr class="separator:aff640e7a1a975e664ca4fe3a54ec2cfb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac05b7a033f2ccb1a238b7e5e0877e2c6" id="r_ac05b7a033f2ccb1a238b7e5e0877e2c6"><td class="memItemLeft" align="right" valign="top">str </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ac05b7a033f2ccb1a238b7e5e0877e2c6">generate_name</a> (self)</td></tr>
|
||||
<tr class="separator:ac05b7a033f2ccb1a238b7e5e0877e2c6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Public Attributes</h2></td></tr>
|
||||
<tr class="memitem:ab773c0140d1b4ef0654215de2c2b37df" id="r_ab773c0140d1b4ef0654215de2c2b37df"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ab773c0140d1b4ef0654215de2c2b37df">used_names</a></td></tr>
|
||||
<tr class="separator:ab773c0140d1b4ef0654215de2c2b37df"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
|
||||
Protected Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a2a43fa241cee73c532a98c366fe7df71" id="r_a2a43fa241cee73c532a98c366fe7df71"><td class="memItemLeft" align="right" valign="top">Iterator[str] </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#a2a43fa241cee73c532a98c366fe7df71">_create_iterator</a> (self)</td></tr>
|
||||
<tr class="separator:a2a43fa241cee73c532a98c366fe7df71"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
|
||||
Protected Attributes</h2></td></tr>
|
||||
<tr class="memitem:ae45ad0a202daf1572a4f76cf79e791e7" id="r_ae45ad0a202daf1572a4f76cf79e791e7"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html#ae45ad0a202daf1572a4f76cf79e791e7">_name_iterator</a></td></tr>
|
||||
<tr class="separator:ae45ad0a202daf1572a4f76cf79e791e7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><pre class="fragment">@brief Generates unique obfuscated identifiers.
|
||||
@details Uses patterned Cartesian products to create long, confusing names and
|
||||
tracks used names to avoid collisions.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00010">10</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||||
<a id="aff640e7a1a975e664ca4fe3a54ec2cfb" name="aff640e7a1a975e664ca4fe3a54ec2cfb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aff640e7a1a975e664ca4fe3a54ec2cfb">◆ </a></span>__init__()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.name_gen.NameGenerator.__init__ </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Initialize internal iterator and used-name set.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00016">16</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 16</span> <span class="keyword">def </span>__init__(self):</div>
|
||||
<div class="line"><span class="lineno"> 17</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 18</span><span class="stringliteral"> @brief Initialize internal iterator and used-name set.</span></div>
|
||||
<div class="line"><span class="lineno"> 19</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 20</span> self._name_iterator = self._create_iterator()</div>
|
||||
<div class="line"><span class="lineno"> 21</span> self.used_names = set()</div>
|
||||
<div class="line"><span class="lineno"> 22</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a2a43fa241cee73c532a98c366fe7df71" name="a2a43fa241cee73c532a98c366fe7df71"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2a43fa241cee73c532a98c366fe7df71">◆ </a></span>_create_iterator()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> Iterator[str] utils.name_gen.NameGenerator._create_iterator </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Iterator producing obfuscated identifier candidates.
|
||||
@return Iterator[str] Infinite stream of names such as vIl1lO0o0Z2z2...
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00023">23</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 23</span> <span class="keyword">def </span>_create_iterator(self) -> Iterator[str]:</div>
|
||||
<div class="line"><span class="lineno"> 24</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 25</span><span class="stringliteral"> @brief Iterator producing obfuscated identifier candidates.</span></div>
|
||||
<div class="line"><span class="lineno"> 26</span><span class="stringliteral"> @return Iterator[str] Infinite stream of names such as vIl1lO0o0Z2z2...</span></div>
|
||||
<div class="line"><span class="lineno"> 27</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 28</span> patterns = [<span class="stringliteral">'Il1l'</span>, <span class="stringliteral">'O0o0'</span>, <span class="stringliteral">'Z2z2'</span>, <span class="stringliteral">'S5s5'</span>, <span class="stringliteral">'B8b8'</span>, <span class="stringliteral">'Q9q9'</span>]</div>
|
||||
<div class="line"><span class="lineno"> 29</span> <span class="keywordflow">for</span> length <span class="keywordflow">in</span> itertools.count(2): <span class="comment"># Start with length=2, continue forever</span></div>
|
||||
<div class="line"><span class="lineno"> 30</span> <span class="keywordflow">for</span> combo <span class="keywordflow">in</span> itertools.product(patterns, repeat=length):</div>
|
||||
<div class="line"><span class="lineno"> 31</span> <span class="keywordflow">yield</span> <span class="stringliteral">'v'</span> + <span class="stringliteral">''</span>.join(combo)</div>
|
||||
<div class="line"><span class="lineno"> 32</span> </div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac05b7a033f2ccb1a238b7e5e0877e2c6" name="ac05b7a033f2ccb1a238b7e5e0877e2c6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac05b7a033f2ccb1a238b7e5e0877e2c6">◆ </a></span>generate_name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"> str utils.name_gen.NameGenerator.generate_name </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"> </td>
|
||||
<td class="paramname"><em>self</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<pre class="fragment">@brief Produce a fresh, unique obfuscated name.
|
||||
@return str Name guaranteed not to have been produced before by this instance.
|
||||
</pre>
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00033">33</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 33</span> <span class="keyword">def </span>generate_name(self) -> str:</div>
|
||||
<div class="line"><span class="lineno"> 34</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> @brief Produce a fresh, unique obfuscated name.</span></div>
|
||||
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> @return str Name guaranteed not to have been produced before by this instance.</span></div>
|
||||
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">while</span> <span class="keyword">True</span>:</div>
|
||||
<div class="line"><span class="lineno"> 39</span> candidate = next(self._name_iterator)</div>
|
||||
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">if</span> candidate <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.used_names:</div>
|
||||
<div class="line"><span class="lineno"> 41</span> self.used_names.add(candidate)</div>
|
||||
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">return</span> candidate</div>
|
||||
</div><!-- fragment -->
|
||||
<p class="reference">References <a class="el" href="name__gen_8py_source.html#l00020">utils.name_gen.NameGenerator._name_iterator</a>, <a class="el" href="obfuscator_8py_source.html#l00033">obfuscator.AdvancedObfuscator.used_names</a>, and <a class="el" href="name__gen_8py_source.html#l00021">utils.name_gen.NameGenerator.used_names</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a id="ae45ad0a202daf1572a4f76cf79e791e7" name="ae45ad0a202daf1572a4f76cf79e791e7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae45ad0a202daf1572a4f76cf79e791e7">◆ </a></span>_name_iterator</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.name_gen.NameGenerator._name_iterator</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00020">20</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="name__gen_8py_source.html#l00033">utils.name_gen.NameGenerator.generate_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab773c0140d1b4ef0654215de2c2b37df" name="ab773c0140d1b4ef0654215de2c2b37df"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab773c0140d1b4ef0654215de2c2b37df">◆ </a></span>used_names</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">utils.name_gen.NameGenerator.used_names</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="name__gen_8py_source.html#l00021">21</a> of file <a class="el" href="name__gen_8py_source.html">name_gen.py</a>.</p>
|
||||
|
||||
<p class="reference">Referenced by <a class="el" href="name__gen_8py_source.html#l00033">utils.name_gen.NameGenerator.generate_name()</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="name__gen_8py_source.html">name_gen.py</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="namespaceutils.html">utils</a></li><li class="navelem"><a class="el" href="namespaceutils_1_1name__gen.html">name_gen</a></li><li class="navelem"><a class="el" href="classutils_1_1name__gen_1_1NameGenerator.html">NameGenerator</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,8 @@
|
||||
var classutils_1_1name__gen_1_1NameGenerator =
|
||||
[
|
||||
[ "__init__", "classutils_1_1name__gen_1_1NameGenerator.html#aff640e7a1a975e664ca4fe3a54ec2cfb", null ],
|
||||
[ "_create_iterator", "classutils_1_1name__gen_1_1NameGenerator.html#a2a43fa241cee73c532a98c366fe7df71", null ],
|
||||
[ "generate_name", "classutils_1_1name__gen_1_1NameGenerator.html#ac05b7a033f2ccb1a238b7e5e0877e2c6", null ],
|
||||
[ "_name_iterator", "classutils_1_1name__gen_1_1NameGenerator.html#ae45ad0a202daf1572a4f76cf79e791e7", null ],
|
||||
[ "used_names", "classutils_1_1name__gen_1_1NameGenerator.html#ab773c0140d1b4ef0654215de2c2b37df", null ]
|
||||
];
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 132 B |
@@ -0,0 +1,132 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: control_flow.py File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('control__flow_8py.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#namespaces">Namespaces</a> |
|
||||
<a href="#var-members">Variables</a> </div>
|
||||
<div class="headertitle"><div class="title">control_flow.py File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="control__flow_8py_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 id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:namespacetransformers" id="r_namespacetransformers"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers.html">transformers</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:namespacetransformers_1_1control__flow" id="r_namespacetransformers_1_1control__flow"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1control__flow.html">transformers.control_flow</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Variables</h2></td></tr>
|
||||
<tr class="memitem:a8c90b886e8d2a91a19bc062aebcd5682" id="r_a8c90b886e8d2a91a19bc062aebcd5682"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1control__flow.html#a8c90b886e8d2a91a19bc062aebcd5682">transformers.control_flow.level</a></td></tr>
|
||||
<tr class="separator:a8c90b886e8d2a91a19bc062aebcd5682"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6509497a1f3193babfae90f14a285aa3" id="r_a6509497a1f3193babfae90f14a285aa3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetransformers_1_1control__flow.html#a6509497a1f3193babfae90f14a285aa3">transformers.control_flow.logger</a> = logging.getLogger("ControlFlowFlattener")</td></tr>
|
||||
<tr class="separator:a6509497a1f3193babfae90f14a285aa3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="control__flow_8py.html">control_flow.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,6 @@
|
||||
var control__flow_8py =
|
||||
[
|
||||
[ "transformers.control_flow.ControlFlowFlattener", "classtransformers_1_1control__flow_1_1ControlFlowFlattener.html", "classtransformers_1_1control__flow_1_1ControlFlowFlattener" ],
|
||||
[ "level", "control__flow_8py.html#a8c90b886e8d2a91a19bc062aebcd5682", null ],
|
||||
[ "logger", "control__flow_8py.html#a6509497a1f3193babfae90f14a285aa3", null ]
|
||||
];
|
||||
@@ -0,0 +1,646 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: control_flow.py 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="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function() { init_codefold(0); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('control__flow_8py_source.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">control_flow.py</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="control__flow_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1control__flow.html"> 1</a></span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="stringliteral">@file transformers/control_flow.py</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="stringliteral">@brief Control-flow flattening transformer.</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="stringliteral">@details Converts structured control flow into a state-machine with a while/dispatch</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="stringliteral"> loop to hinder static analysis, and can emit debug telemetry in debug mode.</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="keyword">import</span> ast</div>
|
||||
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="keyword">import</span> random</div>
|
||||
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">from</span> typing <span class="keyword">import</span> Dict, List, Set, Tuple, Any, Optional</div>
|
||||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">import</span> logging</div>
|
||||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
||||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"># Configure logging</span></div>
|
||||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1control__flow.html#a8c90b886e8d2a91a19bc062aebcd5682"> 13</a></span>logging.basicConfig(level=logging.INFO)</div>
|
||||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="namespacetransformers_1_1control__flow.html#a6509497a1f3193babfae90f14a285aa3"> 14</a></span>logger = logging.getLogger(<span class="stringliteral">"ControlFlowFlattener"</span>)</div>
|
||||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="foldopen" id="foldopen00016" data-start="" data-end="">
|
||||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html"> 16</a></span><span class="keyword">class </span><a class="code hl_class" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">ControlFlowFlattener</a>(ast.NodeTransformer):</div>
|
||||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="stringliteral"> A transformer that flattens control flow by converting branching structures</span></div>
|
||||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="stringliteral"> into a dispatch table with a while loop.</span></div>
|
||||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="foldopen" id="foldopen00022" data-start="" data-end="">
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a08a538261912ba3c8ec059dd8f528732"> 22</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a08a538261912ba3c8ec059dd8f528732">__init__</a>(self, debug_mode=False):</div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95"> 23</a></span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a> = <span class="stringliteral">"_state"</span></div>
|
||||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab"> 24</a></span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a> = {}</div>
|
||||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d"> 25</a></span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> = 0</div>
|
||||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a"> 26</a></span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a> = debug_mode</div>
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment"># For tracking transformations when debug mode is enabled</span></div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">if</span> debug_mode:</div>
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013"> 30</a></span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">debug_data</a> = {</div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="stringliteral">"flattened_functions"</span>: [],</div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="stringliteral">"block_counts"</span>: {},</div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="stringliteral">"transformations"</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> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00036" data-start="" data-end="">
|
||||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c"> 36</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(self, category: str, data: Any):</div>
|
||||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="stringliteral">"""Log debugging information if debug mode is enabled."""</span></div>
|
||||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">debug_data</a>[<span class="stringliteral">"transformations"</span>].append({</div>
|
||||
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="stringliteral">"type"</span>: category,</div>
|
||||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="stringliteral">"data"</span>: data</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>
|
||||
<div class="foldopen" id="foldopen00044" data-start="" data-end="">
|
||||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a708096f6acd688fa597f7695d9eea010"> 44</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a708096f6acd688fa597f7695d9eea010">visit_FunctionDef</a>(self, node: ast.FunctionDef) -> ast.FunctionDef:</div>
|
||||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="stringliteral"> Transform a function body into a flattened control flow.</span></div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="stringliteral"> </span></div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="stringliteral"> Keeps function signature the same but replaces the body with</span></div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="stringliteral"> state-machine style execution.</span></div>
|
||||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="comment"># Skip small functions as flattening them might cause more overhead than obfuscation</span></div>
|
||||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> len(node.body) <= 2:</div>
|
||||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordflow">return</span> self.generic_visit(node)</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"># Reset state for this function</span></div>
|
||||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a> = {}</div>
|
||||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> = 0</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"># Process decorators and args normally</span></div>
|
||||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> node.decorator_list = [self.visit(d) <span class="keywordflow">for</span> d <span class="keywordflow">in</span> node.decorator_list]</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">if</span> hasattr(node, <span class="stringliteral">'args'</span>):</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> node.args = self.visit(node.args)</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 entry block (state 0)</span></div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> entry_block_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[entry_block_id] = node.body</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="comment"># Create the flattened control flow</span></div>
|
||||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> flattened_body = self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022">flatten_blocks</a>()</div>
|
||||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> node.body = flattened_body</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">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">debug_data</a>[<span class="stringliteral">"flattened_functions"</span>].append(node.name)</div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">debug_data</a>[<span class="stringliteral">"block_counts"</span>][node.name] = len(self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>)</div>
|
||||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"function_flattened"</span>, {</div>
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="stringliteral">"name"</span>: node.name,</div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="stringliteral">"original_statements"</span>: len(self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[entry_block_id]),</div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="stringliteral">"flattened_blocks"</span>: len(self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>)</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> </div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> node</div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00084" data-start="" data-end="">
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022"> 84</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022">flatten_blocks</a>(self) -> List[ast.stmt]:</div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="stringliteral"> Create a flattened control flow structure using a while loop and switch-like</span></div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="stringliteral"> dispatch based on a state variable.</span></div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment"># Create the state variable and initialize it</span></div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> state_var = ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())</div>
|
||||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> init_state = ast.Assign(</div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> targets=[state_var],</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> value=ast.Constant(value=0, kind=<span class="keywordtype">None</span>)</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"> 96</span> <span class="comment"># Create the while loop condition (state != -1)</span></div>
|
||||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> loop_condition = ast.Compare(</div>
|
||||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> left=ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> ops=[ast.NotEq()],</div>
|
||||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> comparators=[ast.Constant(value=-1, kind=<span class="keywordtype">None</span>)]</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> </div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment"># Create the dispatch table as a series of if/elif statements</span></div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> dispatch_cases = []</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">for</span> state_id, block <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>.items():</div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment"># Create the condition (state == state_id)</span></div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> condition = ast.Compare(</div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> left=ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> ops=[ast.Eq()],</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> comparators=[ast.Constant(value=state_id, kind=<span class="keywordtype">None</span>)]</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> </div>
|
||||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment"># Process the block statements</span></div>
|
||||
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> processed_block = []</div>
|
||||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">for</span> stmt <span class="keywordflow">in</span> block:</div>
|
||||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> processed_stmt = self.visit(stmt)</div>
|
||||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">if</span> isinstance(processed_stmt, list):</div>
|
||||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> processed_block.extend(processed_stmt)</div>
|
||||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> processed_block.append(processed_stmt)</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="comment"># If this block doesn't modify the state, add a transition to the next block</span></div>
|
||||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> last_stmt = processed_block[-1] <span class="keywordflow">if</span> processed_block <span class="keywordflow">else</span> <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> (isinstance(last_stmt, ast.Assign) <span class="keywordflow">and</span> </div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> isinstance(last_stmt.targets[0], ast.Name) <span class="keywordflow">and</span> </div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> last_stmt.targets[0].id == self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>):</div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="comment"># Add transition to next block</span></div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> next_state = state_id + 1</div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">if</span> next_state <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>:</div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="comment"># If no next state, exit the loop</span></div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> next_state = -1</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> processed_block.append(</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> value=ast.Constant(value=next_state, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> )</div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> )</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="comment"># Create the if/elif body</span></div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> if_body = processed_block</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> <span class="comment"># Add to dispatch cases</span></div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> dispatch_cases.append((condition, if_body))</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment"># Convert dispatch cases to if/elif/else structure</span></div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> if_node = <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">for</span> i, (condition, body) <span class="keywordflow">in</span> enumerate(reversed(dispatch_cases)):</div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">if</span> i == 0: <span class="comment"># Last case (will be the 'else' clause)</span></div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> if_node = ast.If(</div>
|
||||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> test=condition,</div>
|
||||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> body=body,</div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> orelse=[]</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="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> if_node = ast.If(</div>
|
||||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> test=condition,</div>
|
||||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> body=body,</div>
|
||||
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> orelse=[if_node] <span class="keywordflow">if</span> if_node <span class="keywordflow">else</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> </div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment"># Create the while loop with the dispatch logic</span></div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> while_body = [if_node] <span class="keywordflow">if</span> if_node <span class="keywordflow">else</span> []</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> while_loop = ast.While(</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> test=loop_condition,</div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> body=while_body,</div>
|
||||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> orelse=[]</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> <span class="comment"># Add some junk code to obscure the control flow</span></div>
|
||||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> junk = self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946">generate_junk_code</a>()</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> <span class="comment"># Assemble the flattened function body</span></div>
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> flattened_body = [init_state] + junk + [while_loop]</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="keywordflow">return</span> flattened_body</div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00178" data-start="" data-end="">
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946"> 178</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946">generate_junk_code</a>(self) -> List[ast.stmt]:</div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="stringliteral">"""Generate meaningless code to obscure the control flow."""</span></div>
|
||||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> junk = []</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> <span class="comment"># Add dummy variables that look like they're used for control flow</span></div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> dummy_vars = [f<span class="stringliteral">"_cflow_{i}"</span> <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(random.randint(2, 5))]</div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">for</span> var <span class="keywordflow">in</span> dummy_vars:</div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="comment"># Initialize with random value</span></div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> junk.append(</div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> targets=[ast.Name(id=var, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> value=ast.Constant(value=random.randint(0, 100), kind=<span class="keywordtype">None</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> )</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="comment"># Add some conditional statements that don't do anything important</span></div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">if</span> dummy_vars:</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> cond = ast.Compare(</div>
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> left=ast.Name(id=random.choice(dummy_vars), ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> ops=[ast.Gt()],</div>
|
||||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> comparators=[ast.Constant(value=50, kind=<span class="keywordtype">None</span>)]</div>
|
||||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> )</div>
|
||||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> junk.append(</div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> ast.If(</div>
|
||||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> test=cond,</div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> body=[</div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> targets=[ast.Name(id=random.choice(dummy_vars), ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> value=ast.Constant(value=random.randint(0, 100), kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> )</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> ],</div>
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> orelse=[]</div>
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> )</div>
|
||||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> )</div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
|
||||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"junk_code"</span>, {</div>
|
||||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="stringliteral">"statements"</span>: len(junk),</div>
|
||||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="stringliteral">"variables"</span>: dummy_vars</div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> })</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> <span class="keywordflow">return</span> junk</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00222" data-start="" data-end="">
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ac394afa0ffcadb438bf3419375480ba8"> 222</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ac394afa0ffcadb438bf3419375480ba8">visit_If</a>(self, node: ast.If) -> ast.stmt:</div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="stringliteral"> Transform if statements into state transitions.</span></div>
|
||||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="stringliteral"> Conditional branches become separate states in the state machine.</span></div>
|
||||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="comment"># Create new states for the true and false branches</span></div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> true_branch_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[true_branch_id] = node.body</div>
|
||||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
|
||||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">if</span> node.orelse:</div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> false_branch_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[false_branch_id] = node.orelse</div>
|
||||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="comment"># If no else branch, use the next block in sequence</span></div>
|
||||
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> false_branch_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
|
||||
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="comment"># Create a conditional assignment to the state variable</span></div>
|
||||
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> result = ast.Assign(</div>
|
||||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> value=ast.IfExp(</div>
|
||||
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> test=self.visit(node.test),</div>
|
||||
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> body=ast.Constant(value=true_branch_id, kind=<span class="keywordtype">None</span>),</div>
|
||||
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> orelse=ast.Constant(value=false_branch_id, kind=<span class="keywordtype">None</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> )</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> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"if_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="stringliteral">"true_branch"</span>: true_branch_id,</div>
|
||||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="stringliteral">"false_branch"</span>: false_branch_id,</div>
|
||||
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="stringliteral">"has_else"</span>: bool(node.orelse)</div>
|
||||
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> })</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> <span class="keywordflow">return</span> result</div>
|
||||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00259" data-start="" data-end="">
|
||||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a336fefe281452a4cefb0017de41f6cb5"> 259</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a336fefe281452a4cefb0017de41f6cb5">visit_For</a>(self, node: ast.For) -> List[ast.stmt]:</div>
|
||||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="stringliteral"> Transform for loops into state transitions with loop body and else clause</span></div>
|
||||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="stringliteral"> as separate states.</span></div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="comment"># Create unique variable names for this loop</span></div>
|
||||
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> iter_var = f<span class="stringliteral">"_iter_{self.current_block_id}"</span></div>
|
||||
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> index_var = f<span class="stringliteral">"_idx_{self.current_block_id}"</span></div>
|
||||
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
|
||||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment"># Setup the iteration</span></div>
|
||||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> setup_stmts = [</div>
|
||||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="comment"># Create iterator: _iter_X = iter(iterable)</span></div>
|
||||
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> targets=[ast.Name(id=iter_var, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> value=ast.Call(</div>
|
||||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> func=ast.Name(id=<span class="stringliteral">"iter"</span>, ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> args=[self.visit(node.iter)],</div>
|
||||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> keywords=[]</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> ),</div>
|
||||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="comment"># Initialize index: _idx_X = 0</span></div>
|
||||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> targets=[ast.Name(id=index_var, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> value=ast.Constant(value=0, kind=<span class="keywordtype">None</span>)</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"> 285</span> </div>
|
||||
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="comment"># Create states for the loop body and else clause</span></div>
|
||||
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> loop_body_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
|
||||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="comment"># Loop body needs to get the next item and assign it to the target</span></div>
|
||||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> loop_body = [</div>
|
||||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="comment"># try: target = next(_iter_X)</span></div>
|
||||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> ast.Try(</div>
|
||||
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> body=[</div>
|
||||
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> targets=[self.visit(node.target)],</div>
|
||||
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> value=ast.Call(</div>
|
||||
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> func=ast.Name(id=<span class="stringliteral">"next"</span>, ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> args=[ast.Name(id=iter_var, ctx=ast.Load())],</div>
|
||||
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> keywords=[]</div>
|
||||
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> )</div>
|
||||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> )</div>
|
||||
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> ],</div>
|
||||
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="comment"># except StopIteration: goto else_clause or skip if no else</span></div>
|
||||
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> handlers=[</div>
|
||||
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> ast.ExceptHandler(</div>
|
||||
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> type=ast.Name(id=<span class="stringliteral">"StopIteration"</span>, ctx=ast.Load()),</div>
|
||||
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> name=<span class="keywordtype">None</span>,</div>
|
||||
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> body=[</div>
|
||||
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> value=ast.Constant(</div>
|
||||
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> value=(self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> <span class="keywordflow">if</span> node.orelse <span class="keywordflow">else</span> -1), </div>
|
||||
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> kind=<span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> )</div>
|
||||
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> )</div>
|
||||
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> ]</div>
|
||||
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> )</div>
|
||||
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> ],</div>
|
||||
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="comment"># no finally</span></div>
|
||||
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> orelse=[],</div>
|
||||
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> finalbody=[]</div>
|
||||
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> )</div>
|
||||
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> ] + node.body + [</div>
|
||||
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="comment"># Increment index</span></div>
|
||||
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> ast.AugAssign(</div>
|
||||
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> target=ast.Name(id=index_var, ctx=ast.Store()),</div>
|
||||
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> op=ast.Add(),</div>
|
||||
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> value=ast.Constant(value=1, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> ),</div>
|
||||
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="comment"># Loop back to body</span></div>
|
||||
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> value=ast.Constant(value=loop_body_id, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> )</div>
|
||||
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> ]</div>
|
||||
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
|
||||
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[loop_body_id] = loop_body</div>
|
||||
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
|
||||
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="comment"># Handle else clause if present</span></div>
|
||||
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordflow">if</span> node.orelse:</div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> else_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[else_id] = node.orelse</div>
|
||||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
|
||||
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"for_loop_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="stringliteral">"iterator_var"</span>: iter_var,</div>
|
||||
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="stringliteral">"index_var"</span>: index_var,</div>
|
||||
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <span class="stringliteral">"body_block"</span>: loop_body_id,</div>
|
||||
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="stringliteral">"has_else"</span>: bool(node.orelse),</div>
|
||||
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="stringliteral">"else_block"</span>: else_id <span class="keywordflow">if</span> node.orelse <span class="keywordflow">else</span> <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> })</div>
|
||||
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
|
||||
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="comment"># Transition to the loop body after setup</span></div>
|
||||
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> setup_stmts.append(</div>
|
||||
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> value=ast.Constant(value=loop_body_id, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> )</div>
|
||||
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> )</div>
|
||||
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> </div>
|
||||
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordflow">return</span> setup_stmts</div>
|
||||
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00365" data-start="" data-end="">
|
||||
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aed99b58ddd8e19899955f356323d7a71"> 365</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aed99b58ddd8e19899955f356323d7a71">visit_While</a>(self, node: ast.While) -> List[ast.stmt]:</div>
|
||||
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span><span class="stringliteral"> Transform while loops into state transitions with conditional jumps.</span></div>
|
||||
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="comment"># Create states for the condition check, body, and else clause</span></div>
|
||||
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> cond_check_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> </div>
|
||||
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="comment"># Body state ID</span></div>
|
||||
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> body_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a></div>
|
||||
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> </div>
|
||||
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="comment"># Else state ID (if present)</span></div>
|
||||
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> else_id = self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> <span class="keywordflow">if</span> node.orelse <span class="keywordflow">else</span> -1</div>
|
||||
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">if</span> node.orelse:</div>
|
||||
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">current_block_id</a> += 1</div>
|
||||
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
|
||||
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="comment"># Condition check state: if test: goto body else: goto else/exit</span></div>
|
||||
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> cond_check = [</div>
|
||||
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> value=ast.IfExp(</div>
|
||||
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> test=self.visit(node.test),</div>
|
||||
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> body=ast.Constant(value=body_id, kind=<span class="keywordtype">None</span>),</div>
|
||||
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> orelse=ast.Constant(value=else_id, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> )</div>
|
||||
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> )</div>
|
||||
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> ]</div>
|
||||
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[cond_check_id] = cond_check</div>
|
||||
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
|
||||
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="comment"># Body state: execute body then goto condition check</span></div>
|
||||
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> body = list(node.body) + [</div>
|
||||
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> value=ast.Constant(value=cond_check_id, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> )</div>
|
||||
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> ]</div>
|
||||
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[body_id] = body</div>
|
||||
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> </div>
|
||||
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="comment"># Else state (if present)</span></div>
|
||||
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordflow">if</span> node.orelse:</div>
|
||||
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">states</a>[else_id] = node.orelse</div>
|
||||
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> </div>
|
||||
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"while_loop_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> <span class="stringliteral">"condition_check_block"</span>: cond_check_id,</div>
|
||||
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="stringliteral">"body_block"</span>: body_id,</div>
|
||||
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="stringliteral">"has_else"</span>: bool(node.orelse),</div>
|
||||
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="stringliteral">"else_block"</span>: else_id <span class="keywordflow">if</span> else_id != -1 <span class="keywordflow">else</span> <span class="keywordtype">None</span></div>
|
||||
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> })</div>
|
||||
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
|
||||
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="comment"># Initial transition to the condition check</span></div>
|
||||
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="keywordflow">return</span> [</div>
|
||||
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> value=ast.Constant(value=cond_check_id, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> )</div>
|
||||
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> ]</div>
|
||||
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00424" data-start="" data-end="">
|
||||
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a0af6bdcc5f0423e92bbaff8f11134ee9"> 424</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a0af6bdcc5f0423e92bbaff8f11134ee9">visit_Break</a>(self, node: ast.Break) -> ast.Assign:</div>
|
||||
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span><span class="stringliteral"> Transform break statements into a state change to exit the current loop.</span></div>
|
||||
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span><span class="stringliteral"> In a flattened control flow, this means finding the next state after the loop.</span></div>
|
||||
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span><span class="stringliteral"> </span></div>
|
||||
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span><span class="stringliteral"> For simplicity, we'll just set to -1 (terminate), but a more sophisticated</span></div>
|
||||
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span><span class="stringliteral"> approach would track enclosing loops and their exit states.</span></div>
|
||||
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"break_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="stringliteral">"exit_state"</span>: -1</div>
|
||||
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> })</div>
|
||||
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
|
||||
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">return</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> value=ast.Constant(value=-1, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> )</div>
|
||||
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00442" data-start="" data-end="">
|
||||
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a3f96cc0e595090bd445525dacc81a52e"> 442</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a3f96cc0e595090bd445525dacc81a52e">visit_Continue</a>(self, node: ast.Continue) -> ast.Assign:</div>
|
||||
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="stringliteral"> Transform continue statements to go back to the loop condition.</span></div>
|
||||
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span><span class="stringliteral"> In a flattened control flow, we need to know the loop condition state.</span></div>
|
||||
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span><span class="stringliteral"> </span></div>
|
||||
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span><span class="stringliteral"> For simplicity, we'll implement a jump to the current state, effectively</span></div>
|
||||
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span><span class="stringliteral"> rerunning the current block, but a more sophisticated approach would track</span></div>
|
||||
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="stringliteral"> enclosing loops and their condition states.</span></div>
|
||||
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"continue_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="stringliteral">"target_state"</span>: <span class="stringliteral">"current loop condition (simplified)"</span></div>
|
||||
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> })</div>
|
||||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
|
||||
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment"># In this simplified model, we just loop back to the current state</span></div>
|
||||
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="comment"># A more complete implementation would track the loop stack and jump to the loop start</span></div>
|
||||
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="keywordflow">return</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> value=ast.Constant(value=0, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> )</div>
|
||||
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> </div>
|
||||
</div>
|
||||
<div class="foldopen" id="foldopen00463" data-start="" data-end="">
|
||||
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"><a class="line" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ae1e8400d54ec1b75fdc514cd1609120f"> 463</a></span> <span class="keyword">def </span><a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ae1e8400d54ec1b75fdc514cd1609120f">visit_Return</a>(self, node: ast.Return) -> List[ast.stmt]:</div>
|
||||
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="stringliteral">"""</span></div>
|
||||
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span><span class="stringliteral"> Transform return statements into state transitions that terminate the function.</span></div>
|
||||
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span><span class="stringliteral"> """</span></div>
|
||||
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="comment"># Evaluate return value if present, then exit the state machine</span></div>
|
||||
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keywordflow">if</span> node.value:</div>
|
||||
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> return_stmt = ast.Return(value=self.visit(node.value))</div>
|
||||
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> exit_stmt = ast.Assign(</div>
|
||||
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> value=ast.Constant(value=-1, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> )</div>
|
||||
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> </div>
|
||||
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"return_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="stringliteral">"has_value"</span>: <span class="keyword">True</span></div>
|
||||
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> })</div>
|
||||
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
|
||||
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="keywordflow">return</span> [return_stmt, exit_stmt]</div>
|
||||
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <span class="keywordflow">else</span>:</div>
|
||||
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> <span class="comment"># No return value</span></div>
|
||||
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">if</span> self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">debug_mode</a>:</div>
|
||||
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> self.<a class="code hl_function" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">log_debug</a>(<span class="stringliteral">"return_transformation"</span>, {</div>
|
||||
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="stringliteral">"has_value"</span>: <span class="keyword">False</span></div>
|
||||
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> })</div>
|
||||
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> </div>
|
||||
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> <span class="keywordflow">return</span> [</div>
|
||||
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> ast.Return(value=<span class="keywordtype">None</span>),</div>
|
||||
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> ast.Assign(</div>
|
||||
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> targets=[ast.Name(id=self.<a class="code hl_variable" href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">state_var_name</a>, ctx=ast.Store())],</div>
|
||||
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> value=ast.Constant(value=-1, kind=<span class="keywordtype">None</span>)</div>
|
||||
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> )</div>
|
||||
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> ]</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html">transformers.control_flow.ControlFlowFlattener</a></div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00016">control_flow.py:16</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a08a538261912ba3c8ec059dd8f528732"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a08a538261912ba3c8ec059dd8f528732">transformers.control_flow.ControlFlowFlattener.__init__</a></div><div class="ttdeci">__init__(self, debug_mode=False)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00022">control_flow.py:22</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a0af6bdcc5f0423e92bbaff8f11134ee9"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a0af6bdcc5f0423e92bbaff8f11134ee9">transformers.control_flow.ControlFlowFlattener.visit_Break</a></div><div class="ttdeci">ast.Assign visit_Break(self, ast.Break node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00424">control_flow.py:424</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a336fefe281452a4cefb0017de41f6cb5"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a336fefe281452a4cefb0017de41f6cb5">transformers.control_flow.ControlFlowFlattener.visit_For</a></div><div class="ttdeci">List[ast.stmt] visit_For(self, ast.For node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00259">control_flow.py:259</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a3f96cc0e595090bd445525dacc81a52e"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a3f96cc0e595090bd445525dacc81a52e">transformers.control_flow.ControlFlowFlattener.visit_Continue</a></div><div class="ttdeci">ast.Assign visit_Continue(self, ast.Continue node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00442">control_flow.py:442</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a451d4b05a74909802cbde2220cf9a013"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a451d4b05a74909802cbde2220cf9a013">transformers.control_flow.ControlFlowFlattener.debug_data</a></div><div class="ttdeci">debug_data</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00030">control_flow.py:30</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a4c787cc400a0a7ab154c09388e016946"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a4c787cc400a0a7ab154c09388e016946">transformers.control_flow.ControlFlowFlattener.generate_junk_code</a></div><div class="ttdeci">List[ast.stmt] generate_junk_code(self)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00178">control_flow.py:178</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a53e89d0d92bb71c22e2721272c27c35c"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a53e89d0d92bb71c22e2721272c27c35c">transformers.control_flow.ControlFlowFlattener.log_debug</a></div><div class="ttdeci">log_debug(self, str category, Any data)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00036">control_flow.py:36</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a58c53389a3591f693045f05e6aff79ab"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a58c53389a3591f693045f05e6aff79ab">transformers.control_flow.ControlFlowFlattener.states</a></div><div class="ttdeci">states</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00024">control_flow.py:24</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a703ccda2bc9fbe6c10ca4070a0e6940d"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a703ccda2bc9fbe6c10ca4070a0e6940d">transformers.control_flow.ControlFlowFlattener.current_block_id</a></div><div class="ttdeci">current_block_id</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00025">control_flow.py:25</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a708096f6acd688fa597f7695d9eea010"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a708096f6acd688fa597f7695d9eea010">transformers.control_flow.ControlFlowFlattener.visit_FunctionDef</a></div><div class="ttdeci">ast.FunctionDef visit_FunctionDef(self, ast.FunctionDef node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00044">control_flow.py:44</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_a8113e193915bc1952bc25d039693e38a"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#a8113e193915bc1952bc25d039693e38a">transformers.control_flow.ControlFlowFlattener.debug_mode</a></div><div class="ttdeci">debug_mode</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00026">control_flow.py:26</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_ac394afa0ffcadb438bf3419375480ba8"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ac394afa0ffcadb438bf3419375480ba8">transformers.control_flow.ControlFlowFlattener.visit_If</a></div><div class="ttdeci">ast.stmt visit_If(self, ast.If node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00222">control_flow.py:222</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_ae1e8400d54ec1b75fdc514cd1609120f"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#ae1e8400d54ec1b75fdc514cd1609120f">transformers.control_flow.ControlFlowFlattener.visit_Return</a></div><div class="ttdeci">List[ast.stmt] visit_Return(self, ast.Return node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00463">control_flow.py:463</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_aed99b58ddd8e19899955f356323d7a71"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aed99b58ddd8e19899955f356323d7a71">transformers.control_flow.ControlFlowFlattener.visit_While</a></div><div class="ttdeci">List[ast.stmt] visit_While(self, ast.While node)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00365">control_flow.py:365</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_aee799638015280dec91b61e46efc6a95"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#aee799638015280dec91b61e46efc6a95">transformers.control_flow.ControlFlowFlattener.state_var_name</a></div><div class="ttdeci">state_var_name</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00023">control_flow.py:23</a></div></div>
|
||||
<div class="ttc" id="aclasstransformers_1_1control__flow_1_1ControlFlowFlattener_html_af8cf7ecbaf8d1fdc4127dfecca51c022"><div class="ttname"><a href="classtransformers_1_1control__flow_1_1ControlFlowFlattener.html#af8cf7ecbaf8d1fdc4127dfecca51c022">transformers.control_flow.ControlFlowFlattener.flatten_blocks</a></div><div class="ttdeci">List[ast.stmt] flatten_blocks(self)</div><div class="ttdef"><b>Definition</b> <a href="control__flow_8py_source.html#l00084">control_flow.py:84</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li><li class="navelem"><a class="el" href="control__flow_8py.html">control_flow.py</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,124 @@
|
||||
<!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" lang="en-US">
|
||||
<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.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>OMG-Fuscator: transformers Directory Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="resize.js"></script>
|
||||
<script type="text/javascript" src="navtreedata.js"></script>
|
||||
<script type="text/javascript" src="navtree.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="projectalign">
|
||||
<div id="projectname">OMG-Fuscator
|
||||
</div>
|
||||
<div id="projectbrief">Advanced Python obfuscator (renaming, string encryption, control-flow flattening)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
<div id="nav-tree">
|
||||
<div id="nav-tree-contents">
|
||||
<div id="nav-sync" class="sync"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="splitbar" style="-moz-user-select:none;"
|
||||
class="ui-resizable-handle">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('dir_33a1d53dde8f74081d79f81ccfb4e6df.html',''); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="doc-content">
|
||||
<!-- 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">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">transformers Directory Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
|
||||
Files</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="transformers_2____init_____8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="transformers_2____init_____8py.html">__init__.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="attribute__transformer_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="attribute__transformer_8py.html">attribute_transformer.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="class__analyzer_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class__analyzer_8py.html">class_analyzer.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="class__mapper_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class__mapper_8py.html">class_mapper.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="control__flow_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="control__flow_8py.html">control_flow.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="rename_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="rename_8py.html">rename.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="symbol__tree_8py_source.html"><span class="icondoc"></span></a> </td><td class="memItemRight" valign="bottom"><a class="el" href="symbol__tree_8py.html">symbol_tree.py</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_33a1d53dde8f74081d79f81ccfb4e6df.html">transformers</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
var dir_33a1d53dde8f74081d79f81ccfb4e6df =
|
||||
[
|
||||
[ "__init__.py", "transformers_2____init_____8py.html", null ],
|
||||
[ "attribute_transformer.py", "attribute__transformer_8py.html", "attribute__transformer_8py" ],
|
||||
[ "class_analyzer.py", "class__analyzer_8py.html", "class__analyzer_8py" ],
|
||||
[ "class_mapper.py", "class__mapper_8py.html", "class__mapper_8py" ],
|
||||
[ "control_flow.py", "control__flow_8py.html", "control__flow_8py" ],
|
||||
[ "rename.py", "rename_8py.html", "rename_8py" ],
|
||||
[ "symbol_tree.py", "symbol__tree_8py.html", "symbol__tree_8py" ]
|
||||
];
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user