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))) } }; }
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; }
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); }
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); }
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))); }