public StringBuilderGenerator AppendCounter()
        {
            var generator = new FuncGenerator <long, string>(0, val => ++ val, val => val.ToString());

            builders.Add(generator.GetRandomValue);
            return(this);
        }
Exemplo n.º 2
0
 private FuncGenerator <int> GetGenerator(PropertyInfo propertyInfo, int startingValue)
 {
     if (!counters.ContainsKey(propertyInfo))
     {
         counters[propertyInfo] = new FuncGenerator <int>(startingValue, val => ++ val);
     }
     return(counters[propertyInfo]);
 }
Exemplo n.º 3
0
        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;
		}
Exemplo n.º 5
0
        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()));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        public GeneratorOptions <T> Counter(Expression <Func <T, long> > propertyExpression)
        {
            var generator = new FuncGenerator <long>(0, val => ++ val);

            return(For(propertyExpression, generator));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 12
0
        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);
                    }
                }
            }
        }