Exemplo n.º 1
0
		public void Setup()
		{
            this.sc = new ServiceContainer();
            sc.AddService<IFileSystemService>(new FileSystemServiceImpl());
            this.arch = new X86ArchitectureReal();
            this.platform = new MsdosPlatform(sc, arch);

            ArgumentSerializer argSer = new ArgumentSerializer(arch);

            svc = new SerializedService
            {
                Name = "msdos_ioctl_get_device_info",
                SyscallInfo = new SerializedSyscallInfo
                {
                    Vector = "21",
                    RegisterValues = new[] {
                        new SerializedRegValue("ah", "44"),
                        new SerializedRegValue("al", "00"),
                    }
                },
                Signature = new SerializedSignature
                {
                    ReturnValue = argSer.Serialize(
                        new Identifier("C", PrimitiveType.Bool,
                        new FlagGroupStorage(Registers.eflags, (uint)FlagM.CF, "C", PrimitiveType.Byte)))
                }
            };
		}
Exemplo n.º 2
0
 public SerializedSignature Serialize(ProcedureSignature sig)
 {
     SerializedSignature ssig = new SerializedSignature();
     if (!sig.ParametersValid)
         return ssig;
     ArgumentSerializer argSer = new ArgumentSerializer(this, Architecture, null, null);
     ssig.ReturnValue = argSer.Serialize(sig.ReturnValue);
     ssig.Arguments = new Argument_v1[sig.Parameters.Length];
     for (int i = 0; i < sig.Parameters.Length; ++i)
     {
         Identifier formal = sig.Parameters[i];
         ssig.Arguments[i] = argSer.Serialize(formal);
     }
     ssig.StackDelta = sig.StackDelta;
     ssig.FpuStackDelta = sig.FpuStackDelta;
     return ssig;
 }
Exemplo n.º 3
0
        public virtual SerializedSignature Serialize(ProcedureSignature sig)
        {
            SerializedSignature ssig = new SerializedSignature();

            if (!sig.ParametersValid)
            {
                return(ssig);
            }
            ArgumentSerializer argSer = new ArgumentSerializer(this, Architecture, null, 0);

            ssig.ReturnValue = argSer.Serialize(sig.ReturnValue);
            ssig.Arguments   = new Argument_v1[sig.Parameters.Length];
            for (int i = 0; i < sig.Parameters.Length; ++i)
            {
                Identifier formal = sig.Parameters[i];
                ssig.Arguments[i] = argSer.Serialize(formal);
            }
            ssig.StackDelta    = sig.StackDelta;
            ssig.FpuStackDelta = sig.FpuStackDelta;
            return(ssig);
        }
Exemplo n.º 4
0
        public SerializedSignature Serialize(FunctionType sig)
        {
            SerializedSignature ssig = new SerializedSignature();

            if (!sig.ParametersValid)
            {
                ssig.ParametersValid = false;
                return(ssig);
            }
            ArgumentSerializer argSer = new ArgumentSerializer(Architecture);

            ssig.ReturnValue = argSer.Serialize(sig.ReturnValue);
            ssig.Arguments   = new Argument_v1[sig.Parameters.Length];
            for (int i = 0; i < sig.Parameters.Length; ++i)
            {
                Identifier formal = sig.Parameters[i];
                ssig.Arguments[i] = argSer.Serialize(formal);
            }
            ssig.StackDelta    = sig.StackDelta;
            ssig.FpuStackDelta = sig.FpuStackDelta;
            return(ssig);
        }
Exemplo n.º 5
0
		public void Setup()
		{
			svc = new SerializedService();
			svc.Name = "msdos_ioctl_get_device_info";
			svc.SyscallInfo = new SerializedSyscallInfo();
			svc.SyscallInfo.Vector = "21";
			svc.SyscallInfo.RegisterValues = new SerializedRegValue[2];
			svc.SyscallInfo.RegisterValues[0] = new SerializedRegValue("ah", "44");
			svc.SyscallInfo.RegisterValues[1] = new SerializedRegValue("al", "00");
			svc.Signature = new SerializedSignature();
            ArgumentSerializer argSer = new ArgumentSerializer(null, arch, null, null);
            svc.Signature.ReturnValue = argSer.Serialize(new Identifier("C", PrimitiveType.Bool, 
                new FlagGroupStorage((uint) FlagM.CF, "C", PrimitiveType.Byte)));
		}