public void Tlldr_LoadGlobalByOrdinal() { var typelib = new TypeLibrary(); platform = mr.Stub <IPlatform>(); platform.Stub(p => p.DefaultCallingConvention).Return("__cdecl"); platform.Stub(p => p.Architecture).Return(new FakeArchitecture()); platform.Replay(); var tlldr = new TypeLibraryDeserializer(platform, true, typelib); tlldr.Load(new SerializedLibrary { ModuleName = "stdlib", Globals = new List <GlobalVariable_v1> { new GlobalVariable_v1 { Name = "errno", Ordinal = 42, Type = PrimitiveType_v1.Int32(), } } }); var stdlib = typelib.Modules["stdlib"]; var globalByName = stdlib.GlobalsByName["errno"]; var globalByOrdinal = stdlib.GlobalsByOrdinal[42]; Assert.AreSame(globalByName, globalByOrdinal); }
private void Given_ArchitectureStub() { arch = mr.DynamicMock <IProcessorArchitecture>(); platform = mr.DynamicMock <IPlatform>(); platform.Stub(p => p.PointerType).Return(PrimitiveType.Pointer32); this.procSer = mr.StrictMock <ProcedureSerializer>(null, null, null); platform.Stub(p => p.CreateProcedureSerializer(null, null)).IgnoreArguments().Return(procSer); platform.Stub(p => p.Architecture).Return(arch); }
private void Given_ArchitectureStub() { arch = mr.DynamicMock<IProcessorArchitecture>(); platform = mr.DynamicMock<IPlatform>(); platform.Stub(p => p.PointerType).Return(PrimitiveType.Pointer32); this.procSer = mr.StrictMock<ProcedureSerializer>(null, null, null); platform.Stub(p => p.CreateProcedureSerializer(null, null)).IgnoreArguments().Return(procSer); platform.Stub(p => p.Architecture).Return(arch); }
private void Given_ArchitectureStub() { arch = mr.DynamicMock <IProcessorArchitecture>(); arch.Stub(a => a.PointerType).Return(PrimitiveType.Ptr32); arch.Stub(a => a.WordWidth).Return(PrimitiveType.Ptr32); platform = mr.DynamicMock <IPlatform>(); platform.Stub(p => p.PointerType).Return(PrimitiveType.Ptr32); platform.Stub(p => p.Architecture).Return(arch); platform.Replay(); this.procSer = new ProcedureSerializer(platform, null, ""); }
private void Given_Platform() { platform = mr.Stub <IPlatform>(); platform.Stub(p => p.LookupProcedureByName("", "")).IgnoreArguments() .Return(new ExternalProcedure("", new FunctionType())); platform.Replay(); }
public void Impres_VtblFromMsMangledName() { var proj = new Project(); var impres = new ImportResolver(proj, program, new FakeDecompilerEventListener()); platform.Stub(p => p.ResolveImportByName(null, null)). IgnoreArguments().Return(null); SerializedType nullType = null; platform.Stub(p => p.DataTypeFromImportName("??_7Scope@@6B@")). Return(Tuple.Create("`vftable'", nullType, nullType)); var id = impres.ResolveImport("foo", "??_7Scope@@6B@", platform); Assert.AreEqual("`vftable'", id.ToString()); Assert.IsInstanceOf <UnknownType>(id.DataType); }
public void SudLoadProgramOptions() { var sProject = new Project_v4 { ArchitectureName = "testArch", PlatformName = "testOS", Inputs = { new DecompilerInput_v4 { User = new UserData_v4 { Heuristics ={ new Heuristic_v3 { Name = "HeuristicScanning" } }, TextEncoding = "windows-1251", Calls = { new SerializedCall_v1 { InstructionAddress = "0041230", NoReturn = true, } } } } } }; Given_Architecture(); Given_TestOS_Platform(); platform.Stub(p => p.TryParseAddress( Arg <string> .Is.Equal("0041230"), out Arg <Address> .Out(Address.Ptr32(0x0041230)).Dummy)).Return(true); var loader = mr.Stub <ILoader>(); loader.Stub(l => l.LoadImageBytes(null, 0)) .IgnoreArguments() .Return(new byte[10]); loader.Stub(l => l.LoadExecutable(null, null, null)) .IgnoreArguments() .Return(new Program { Platform = this.platform, }); mr.ReplayAll(); var ploader = new ProjectLoader(sc, loader); var project = ploader.LoadProject("c:\\tmp\\foo\\bar.proj", sProject); Assert.IsTrue(project.Programs[0].User.Heuristics.Contains("HeuristicScanning")); Assert.AreEqual("windows-1251", project.Programs[0].User.TextEncoding.WebName); }
public void Setup() { this.mr = new MockRepository(); this.scanner = mr.StrictMock <IScanner>(); this.arch = mr.StrictMock <IProcessorArchitecture>(); this.platform = mr.StrictMock <IPlatform>(); arch.Stub(a => a.CreateImageReader(null, null)) .IgnoreArguments() .Do(new Func <MemoryArea, Address, ImageReader>((i, a) => new LeImageReader(i, a))); platform.Stub(p => p.Architecture).Return(arch); scanner.Stub(s => s.Error(null, null)) .IgnoreArguments() .Do(new Action <Address, string>((a, s) => { Assert.Fail(string.Format("{0}: {1}", a, s)); })); }
public void Setup() { mr = new MockRepository(); programHeaders = new List<Elf64_PHdr>(); sections = new List<ElfSection>(); platform = mr.Stub<IPlatform>(); this.sc = new ServiceContainer(); var cfgSvc = mr.Stub<IConfigurationService>(); var arch = mr.Stub<IProcessorArchitecture>(); platform.Stub(p => p.MakeAddressFromLinear(0)) .IgnoreArguments() .Do(new Func<ulong, Address>(u => Address.Ptr64(u))); cfgSvc.Stub(c => c.GetArchitecture("x86-protected-64")).Return(arch); sc.AddService<IConfigurationService>(cfgSvc); }
public void Setup() { mr = new MockRepository(); programHeaders = new List <Elf64_PHdr>(); sections = new List <ElfSection>(); platform = mr.Stub <IPlatform>(); this.sc = new ServiceContainer(); var cfgSvc = mr.Stub <IConfigurationService>(); var arch = mr.Stub <IProcessorArchitecture>(); platform.Stub(p => p.MakeAddressFromLinear(0)) .IgnoreArguments() .Do(new Func <ulong, Address>(u => Address.Ptr64(u))); cfgSvc.Stub(c => c.GetArchitecture("x86-protected-64")).Return(arch); sc.AddService <IConfigurationService>(cfgSvc); }
private void Given_Platform() { platform = mr.Stub<IPlatform>(); platform.Stub(p => p.LookupProcedureByName("", "")).IgnoreArguments().Return(new ExternalProcedure("", null)); platform.Replay(); }
private void Expect_TryParseAddress(string sAddr, Address addr) { platform.Stub(p => p.TryParseAddress( Arg <string> .Is.Equal(sAddr), out Arg <Address> .Out(addr).Dummy)).Return(true); }
private void Expect_LoadOptions() { platform.Stub(p => p.LoadUserOptions(null)) .IgnoreArguments() .Do(new Action <Dictionary <string, object> >(options => { this.loadedOptions = options; })); }
public IPlatform CreatePlatform() { if (platform != null) { return(platform); } platform = mr.Stub <IPlatform>(); platform.Stub(p => p.Name).Return("TestPlatform"); platform.Stub(p => p.PointerType).Return(PrimitiveType.Ptr32); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Char)).Return(1); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Short)).Return(2); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Long)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongLong)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Float)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Double)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongDouble)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int64)).Return(8); platform.Stub(p => p.CreateMetadata()).Do(new Func <TypeLibrary>(() => this.platformMetadata.Clone())); var arch = new X86ArchitectureFlat32("x86-protected-32"); platform.Stub(p => p.Architecture).Return(arch); platform.Stub(p => p.DefaultCallingConvention).Return("__cdecl"); var ccStdcall = new X86CallingConvention(4, 4, 4, false, false); var ccCdecl = new X86CallingConvention(4, 4, 4, true, false); platform.Stub(p => p.GetCallingConvention(null)).Return(ccCdecl); platform.Stub(p => p.GetCallingConvention("__stdcall")).Return(ccStdcall); platform.Stub(p => p.SaveUserOptions()).Return(null); platform.Replay(); return(platform); }
public IPlatform CreatePlatform() { if (platform != null) { return(platform); } platform = mr.Stub <IPlatform>(); platform.Stub(p => p.Name).Return("TestPlatform"); platform.Stub(p => p.PointerType).Return(PrimitiveType.Pointer32); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Char)).Return(1); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Short)).Return(2); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Long)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongLong)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Float)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Double)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongDouble)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int64)).Return(8); platform.Stub(p => p.CreateMetadata()).Do(new Func <TypeLibrary>(() => this.platformMetadata.Clone())); var arch = new X86ArchitectureFlat32(); platform.Stub(p => p.Architecture).Return(arch); platform.Stub(p => p.DefaultCallingConvention).Return("__cdecl"); platform.Stub(s => s.CreateProcedureSerializer(null, null)).IgnoreArguments().Do( new Func <ISerializedTypeVisitor <DataType>, string, ProcedureSerializer>((tlDeser, dc) => new X86ProcedureSerializer(arch, tlDeser, dc) ) ); platform.Stub(p => p.SaveUserOptions()).Return(null); platform.Replay(); return(platform); }
public IPlatform CreatePlatform() { if (platform != null) return platform; platform = mr.Stub<IPlatform>(); platform.Stub(p => p.Name).Return("TestPlatform"); platform.Stub(p => p.PointerType).Return(PrimitiveType.Pointer32); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Char)).Return(1); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Short)).Return(2); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Long)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongLong)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Float)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Double)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongDouble)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int64)).Return(8); platform.Stub(p => p.CreateMetadata()).Do(new Func<TypeLibrary>(() => this.platformMetadata.Clone())); var arch = new X86ArchitectureFlat32(); platform.Stub(p => p.Architecture).Return(arch); platform.Stub(p => p.DefaultCallingConvention).Return("__cdecl"); platform.Stub(s => s.CreateProcedureSerializer(null, null)).IgnoreArguments().Do( new Func<ISerializedTypeVisitor<DataType>, string, ProcedureSerializer>((tlDeser, dc) => new X86ProcedureSerializer(arch, tlDeser, dc) ) ); platform.Stub(p => p.SaveUserOptions()).Return(null); platform.Replay(); return platform; }
private void Given_Msdos_ish_platform() { this.platform = mr.Stub<IPlatform>(); platform.Stub(p => p.GetPrimitiveTypeName(PrimitiveType.Int16, "C")).Return("int"); platform.Stub(p => p.GetPrimitiveTypeName(PrimitiveType.Int32, "C")).Return("long"); }
private void Given_Msdos_ish_platform() { this.platform = mr.Stub <IPlatform>(); platform.Stub(p => p.GetPrimitiveTypeName(PrimitiveType.Int16, "C")).Return("int"); platform.Stub(p => p.GetPrimitiveTypeName(PrimitiveType.Int32, "C")).Return("long"); }
private void Given_Pointers(Address[] addresses) { platform.Stub(s => s.CreatePointerScanner(null, null, null, PointerScannerFlags.All)) .IgnoreArguments() .Return(addresses); }