public StringBuilderGenerator AppendCounter() { var generator = new FuncGenerator <long, string>(0, val => ++ val, val => val.ToString()); builders.Add(generator.GetRandomValue); return(this); }
private FuncGenerator <int> GetGenerator(PropertyInfo propertyInfo, int startingValue) { if (!counters.ContainsKey(propertyInfo)) { counters[propertyInfo] = new FuncGenerator <int>(startingValue, val => ++ val); } return(counters[propertyInfo]); }
public GeneratorOptions <T> For <TProperty>( Expression <Func <T, TProperty> > propertyExpression, TProperty seed, Func <TProperty, TProperty> valueFunc) { var generator = new FuncGenerator <TProperty>(seed, valueFunc); AddConvention(propertyExpression, () => generator.GetRandomValue()); return(this); }
public static int GenericMethod<T>(T input) { //How can I get the current memory address var subjectAddress = GetAddress(nameof(Sample.SubjectMethod)); var holderAddress = GetEipEspEbpEsiEdiEbxHolder(); var captureRegisters = FuncGenerator.Generate<Action<int>, ActionInt>( new byte[0].Concat(new byte[] { 0xE8, 0x1C, 0x00, 0x00, 0x00 // call 28 }) .Concat(new byte[] { // save EIP, ESP, EBP, ESI, EDI to temp array 0x83, 0xC0, 0x1B, // add eax,0x1B (27 bytes) 0x89, 0x02, // mov DWORD PTR [edx],eax 0x89, 0x62, 0x04, // mov DWORD PTR [edx+0x4],esp 0x89, 0x6A, 0x08, // mov DWORD PTR [edx+0x8],ebp 0x89, 0x72, 0x0C, // mov DWORD PTR [edx+0xc],esi 0x89, 0x7A, 0x10, // mov DWORD PTR [edx+0x10],edi 0x89, 0x5A, 0x14, // mov DWORD PTR [edx+0x14],ebx }) .Concat(new byte[] { 0xB8, // mov eax }) .Concat(subjectAddress) .Concat(new byte[] { 0xFF, 0xD0 // call eax }) .Concat(new byte[] { 0xC3 //retn }) .Concat(new byte[] { // Helper function for getting EIP as it is inaccessible directly on x86_32 0x8B, 0x04, 0x24, // mov eax,DWORD PTR [esp] 0xC3 //retn }) .ToArray() ); captureRegisters(holderAddress); Console.WriteLine($"EIP = { EipEspEbpEsiEdiEbxHolder[0].ToString("X") }"); return 5; }
public GeneratorOptions <T> AppendCounter(Expression <Func <T, string> > propertyExpression, Func <string> prefix) { var generator = new FuncGenerator <long, string>(0, val => ++ val, val => val.ToString()); return(For(propertyExpression, () => prefix() + generator.GetRandomValue())); }
public GeneratorOptions <T> Counter(Expression <Func <T, long> > propertyExpression, long startingValue, long step) { var generator = new FuncGenerator <long>(startingValue - step, val => val + step); return(For(propertyExpression, generator)); }
public GeneratorOptions <T> Counter(Expression <Func <T, long> > propertyExpression) { var generator = new FuncGenerator <long>(0, val => ++ val); return(For(propertyExpression, generator)); }
public GeneratorOptions <T> Counter(Expression <Func <T, int> > propertyExpression, int startingValue) { var generator = new FuncGenerator <int>(startingValue - 1, val => ++ val); return(For(propertyExpression, generator)); }
public void Counter(Expression <Func <T, long> > propertyExpression, long startingValue, long step) { var generator = new FuncGenerator <long>(startingValue - step, val => val = val + step); For(propertyExpression, generator); }
public void Counter(Expression <Func <T, long> > propertyExpression, long startingValue) { var generator = new FuncGenerator <long>(startingValue - 1, val => ++ val); For(propertyExpression, generator); }
public void Counter(Expression <Func <T, long> > propertyExpression) { var generator = new FuncGenerator <long>(0, val => ++ val); For(propertyExpression, generator); }
private IEnumerable <MemberDeclarationSyntax> OutputProgramMembers() { if (Options.EnableChecksumming) { yield return (FieldDeclaration( VariableDeclaration( ParseTypeName("Fuzzlyn.Execution.IRuntime"), SingletonSeparatedList( VariableDeclarator("s_rt")))) .WithModifiers(TokenList(Token(SyntaxKind.StaticKeyword)))); } foreach (FieldDeclarationSyntax stat in Statics.OutputStatics()) { yield return(stat); } List <MethodDeclarationSyntax> methods = Methods.OutputMethods().ToList(); ParameterListSyntax parameters = ParameterList(); if (Options.EnableChecksumming) { parameters = ParameterList( SingletonSeparatedList( Parameter(Identifier("rt")) .WithType(ParseTypeName("Fuzzlyn.Execution.IRuntime")))); } yield return (MethodDeclaration( PredefinedType(Token(SyntaxKind.VoidKeyword)), "Main") .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.StaticKeyword))) .WithParameterList(parameters) .WithBody(Block(GenMainStatements()))); foreach (MethodDeclarationSyntax method in methods) { yield return(method); } IEnumerable <StatementSyntax> GenMainStatements() { if (Options.EnableChecksumming) { yield return (ExpressionStatement( AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, IdentifierName("s_rt"), IdentifierName("rt")))); } yield return (ExpressionStatement( InvocationExpression( IdentifierName(methods[0].Identifier)))); if (Options.EnableChecksumming) { IEnumerable <StatementSyntax> staticChecksums = FuncGenerator.GenChecksumming(Statics.Fields.Select(s => s.Var), GenerateChecksumSiteId); foreach (StatementSyntax checksumStatement in staticChecksums) { yield return(checksumStatement); } } } }