public string changeMethodNamesInClass(string sourceCode) { string obfuscatedSourceCode = sourceCode; foreach (string methodName in methodNames) { string generatedName = RandomUtils.generateRandomString(RandomUtils.GenerateLittleInt()); obfuscatedSourceCode = Regex.Replace(obfuscatedSourceCode, @"(\W)(" + methodName + @")(\W)", "$1" + generatedName + "$3"); } return(obfuscatedSourceCode); }
public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax node) { if (!node.Identifier.ValueText.Equals("Main")) { methodNames.Add(node.Identifier.ValueText); string source = node.ToFullString(); foreach (ParameterSyntax parameter in node.ParameterList.Parameters) { string generatedName = RandomUtils.generateRandomString(RandomUtils.GenerateLittleInt()); source = Regex.Replace(source, @"(\W)(" + parameter.Identifier.ValueText + @")(\W)", "$1" + generatedName + "$3"); } foreach (StatementSyntax statement in node.Body.Statements) { if (statement.Kind().Equals(SyntaxKind.LocalDeclarationStatement)) { foreach (VariableDeclaratorSyntax variable in ((LocalDeclarationStatementSyntax)statement).Declaration.Variables) { string generatedName = RandomUtils.generateRandomString(RandomUtils.GenerateLittleInt()); source = Regex.Replace(source, @"(\W)(" + variable.Identifier.ValueText + @")(\W)", "$1" + generatedName + "$3"); } } } var method = (MethodDeclarationSyntax)SyntaxFactory.ParseMemberDeclaration(source); return(base.VisitMethodDeclaration(method)); } else { string source = node.ToFullString(); foreach (StatementSyntax statement in node.Body.Statements) { if (statement.Kind().Equals(SyntaxKind.LocalDeclarationStatement)) { foreach (VariableDeclaratorSyntax variable in ((LocalDeclarationStatementSyntax)statement).Declaration.Variables) { string generatedName = RandomUtils.generateRandomString(RandomUtils.GenerateLittleInt()); source = Regex.Replace(source, @"(\W)(" + variable.Identifier.ValueText + @")(\W)", "$1" + generatedName + "$3"); } } } var method = (MethodDeclarationSyntax)SyntaxFactory.ParseMemberDeclaration(source); return(base.VisitMethodDeclaration(method)); } }
public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax node) { SyntaxList <StatementSyntax> blockWithNewStatements = node.Body.Statements; for (int i = 0; i < RandomUtils.GenerateLittleInt(); i++) { blockWithNewStatements = blockWithNewStatements.Insert(0, StatementGenerator.GenerateSingleStatement()); } BlockSyntax newBlock = SyntaxFactory.Block(blockWithNewStatements); MethodDeclarationSyntax newMethod2 = node.WithBody(newBlock); var newNode = node.ReplaceNode(node, newMethod2); return(base.VisitMethodDeclaration(newNode)); }
private String BreakIntoNumbers(String number) { long numAsInt = long.Parse(number); int randomNumber = RandomUtils.GenerateLittleInt(); Random random = new Random(); switch (random.Next(0, 4)) { case 0: { if (random.Next(0, 4) == 0) { return("( " + BreakIntoNumbers((numAsInt - randomNumber).ToString()) + " + " + BreakIntoNumbers((randomNumber).ToString()) + " )"); } else { return("( " + (numAsInt - randomNumber) + " + " + (randomNumber) + " )"); } } case 1: { if (random.Next(0, 4) == 0) { return("( " + BreakIntoNumbers((numAsInt + randomNumber).ToString()) + " - " + BreakIntoNumbers((randomNumber).ToString()) + " )"); } else { return("( " + (numAsInt + randomNumber) + " - " + (randomNumber) + " )"); } } case 2: { List <long> dividers = new List <long>(); long divider = Math.Abs(numAsInt) - 1; while (divider > 0) { if (numAsInt % divider == 0) { dividers.Add(divider); } divider--; } divider = (dividers.Count == 0) ? Math.Abs(numAsInt) : dividers[random.Next(0, dividers.Count)]; if (divider == 0) { return(BreakIntoNumbers(number)); } if (random.Next(0, 4) == 0) { return("( " + BreakIntoNumbers((numAsInt / divider).ToString()) + " * " + BreakIntoNumbers((divider).ToString()) + " )"); } else { return("( " + (numAsInt / divider) + " * " + (divider) + " )"); } } case 3: { if (random.Next(0, 4) == 0) { return("( " + BreakIntoNumbers((numAsInt * randomNumber).ToString()) + " / " + BreakIntoNumbers((randomNumber).ToString()) + " )"); } else { return("( " + (numAsInt * randomNumber) + " / " + (randomNumber) + " )"); } } default: return(number); } }