#include <Obfuscator.h>
Definition at line 35 of file Obfuscator.h.
Public Member Functions | |
virtual | ~RenameClass () |
virtual void | operator() (tree< AstNode > &, MapClasses *classes=0, MapVariables *vars=0, MapFunctions *func=0) |
virtual RenameClass::~RenameClass | ( | ) | [inline, virtual] |
void RenameClass::operator() | ( | tree< AstNode > & | tr, | |
MapClasses * | classes = 0 , |
|||
MapVariables * | vars = 0 , |
|||
MapFunctions * | func = 0 | |||
) | [virtual] |
Implements Obfuscator.
Definition at line 198 of file Obfuscator.cpp.
References tree< T, tree_node_allocator >::begin(), tree< T, tree_node_allocator >::end(), generateName(), and tree< T, tree_node_allocator >::parent().
00198 { 00199 // for every names in the class, generate a new *unique* name 00200 map<string, string> classNames; 00201 for (MapClasses::iterator iter = classes->begin(); iter != classes->end(); ++iter) 00202 { 00203 string newName = generateName(); 00204 classNames.insert(make_pair(iter->first, newName)); 00205 } 00206 map<string, string>::iterator cter; 00207 tree<AstNode>::iterator parent; 00208 for (tree<AstNode>::iterator iter=tr.begin(); iter!=tr.end(); ++iter) 00209 { 00210 parent = tr.parent(iter); 00211 if (iter->getType() == "text" 00212 && parent->getType() == "T_STRING" 00213 && (tr.parent(parent)->getType() == "unticked_class_declaration_statement" 00214 || tr.parent(parent)->getType() == "function_call" // constructor 00215 || tr.parent(parent)->getType() == "class_name_reference" 00216 || tr.parent(parent)->getType() == "fully_qualified_class_name" 00217 ) 00218 && ((cter=classNames.find(iter->getValue())) != classNames.end())) { 00219 // rename the currenet node 00220 iter->setValue(cter->second); 00221 } 00222 } 00223 }