#include <Obfuscator.h>
Definition at line 42 of file Obfuscator.h.
Public Member Functions | |
virtual | ~RenameFunction () |
virtual void | operator() (tree< AstNode > &, MapClasses *classes=0, MapVariables *vars=0, MapFunctions *func=0) |
virtual RenameFunction::~RenameFunction | ( | ) | [inline, virtual] |
void RenameFunction::operator() | ( | tree< AstNode > & | tr, | |
MapClasses * | classes = 0 , |
|||
MapVariables * | vars = 0 , |
|||
MapFunctions * | func = 0 | |||
) | [virtual] |
Implements Obfuscator.
Definition at line 226 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().
00226 { 00227 // for every names in the class, generate a new *unique* name 00228 map<string, string> funcNames; 00229 for (MapFunctions::iterator iter = func->begin(); iter != func->end(); ++iter) 00230 { 00231 string newName = generateName(); 00232 funcNames.insert(make_pair(iter->first, newName)); 00233 } 00234 map<string, string>::iterator cter; 00235 tree<AstNode>::iterator parent; 00236 for (tree<AstNode>::iterator iter=tr.begin(); iter!=tr.end(); ++iter) 00237 { 00238 parent = tr.parent(iter); 00239 if (iter->getType() == "text" 00240 && parent->getType() == "T_STRING" 00241 && (tr.parent(parent)->getType() == "unticked_function_declaration_statement" 00242 || tr.parent(parent)->getType() == "function_call") 00243 && ((cter=funcNames.find(iter->getValue())) != funcNames.end())) { 00244 // rename the currenet node 00245 iter->setValue(cter->second); 00246 } 00247 } 00248 }